GitHub второй раз отключил репозитории двух скомпрометированных экшенов: actions-cool/issues-helper и actions-cool/maintain-one-comment. Они автоматизировали закрытие неактивных задач, проверку новых issues, обновление комментариев к issues и pull requests, а также поддержание единственного комментария бота. Сейчас при открытии обоих репозиториев GitHub сообщает: «Доступ к этому репозиторию отключён сотрудниками GitHub из-за нарушения условий использования GitHub. Если вы владелец репозитория, обратитесь в службу поддержки GitHub за дополнительной информацией».

18 мая 2026 года в оба экшена внедрили вредоносный код в рамках кампании Mini Shai-Hulud. Он собирал секреты и учётные данные из CI/CD-конвейеров, после чего отправлял похищенную информацию на сервер злоумышленников. GitHub ограничил доступ к репозиториям, но вредоносное содержимое осталось на месте. С ним сохранились и release-теги, продолжавшие указывать на заражённые коммиты.
16 сентября 2026 года репозитории неожиданно снова стали доступны. Это произошло в промежутке между 11:09 и 18:16 по GMT+2; причина повторного включения неизвестна. Перед восстановлением доступа GitHub не очистил теги релизов. Поэтому проекты, где экшены были подключены по тегу версии, при очередном запуске workflow опять начали загружать код, внедрённый ещё 18 мая.
Повторное заражение не требовало действий со стороны атакующих. Многие workflow запускались ежедневно, при создании issue либо при открытии pull request. Вероятнее всего, значительная часть зависимых репозиториев исполнила вредоносную нагрузку примерно в течение суток после восстановления доступа. Владельцам проектов не нужно было менять ни одной строки: достаточно было очередного штатного запуска автоматизации.
Связь с кластером Mini Shai-Hulud установили по инфраструктуре вывода данных. Экшены передавали сведения на домен t.m-kosche[.]com, который также использовался вредоносными npm-пакетами из экосистемы @antv. Руководитель отдела анализа угроз Socket Филипп Буркхардт сообщил The Hacker News: «Это указывает на тот же кластер активности Mini Shai-Hulud, а не на отдельный инцидент, ограниченный npm».
Исследователь Socket Карло Занки описал механизм повторного запуска так: «16 сентября 2026 года оба репозитория снова стали доступны. Их release-теги предварительно не очистили. Они по-прежнему указывают на вредоносное содержимое, добавленное 18 мая, поэтому любой workflow, который ссылается на один из этих экшенов по тегу версии, при следующем запуске возобновил загрузку и исполнение вредоносной нагрузки».
Для этой атаки не понадобились новый эксплойт, новая инфраструктура, свежая вредоносная версия, очередной захват аккаунта или внедрение постороннего workflow. Код уже лежал в репозиториях и ждал, пока источник снова станет доступен для скачивания. После снятия блокировки GitHub Actions разрешил раннерам получить старую вредоносную версию под привычным тегом. Позднее GitHub вновь отключил оба репозитория.
Уязвимыми оказались ссылки на изменяемые теги версий: владелец upstream-репозитория может незаметно переназначить такой тег на другой коммит. Workflow, закреплённые за полным SHA коммита чистой версии, выпущенной до 18 мая 2026 года, этой повторной активации не подверглись. SHA указывает на конкретный снимок кода и не начинает вести на иное содержимое после перемещения тега или изменений в исходном репозитории.
Из workflow следует удалить actions-cool/issues-helper и actions-cool/maintain-one-comment, подобрать проверенную чистую замену и закрепить её за полным SHA коммита, датированным ранее 18 мая 2026 года. Все секреты, токены и учётные данные CI/CD, к которым заражённый экшен мог получить доступ, нужно считать раскрытыми и заменить. Простого удаления строки из конфигурации недостаточно: похищенный токен может продолжать работать уже вне GitHub Actions.
В истории запусков стоит искать внезапно успешные задания после продолжительного периода с ошибкой «Set up job», особенно начиная с 16 сентября 2026 года. Проверки требуют подозрительные исполнения workflow, необычное применение токенов и неожиданные коммиты после этой даты. История с Mini Shai-Hulud оставила неприятную лазейку: вредоносный тег может пережить блокировку, а затем ожить без новой публикации и без изменений в пользовательском workflow. Практическая защита здесь вполне конкретна: внешние GitHub Actions закрепляют за неизменяемыми полными SHA, а не за тегами версий.

Изображение носит иллюстративный характер
18 мая 2026 года в оба экшена внедрили вредоносный код в рамках кампании Mini Shai-Hulud. Он собирал секреты и учётные данные из CI/CD-конвейеров, после чего отправлял похищенную информацию на сервер злоумышленников. GitHub ограничил доступ к репозиториям, но вредоносное содержимое осталось на месте. С ним сохранились и release-теги, продолжавшие указывать на заражённые коммиты.
16 сентября 2026 года репозитории неожиданно снова стали доступны. Это произошло в промежутке между 11:09 и 18:16 по GMT+2; причина повторного включения неизвестна. Перед восстановлением доступа GitHub не очистил теги релизов. Поэтому проекты, где экшены были подключены по тегу версии, при очередном запуске workflow опять начали загружать код, внедрённый ещё 18 мая.
Повторное заражение не требовало действий со стороны атакующих. Многие workflow запускались ежедневно, при создании issue либо при открытии pull request. Вероятнее всего, значительная часть зависимых репозиториев исполнила вредоносную нагрузку примерно в течение суток после восстановления доступа. Владельцам проектов не нужно было менять ни одной строки: достаточно было очередного штатного запуска автоматизации.
Связь с кластером Mini Shai-Hulud установили по инфраструктуре вывода данных. Экшены передавали сведения на домен t.m-kosche[.]com, который также использовался вредоносными npm-пакетами из экосистемы @antv. Руководитель отдела анализа угроз Socket Филипп Буркхардт сообщил The Hacker News: «Это указывает на тот же кластер активности Mini Shai-Hulud, а не на отдельный инцидент, ограниченный npm».
Исследователь Socket Карло Занки описал механизм повторного запуска так: «16 сентября 2026 года оба репозитория снова стали доступны. Их release-теги предварительно не очистили. Они по-прежнему указывают на вредоносное содержимое, добавленное 18 мая, поэтому любой workflow, который ссылается на один из этих экшенов по тегу версии, при следующем запуске возобновил загрузку и исполнение вредоносной нагрузки».
Для этой атаки не понадобились новый эксплойт, новая инфраструктура, свежая вредоносная версия, очередной захват аккаунта или внедрение постороннего workflow. Код уже лежал в репозиториях и ждал, пока источник снова станет доступен для скачивания. После снятия блокировки GitHub Actions разрешил раннерам получить старую вредоносную версию под привычным тегом. Позднее GitHub вновь отключил оба репозитория.
Уязвимыми оказались ссылки на изменяемые теги версий: владелец upstream-репозитория может незаметно переназначить такой тег на другой коммит. Workflow, закреплённые за полным SHA коммита чистой версии, выпущенной до 18 мая 2026 года, этой повторной активации не подверглись. SHA указывает на конкретный снимок кода и не начинает вести на иное содержимое после перемещения тега или изменений в исходном репозитории.
Из workflow следует удалить actions-cool/issues-helper и actions-cool/maintain-one-comment, подобрать проверенную чистую замену и закрепить её за полным SHA коммита, датированным ранее 18 мая 2026 года. Все секреты, токены и учётные данные CI/CD, к которым заражённый экшен мог получить доступ, нужно считать раскрытыми и заменить. Простого удаления строки из конфигурации недостаточно: похищенный токен может продолжать работать уже вне GitHub Actions.
В истории запусков стоит искать внезапно успешные задания после продолжительного периода с ошибкой «Set up job», особенно начиная с 16 сентября 2026 года. Проверки требуют подозрительные исполнения workflow, необычное применение токенов и неожиданные коммиты после этой даты. История с Mini Shai-Hulud оставила неприятную лазейку: вредоносный тег может пережить блокировку, а затем ожить без новой публикации и без изменений в пользовательском workflow. Практическая защита здесь вполне конкретна: внешние GitHub Actions закрепляют за неизменяемыми полными SHA, а не за тегами версий.