PyPI аннулировала скомпрометированные токены после атаки GhostAction

CyberSecureFox 🦊

Python Software Foundation сообщила об аннулировании всех токенов PyPI, скомпрометированных в ходе атаки на цепочку поставок GhostAction, обнаруженной в начале сентября. По данным команды PyPI, признаков злоупотребления украденными токенами для публикации вредоносных пакетов не выявлено. Тем не менее экстренная ревокация ключей стала необходимой мерой для снижения рисков и предотвращения последствий вторичных атак.

Что произошло: атака через GitHub Actions и эксфильтрация секретов

Исследователи GitGuardian обнаружили вредоносные workflow GitHub Actions (в частности, FastUUID), модифицированные для эксфильтрации секретов — в том числе токенов PyPI — на удаленные серверы. Первое уведомление в адрес PyPI было отправлено в день обнаружения, но из‑за попадания письма в спам оперативное реагирование сместилось на 10 сентября.

По оценке GitGuardian, злоумышленники похитили более 3300 секретов, включая токены PyPI, npm, DockerHub, GitHub, API‑ключи Cloudflare и AWS, а также учетные данные баз данных. Это классический пример атаки на цепочку поставок (supply chain attack), где компрометируется инфраструктура сборки или автоматизации, а не конечные приложения.

Реакция платформ и мейнтейнеров: ревокация токенов и очистка workflow

Осознав масштаб инцидента, GitGuardian создала issues более чем в 570 пострадавших репозиториях и уведомила команды безопасности GitHub, npm и PyPI. Многие мейнтейнеры оперативно отозвали и заменили токены, откатили коммиты и удалили зараженные workflow.

Команда PyPI сообщила, что не обнаружила свидетельств компрометации репозиториев и публикации вредоносных артефактов. Однако, руководствуясь принципом «безопасность прежде всего», было принято решение аннулировать все потенциально скомпрометированные токены и связаться с владельцами затронутых проектов для помощи в восстановлении и усилении защиты.

Почему long-lived токены опасны и чем их заменить

Короткоживущие токены и PyPI Trusted Publishers

Администраторы PyPI рекомендуют мейнтейнерам, использующим GitHub Actions, перейти от долгоживущих токенов к короткоживущим учетным данным через механизм Trusted Publishers. Такой подход минимизирует окно возможностей для злоумышленника: даже при эксфильтрации токен быстро утратит актуальность. Кроме того, механизм выпусков строится на проверке доверенных отношений между репозиторием и PyPI, что снижает риск несанкционированной публикации.

Практики защиты цепочки поставок

Минимизируйте права и время жизни секретов. Устанавливайте наименьшие необходимые привилегии и срок действия. Для GITHUB_TOKEN задавайте ограниченные permissions по умолчанию.

Жестко контролируйте workflow. Ревизуйте и подписывайте workflow, запрещайте произвольные изменения без ревью, ограничивайте запуск действий из форков и сторонних Actions, закрепляйте версии (pin) по commit SHA.

Включайте мониторинг и оповещения. Отслеживайте логи публикаций и попыток аутентификации, включайте secret scanning и оповещения CI/CD. Регулярно проверяйте историю аккаунта PyPI на подозрительную активность.

Быстрое реагирование и ротация. При первом признаке утечки немедленно отзывайте токены, пересобирайте артефакты и проводите форензик‑проверку рабочих процессов.

Значение инцидента для open source-экосистемы

GhostAction демонстрирует, насколько масштабно и незаметно злоумышленники могут воздействовать на инфраструктуру разработки, нацеливаясь на автоматизированные процессы и хранилища секретов. Даже при отсутствии публикации вредоносных пакетов утечка thousands секретов создает системные риски: повторное использование токенов, несанкционированный доступ к репозиториям, манипуляции сборкой и внедрение скрытых зависимостей.

Инцидент с GhostAction — напоминание всем командам: пересмотрите хранение секретов и публикацию артефактов. Внедрите короткоживущие токены и PyPI Trusted Publishers, ограничьте привилегии GITHUB_TOKEN, закрепляйте версии Actions, а также регулярно проводите аудит workflow и секретов. Чем короче жизнь токена и чем жестче контроль цепочки поставок, тем меньше шансов, что следующий GhostAction застанет вас врасплох.

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.