Утечка токена для полного доступа к GitHub-репозиториям проекта Python

Исследователи из компании JFrog обнаружили в составе Docker-образа для быстрого разрвёртывания Python окружения токен, предоставляющий доступ с правами администратора к репозиториям Python, PyPI и Python Software Foundation на GitHub. Токен был найден в бинарном файле «__pycache__/build.cpython-311.pyc» с прокэшированным скомпилированным байткодом.

По сообщению разработчиков репозитория 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 и чтобы обойти лимиты, выставляемые для анонимных обращений, временно добавил свой рабочий токен в код. Перед публикацией написанного кода токен был удалён, но разработчик не учёл, что упоминание токена осталось в предкомпилированном файле с байткодом, который затем попал в 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 не выявил сторонних попыток доступа с использованием раскрытого токена. Попадание токена в руки злоумышленника могло бы привести к полной компрометации инфраструктуры, используемой для разработки Python и репозитория PyPI, и возможности совершения попыток интеграции бэкдоров в CPython и пакетный менеджер PyPI.

Инцидент показывает важность анализа утечек не только в исходном коде, файлах конфигурации и переменных окружения, но и в бинарных файлах. В контексте Python пользователям также рекомендуется обращать внимание на наличие pyc-файлов с скомпилированным байткодом, так как данные файлы могут содержать скрытые модификации, отсутствующие в исходном коде.

Источник: http://www.opennet.ru/opennews/art.shtml?num=61531