Утечка токена для полного доступа к GitHub-репозиториям проекта Python
Исследователи из компании JFrog обнаружили в составе Docker-образа "cabotage-app" токен, предоставляющий доступ с правами администратора к репозиториям Python, PyPI и Python Software Foundation на GitHub. Токен был найден в бинарном файле "__pycache__/build.cpython-311.pyc" с прокэшированным скомпилированным байткодом. https://honk.any-key.press/d/s2f47322qsCS133G76.pngПо сообщению представителей репозитория PyPI токен был создан в 2023 году для разработчика ewdurbin (Ee Durbin), который занимает в организации Python Software Foundation пост директора по инфраструктуре. Токен предоставлял доступ с правами администратора ко всем репозиториям и организациям проекта, включая все репозитории организаций pypi, python, psf и pypa. Проблемный Docker-образ с токеном был опубликован в каталоге Docker Hub третьего марта 2023 года, а удалён 11 июня 2024 года т.е. 16 месяцев находится в открытом доступе. 28 июня токен был отозван.
Примечательно, что в доступных исходных текстах, на базе которых был сгенерирован проблемный файл с байткодом, упоминание токена отсутствует. Автор кода пояснил, что в процессе разработки инструментария cabotage-app5 на своей локальной системе столкнулся с ограничениями интенсивности доступа к API GitHub при выполнении функции автоматизированной загрузки файлов из GitHub, и чтобы обойти лимиты, выставляемые для анонимных обращений к GitHub, временно добавил свой рабочий токен в код. Перед публикацией написанного кода токен был удалён, но разработчик не учёл, что упоминание токена прокэшировалось в предкомпилированном файле с байткодом, который затем попал в docker-образ.
def _fetch_github_file( - github_repository="owner/repo", ref="main", access_token=None, filename="Dockerfile" + github_repository="owner/repo", + ref="main", + access_token="0d6a9bb5af126f73350a2afc058492765446aaad", + filename="Dockerfile", ):
Проведённый разработчиками Python аудит активности в репозиториях на GitHub не выявил сторонних попыток доступа с использованием раскрытого токена. С учётом того, что с 2017 года GitHub является первичной площадкой для разработки CPython, попадание токена в руки злоумышленника могло бы привести к полной компрометации инфраструктуры, используемой для разработки Python и репозитория PyPI, и возможности совершения попыток интеграции бэкдоров в CPython и пакетный менеджер PyPI.
Инцидент показывает важность анализа утечек не только в исходном коде, файлах конфигурации и переменных окружения, но и в бинарных файлах. В контексте Python пользователям также рекомендуется обращать внимание на наличие в загружаемых проектах pyc-файлов со скомпилированным байткодом, так как данные файлы могут содержать скрытые модификации, отсутствующие в исходном коде.
Источник: https://www.opennet.ru/opennews/art.shtml?num=61531