16 сентября два репозитория GitHub Actions организации actions-cool вернулись в доступ. За четыре месяца, пока они были отключены, никто не очистил вредоносные теги, созданные в мае. Вернулось и заражение — рабочие процессы снова начали загружать и выполнять вредоносный код Mini Shai-Hulud.

Команда Socket обнаружила проблему в actions-cool/issues-helper и actions-cool/maintain-one-comment. В мае злоумышленники перенаправили 53 тега первого и 15 тегов второго на подставные коммиты с вредоносом. GitHub отключил оба репозитория 19 мая, но сами теги остались нетронутыми.

Пока репозитории были недоступны, задания прерывались на этапе инициализации — раннер GitHub Actions не мог скачать Action. После возврата репозиториев защита исчезла. Любой workflow, ссылающийся на версию вроде actions-cool/issues-helper@v2.2.1, при следующем запуске получал заражённый код.

Уязвимость кроется в изменяемых Git-тегах. Ссылка на @v2.2.1 не привязана к конкретному коммиту — владелец может перенаправить тег на другой код без изменений в чужих workflows. Атакующие использовали именно это. Когда репозитории открыли заново, старые ссылки снова разрешились в заражённые коммиты.

Вредоносная нагрузка скачивает среду Bun и читает память процесса Runner.Worker, где GitHub Actions хранит расшифрованные секреты задания. Код передаёт украденные учётные данные на t.m-kosche[.]com — доменом владели авторы кампании Mini Shai-Hulud.

Масштаб повторного заражения значительный. Граф зависимостей issues-helper включает около 15 тысяч репозиториев, хотя Socket не установила, сколько из них используют именно изменяемые теги. Оба Action работают с issue и pull request, часто запускаются ежедневно или по событиям — многим проектам не потребовались новые действия атакующих.

Это продолжение серии атак Mini Shai-Hulud на инструменты разработчиков. В августе новая версия заразила 444 npm-пакета с двумя миллиардами загрузок в месяц. Кампания крутится вокруг кражи токенов и распространения через доверенные репозитории и сборочные конвейеры.

25 сентября GitHub снова отключил оба репозитория — теперь новые задания прерываются до выполнения нагрузки. Причина повторного открытия неизвестна. Socket не смогла выяснить, произошло ли это по запросу владельцев или случайно.

Socket рекомендует проверить ссылки на оба Action в .github/workflows и либо удалить их, либо закрепить за полным SHA коммита, созданного до 18 мая. Для workflows, запущенных после 16 сентября с теговыми ссылками, нужно сменить все доступные секреты, проверить права GITHUB_TOKEN, историю запусков и неожиданные коммиты.