17 минут решили судьбу миллионов разработчиков.
Команда JFrog Security Research обнаружила утечку токена с административными правами доступа к репозиториям GitHub Python, PyPI и Python Software Foundation. Токен был найден в публичном Docker-контейнере на платформе Docker Hub.
Выявленный токен предоставлял административный доступ ко всей инфраструктуре Python, включая репозитории Python Software Foundation, PyPI и CPython. Если бы злоумышленники получили доступ к этим ресурсам, они могли бы провести крупномасштабную атаку на цепочку поставок, например, внедрить вредоносный код в CPython, что могло бы привести к распространению вредоносного ПО на десятки миллионов машин по всему миру.
Вектор атаки на цепочку поставок Python
Другой возможный сценарий атаки – внедрение вредоносного кода в хранилище кода PyPI, что дало бы киберпреступникам доступ к управлению популярными пакетами PyPI. Хакеры могли бы скрыть вредоносный код внутри пакетов или заменить их полностью, что также представляло бы серьезную угрозу.
Вектор атаки на цепочку поставок PyPI
Токен был найден внутри Docker-контейнера в скомпилированном Python-файле (pycache/build.cpython-311.pyc). Автор кода временно добавил токен авторизации в исходный код, после чего скомпилировал код, но не удалил токен из скомпилированного файла. Затем разработчик поместил в Docker-образ как исходный код, так и скомпилированный pyc-файл вместе с токеном. В результате токен оказался в Docker-образе, несмотря на отсутствие его в исходном коде.
Декомпилированный файл build.cpython-311.pyc с токеном (сверху) и исходный код (снизу)
Случай показал, что одного сканирования исходного кода для обнаружения утечек недостаточно. Необходима проверка как исходного кода, так и бинарных данных в опубликованных Docker-образах. Вредоносные данные могут содержаться только в бинарных файлах, что делает их обнаружение более сложным, но не менее важным.
Команда JFrog оперативно сообщила об утечке токена службе безопасности PyPI, и всего через 17 минут доступ был отозван. Благодаря быстрому реагированию, удалось предотвратить потенциальную катастрофу. PyPI провела всестороннюю проверку, подтвердив отсутствие подозрительной активности, связанной с токеном. PyPI также опубликовала подробности инцидента и меры, предпринятые для его предотвращения.