Перейти к содержанию
Promtime

Оформление

Оформление

Безопасность ИИ

GhostAction достаёт ключи из истории Git на GitHub

5 мин чтения

В разборе GitGuardian есть фраза, которая объясняет октябрьскую волну GhostAction лучше любых цифр: «Adding this step for public repositories would have added no value». В новой волне атакующий прочёсывал ещё и содержимое и историю репозиториев. По этому шагу GitGuardian заключает, что он рассчитывал задеть и приватные репозитории.

По данным GitGuardian, с 8 по 12 октября атакующие через примерно 1900 взломанных аккаунтов GitHub добрались до более чем 30 000 репозиториев около 3000 пользователей и организаций. Пик пришёлся на 8–9 октября. Из CI публичных репозиториев workflow пытались вытащить 3174 секрета.

Коротко

  • Первые оценки и итоговый датасет расходятся больше чем в 80 раз: 9 октября со ссылкой на Socket речь шла о 346 репозиториях, 13 октября GitGuardian насчитала больше 30 000.
  • Новая полезная нагрузка ищет ключи AWS, токены GitHub и GitLab и ключи ИИ-провайдеров в рабочем дереве и во всей истории Git, то есть и те, что уже удалены из кода.
  • С 9 октября GitHub не даёт вредоносному workflow запускаться, волны 10 и 12 октября ничего не извлекли, а сколько ключей ушло до этого, GitGuardian не подсчитала.

Socket видела 346 репозиториев, GitGuardian насчитала больше 30 000

В обновлении от 9 октября GitGuardian сослалась на разбор исследовательской команды Socket. По её данным, 8 октября два взломанных аккаунта мейнтейнеров, kitao и henrywoo, за два автоматических прохода длиной в минуты залили workflow security-audit.yml во все репозитории, куда у них был доступ на запись, всего 346. Среди них kitao/pyxel с 18 420 звёздами и uber/athenadriver. Socket подтвердила успешную эксфильтрацию на тот же адрес 193.32.204.199.

Через четыре дня GitGuardian сверила это со своими данными и увидела гораздо больше. Волну она делит на шесть партий по метке, которую атакующий добавлял к адресу эксфильтрации в HTTP-параметре. Самая крупная, с меткой new, стартовала 8 октября в 14:07 и дала 29 431 коммит. Партии mnsft (10 октября, 84 коммита) и security (12 октября, 65 коммитов) уже не выполнились.

Для сравнения с прошлыми волнами. В августе и сентябре 2026 года workflow попал в 772 публичных репозитория 373 пользователей и организаций и нацеливался на 2577 секретов. Тогда GitHub придержал большинство запусков до одобрения: из 3669 запусков в 605 репозиториях выполнились 499, в 32 репозиториях, успешно завершились 336 и унесли 26 секретов из 13 репозиториев. Первая волна в сентябре 2025 года, по данным GitGuardian, затронула 817 публичных репозиториев 327 пользователей GitHub и вынесла не менее 3325 секретов; подробности есть в её первом отчёте.

Эти числа легко сложить неправильно. 3325 в 2025 году означает вынесенные секреты, 3174 в октябре означает секреты, на которые нацелились. 28 000 в описании GitGuardian обозначает новые репозитории, 29 431 в её таблице обозначает коммиты. Напрямую их сравнивать нельзя.

Три версии нагрузки за один день

Исходный GhostAction устроен просто: атакующий читает легитимные workflow жертвы, выписывает имена секретов вида secrets.NAME и вставляет их в свой файл, который одним curl POST отправляет значения на сервер. Октябрьская нагрузка, по оценке GitGuardian, более экспериментальная и ручная, и менялась она прямо по ходу.

  • Версия 1: checkout с fetch-depth: 0, поиск по рабочему дереву и выводу git log -p --all по 11 регулярным выражениям. Около 1800 репозиториев.
  • Версия 2: поиск без учёта регистра и захват двух строк до и после идентификатора ключа AWS (AKIA или ASIA), чтобы рядом попался и сам секретный ключ. Около сотни уже затронутых репозиториев.
  • Версия 3: тот же захват контекста, но и по истории. Сначала 160 ранее затронутых жертв, через 20 минут 28 000 новых репозиториев.

Идентификатор ключа AWS без секретной части бесполезен, примерно как номер карты без кода. Поэтому вторая и третья версии берут соседние строки. The News Stack уточняет состав выражений: кроме AWS, GitHub и GitLab там ключи Google и Firebase и токены Anthropic, OpenAI и OpenRouter. Всё уходит по открытому HTTP.

Откуда у атакующих токены, источники отвечают по-разному

The News Stack противопоставляет GhostAction взлому tj-actions/changed-files: там отравили общий Action, которым пользовались тысячи репозиториев, здесь workflow правят напрямую украденными учётными данными, без уязвимости в самом GitHub Actions. Издание ссылается на анализ StepSecurity от 9 октября, где вероятным источником названы персональные токены доступа из дампов учётных данных. Подтверждения этому нет.

GitGuardian даёт другую, совместимую версию: часть октябрьских жертв уже фигурировала в волнах сентября 2025 и августа 2026 года, и атакующие, вероятно, отчасти пользуются секретами, которые украли давно и никто не сменил. В 92 случаях летом атакующий даже не добавлял файл, а коммитом Update Github Actions Security workflow перенаправлял старый, никем не удалённый workflow на новый адрес. К 5 октября по публичной истории вычистили лишь 124 репозитория из 772, это 16%.

Наш вывод из этих цифр: кампанию сдерживает платформа, владельцы репозиториев с ней почти не справляются. В сентябре её останавливал механизм одобрения запусков, в октябре блокировка GitHub, а заражённые файлы и несменённые ключи месяцами остаются на месте. Wiz советует менять секреты и переводить CI на короткоживущий доступ через OIDC.

Чего мы не знаем

  • Сколько разных ключей реально дошло до атакующих. GitGuardian подтверждает отдельные случаи эксфильтрации, но итог не считала.
  • Как были взломаны аккаунты. Для первой волны вектор тоже остался неизвестен, GitGuardian лишь отмечала, что на том IP недавно лежали фишинговые нагрузки.
  • Сколько из 30 000 репозиториев приватные. На них указывает только логика нагрузки, а данные GitGuardian собраны по публичным.
  • Использованы ли украденные токены реестров. В случае FastUUID в 2025 году вредоносных релизов не нашли, несмотря на украденный токен PyPI.

Если в ваших организациях находили такие workflow, на что указывал разбор: на токен из старого дампа, как предполагает StepSecurity, или на ключ, который не сменили после одной из прошлых волн, как пишет GitGuardian?

Anthropic

Code Review от Anthropic вышел из превью и стал быстрее

Code Review в Claude вышел из превью и ускорился: большинство проверок пул-реквестов занимает 6–10 минут вместо примерно 20. На тарифах Team и Enterprise ревью запускается на новых PR само. Сколько у вас обычно ждёт пул-реквест до первого ревью?

Пока никто не написал. Будьте первым.

Присоединяйтесь к разговору

Войдите, чтобы оставить комментарий. Он появится после модерации.