Исследователи сообщили о масштабной компрометации более 180 npm-пакетов, заражённых самовоспроизводящейся малварью, которая автоматически троянизирует зависимые проекты и охотится за секретами разработчиков. Кампания получила название Shai-Hulud по имени workflow-файла shai-hulud.yaml, создаваемого злоумышленниками в репозиториях жертв. Под удар, среди прочего, попали пакеты аккаунта известной ИБ-компании CrowdStrike; компания заявила, что угрозы для платформы Falcon и клиентов нет, а подозрительные пакеты удалены, ключи ротаированы.
Что произошло: атака на цепочку поставок npm
Первым на инцидент обратил внимание разработчик Дэниел Перейра, предупредивший о вредоносных публикациях в реестре npm и призвавший воздержаться от установки последних версий @ctrl/tinycolor (популярность — более 2 млн загрузок в неделю). По данным команд Socket и Aikido, на момент расследования компрометация затронула уже не менее 187 пакетов. Аналитики ReversingLabs называют произошедшее «первым в своём роде» самораспространяющимся червём для npm, направленным на кражу облачных токенов, и указывают на пакет rxnt-authentication как на возможную отправную точку (вредоносная версия опубликована 14 сентября 2025 года). В качестве «нулевого пациента» фигурирует аккаунт techsupportrxnt, чья компрометация могла произойти через фишинг или эксплуатацию уязвимого GitHub Action.
Тактика и техника: как распространяется Shai-Hulud
В заражённые версии внедряется механика самораспространения: вредоносный код скачивает каждый пакет мейнтейнера, модифицирует package.json, добавляет скрипт bundle.js, переупаковывает и публикует новую версию. Тем самым обеспечивается «автоматическая троянизация» нижестоящих пакетов в дереве зависимостей.
Злоупотребление GitHub Actions и охота за секретами
Червь разворачивает в репозиториях жертвы workflow shai-hulud.yaml и использует легитимный сканер TruffleHog для поиска секретов (токены, пароли, ключи облаков). Обнаруженные данные проверяются и применяются для дальнейшего распространения. Результаты эксфильтруются на жёстко закодированный веб-хук https://webhook[.]site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7. Отдельно отмечается попытка создать публичные копии приватных репозиториев с префиксом «migration», чтобы извлечь исходный код и секреты, размещённые в конфигурациях.
Масштаб воздействия и возможные связи
Сложная сеть взаимозависимостей npm делает прогнозирование масштаба распространения затруднительным. Эксперты предполагают возможную связь с недавней массовой supply chain-кампанией s1ngularity, в рамках которой были раскрыты данные тысяч репозиториев и аккаунтов. На данном этапе исследователи фиксируют «сотни» заражённых пакетов и продолжают удаление вредоносных публикаций совместно с реестром npm.
Индикаторы компрометации и рекомендации по защите
IoC/признаки: появление workflow shai-hulud.yaml в .github/workflows; инъекция скрипта bundle.js; нетипичные модификации package.json (postinstall/prepare-скрипты); публичные «migration»-форки приватных репозиториев; обращения к webhook[.]site; вызовы TruffleHog в CI.
Мейнтейнерам: немедленно ротацировать токены npm/GitHub/облаков; отозвать скомпрометированные версии пакетов и переиздать чистые; проверить и удалить подозрительные GitHub Actions; включить 2FA и ограничить права токенов (наименьшие привилегии); запретить запуск Actions из форков и непроверенных источников; пиновать версии Actions по SHA; включить секрет-сканирование и branch protection; просмотреть audit logs и логи публикаций в npm.
Командам разработки: зафиксировать зависимости (lockfiles), использовать npm ci; временно запретить установочные скрипты (—ignore-scripts) там, где это возможно; мониторить сетевую активность при сборке; применить инструменты анализа цепочки поставок (например, решения Socket, Aikido, ReversingLabs), а также политики allowlist для критичных сборочных сред.
Инцидент Shai-Hulud подчёркивает уязвимость современной разработки к атакам на цепочку поставок: единичная компрометация мейнтейнера или CI может приводить к каскадному заражению экосистемы. Командам стоит внедрять многослойную защиту — жёсткую гигиену секретов, минимизацию прав токенов, контроль CI/CD и верификацию стороннего кода. Следите за обновлениями исследователей и реестра npm, пересоберите артефакты из доверенных источников и оперативно реагируйте на новые IoC, чтобы снизить вероятность «бокового» распространения подобных червей в ваших поставках.