Как произошел взлом
В отличие от известных уязвимостей в самом механизме GitHub Actions, здесь хакеры использовали украденные учетные данные разработчиков для прямого изменения процессов. Аналитики из StepSecurity предполагают, что источником стали утекшие в сеть персональные токены доступа (PAT), хотя точный вектор атаки еще не подтвержден.
Злоумышленники, после получения доступа к репозиториям, маскировали свои задачи под стандартные проверки безопасности. Файлы именовались как security-audit.yml или github_actions_security.yml. Поскольку файлы ссылались на секреты, уже используемые в легитимных сборках, вредоносные процессы собирали учетные данные во время работы и отправляли их на подконтрольный сервер.
Глубокое сканирование Git-истории
Октябрьская версия атаки стала еще изощреннее и вышла за рамки секретов, явно указанных в рабочих процессах. Хакеры задействовали экшен actions/checkout@v4 с параметром fetch-depth: 0 для полного сканирования рабочего дерева и истории коммитов.
Что именно искали злоумышленники:
- ключи AWS (более поздние версии скрипта захватывали соседние строки кода, чтобы сопоставить ID ключей с секретными ключами доступа);
- токены PAT от GitHub и GitLab;
- ключи от сервисов Google и Firebase;
- API-токены ИИ-провайдеров — таких как, Anthropic, OpenAI и OpenRouter.
Все собранные учетные данные отправлялись по протоколу HTTP на IP-адрес 193.32.204.199. Важно: хакерам улетали даже те ключи, которые были давно удалены из текущей кодовой базы, но оставались в истории Git.
Масштаб и блокировки
Атака разворачивалась в несколько этапов: сначала вредоносный код доставили 160 уже известным жертвам, а спустя 20 минут началось массовое внедрение в 28 000 новых репозиториев. Точное количество украденных данных пока неизвестно, однако исследователи из GitGuardian зафиксировали факты утечки во время октябрьской кампании.
Во время предыдущих атак в августе и сентябре вредоносные процессы были найдены в 772 публичных репозиториях. Из 3 669 запусков успешно завершились 336, что привело к краже 26 секретов из 13 репозиториев.
Хотя встроенные механизмы одобрения GitHub блокируют большинство вредоносных действий, хакеры просто переиспользовали 92 старых процесса от предыдущих атак, включая инфраструктуру, которая была активна с сентября 2025 года. Хуже всего то, что к 5 октября очистить свои репозитории от вредоносного кода успели лишь 16% пострадавших (124 из 772).
Что делать
Рекомендуется предпринять несколько шагов:
- проверить журналы аудита GitHub и активность PAT, чтобы выяснить, какие аккаунты изменяли файлы в директории
.github/workflows/; - изучить историю запусков Actions, чтобы понять, какие именно секреты могли попасть в руки хакеров;
- немедленно отозвать учетные данные всех скомпрометированных аккаунтов с правом записи, даже если уже вредоносный процесс удален;
- обязательно обновить и перевыпустить облачные ключи, учетные данные для развертывания, токены реестров и API-ключи ИИ-провайдеров;
- смените даже те пароли и ключи, которые были удалены из кода месяцы назад: они могли остаться валидными и утечь после сканирования истории Git.