По сообщению разработчиков репозитория 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