Shai-Hulud: саморозповсюджуваний черв’як у екосистемі npm та що робити спільноті

CyberSecureFox 🦊

Екосистема JavaScript зіткнулася з новою хвилею компрометацій: дослідники повідомили про більш ніж 180 заражених npm-пакетів, в які вбудовано саморозповсюджувану малварь, що автоматично троянізує залежні проєкти та збирає секрети розробників. Кампанію названо Shai-Hulud за однойменним файлом workflow shai-hulud.yaml, який зловмисники розміщують у репозиторіях жертв.

Атака на ланцюг постачання npm: масштаб і перші сигнали

На інцидент першим публічно звернув увагу розробник Даніель Перейра, попередивши про шкідливі публікації та порадивши тимчасово утриматися від оновлення @ctrl/tinycolor (понад 2 млн завантажень на тиждень). Команди Socket і Aikido підтвердили щонайменше 187 скомпрометованих пакунків. Частина пакетів була пов’язана з акаунтом відомої компанії з ІБ CrowdStrike; компанія заявила, що платформа Falcon і клієнти не під загрозою, підозрілі релізи видалені, ключі — ротаційовані.

Механізм поширення Shai-Hulud у npm

Шкідливий код реалізує автоматичне самопоширення: завантажує всі пакети мейнтейнера, змінює їхній package.json, додає скрипт bundle.js, після чого перепаковує і публікує нові версії. Так ураження «стікає вниз» деревом залежностей, збільшуючи площу атаки без ручного втручання зловмисника.

Зловживання GitHub Actions і крадіжка секретів

Ключова тактика — розгортання workflow shai-hulud.yaml у репозиторіях жертв. Через GitHub Actions малварь запускає легітимний сканер TruffleHog для пошуку токенів, паролів та ключів хмарних провайдерів. Валідні секрети використовуються для подальшого руху й публікації заражених релізів, а результати ексфільтруються на жорстко закодований вебхук https://webhook[.]site/bb8ca5f6-4175-45d2-b042-fc9ebb8170b7. Додатково фіксуються спроби створювати публічні копії приватних репозиторіїв із префіксом «migration», аби витягнути вихідний код і конфігураційні секрети.

Ймовірна відправна точка та можливі зв’язки з іншими кампаніями

За оцінкою ReversingLabs, це «перший у своєму роді» саморозповсюджуваний черв’як для npm, спрямований на крадіжку хмарних токенів. Як імовірну початкову ланку називають пакет rxnt-authentication, чия шкідлива версія з’явилася 14 вересня 2025 року. «Нульовим пацієнтом» фігурує акаунт techsupportrxnt, компрометація якого могла статися через фішинг або експлуатацію вразливого GitHub Action.

Через складну мережу залежностей npm масштаб поширення оцінити непросто. Деякі експерти припускають зв’язок із нещодавньою масовою supply chain-кампанією s1ngularity, що призвела до витоку даних тисяч репозиторіїв та акаунтів. Наразі дослідники говорять про «сотні» заражених пакетів і разом з реєстром npm видаляють шкідливі публікації.

Індикатори компрометації (IoC) і кроки реагування для команд

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; активувати secret scanning і branch protection; переглянути audit logs та журнали публікацій у npm.

Командам розробки: фіксувати залежності у lock-файлах і використовувати npm ci; де можливо — встановлювати з –ignore-scripts; моніторити мережеву активність під час збірок; застосовувати інструменти аналізу ланцюга постачання (Socket, Aikido, ReversingLabs) та політики allowlist для критичних середовищ CI/CD.

Інцидент Shai-Hulud ще раз демонструє, наскільки вразливі сучасні ланцюги постачання: компрометація одного мейнтейнера або CI може каскадно уразити екосистему. Посилюйте багатоешелонний захист — жорстку гігієну секретів, мінімізацію прав доступу, контроль GitHub Actions і перевірку стороннього коду. Відстежуйте нові IoC, перевипускайте артефакти з довірених джерел і регулярно проводьте аудит, щоб зменшити ризик бокового поширення подібних черв’яків у ваших постачаннях.

Залишити коментар

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються дані ваших коментарів.