Отключённые GitHub Actions ожили с вредоносными тегами и снова начали красть секреты CI/CD
Одного возвращения репозиториев в доступ хватило, чтобы спустя четыре месяца оживить уже остановленную атаку на цепочку поставок. Два репозитория GitHub Actions из организации actions-cool снова стали доступны 16 сентября, хотя их вредоносные теги с мая никто не очистил. В результате рабочие процессы вновь начали загружать и выполнять Mini Shai-Hulud.
Команда Socket обнаружила, что речь идёт о actions-cool/issues-helper и actions-cool/maintain-one-comment. В мае злоумышленники перенаправили все 53 тега первого Action и 15 тегов второго на подставные коммиты с вредоносным кодом. GitHub отключил оба репозитория 19 мая, но сами теги сохранились.
Пока репозитории были недоступны, зависимые задания останавливались ещё на этапе Set up job, потому что раннер GitHub Actions не мог скачать Action. После возврата репозиториев 16 сентября защита исчезла автоматически. Любой workflow, который ссылался на версию вроде actions-cool/issues-helper@v2.2.1, снова получал тот же вредоносный код при следующем запуске.
Причина связана с изменяемыми тегами Git. Ссылка на @v2.2.1 не фиксирует конкретный коммит, поэтому владелец репозитория может перенаправить тег на другой код без изменений в чужом workflow. В майской атаке злоумышленники использовали именно такой приём, а после повторного открытия репозиториев старые ссылки снова начали разрешаться в заражённые коммиты.
Вредоносная нагрузка скачивает среду Bun, затем читает память процесса Runner.Worker, где GitHub Actions хранит расшифрованные секреты выполняемого задания. StepSecurity ранее описала, как код извлекает учётные данные и отправляет их на t.m-kosche[.]com. Тот же домен связывали с кампанией Mini Shai-Hulud.
Масштаб потенциального повторного заражения оказался заметным. Только граф зависимостей issues-helper насчитывает около 15 тысяч репозиториев, хотя Socket не установила, сколько из них использовали именно изменяемые теги. Оба Action обслуживают задачи с issue и pull request и часто запускаются ежедневно или по внешнему событию, поэтому многим проектам не требовалось никаких новых действий со стороны атакующих.
История продолжает серию атак Mini Shai-Hulud на инструменты разработчиков. В августе новая версия червя заразила 444 npm-пакета с суммарными двумя миллиардами загрузок в месяц. Кампания строится вокруг кражи токенов и дальнейшего распространения через доверенные репозитории, пакеты и конвейеры сборки.
К 25 сентября GitHub снова отключил actions-cool/issues-helper и actions-cool/maintain-one-comment, поэтому новые задания теперь останавливаются до выполнения нагрузки. Причина повторного открытия репозиториев остаётся неизвестной. Socket не смогла подтвердить, произошло ли оно по запросу владельцев или по другой причине.
Socket рекомендует проверить все ссылки на оба Action в .github/workflows, удалить их либо закрепить за проверенным полным SHA коммита, созданного до 18 мая. Для workflow, которые запускались после 16 сентября с теговыми ссылками, советуют сменить все доступные им секреты, проверить права GITHUB_TOKEN, историю запусков и неожиданные коммиты после повторного открытия репозиториев.