Експерти з безпеки кількох компаній зафіксували нову хвилю атак на ланцюг постачання, пов’язану з сімейством шкідливого ПЗ Mini Shai-Hulud, Miasma і Hades. Скомпрометовано щонайменше 23 npm-пакети екосистем LeoPlatform і RStreams, а також Go-модуль проєкту Verana Blockchain. Кампанія націлена на викрадення облікових даних розробників і мейнтейнерів з подальшим поширенням через реєстри пакетів, репозиторії GitHub та CI/CD-конвеєри. Організаціям, які використовують зазначені пакети в хмарних і serverless-робочих навантаженнях, необхідно негайно перевірити версії залежностей і провести ротацію всіх потенційно скомпрометованих токенів.
Уражені пакети та масштаб компрометації
За даними Socket, у новій хвилі атак уражені такі npm-пакети з конкретними троянізованими версіями:
- [email protected], [email protected]
- [email protected], [email protected], [email protected], [email protected], [email protected], [email protected]
- [email protected], [email protected], [email protected], [email protected], [email protected]
- [email protected], [email protected], [email protected], [email protected]
- [email protected], [email protected], [email protected]
- [email protected], [email protected], [email protected]
- Go-модуль: github.com/verana-labs/[email protected]
Як повідомляє StepSecurity, імовірно, зловмисники скомпрометували npm-акаунт мейнтейнера LeoPlatform і використали його токен для публікації троянізованих версій упродовж шестисекундного вікна — що свідчить про високий рівень автоматизації процесу.
Технічна анатомія атаки
Шкідливі npm-пакети застосовують нетиповий підхід до виконання коду під час інсталяції. Замість звичних хуків життєвого циклу в package.json вони використовують файл binding.gyp — механізм збирання нативних модулів Node.js, який запускає довільний код у момент встановлення пакета. Ця техніка дає змогу обійти інструменти статичного аналізу, орієнтовані на перевірку секції scripts у package.json.
Ланцюжок зараження виглядає так:
- binding.gyp під час встановлення пакета запускає JavaScript-завантажувач
- Завантажувач перевіряє наявність середовища виконання Bun і встановлює його за відсутності
- Запускається основне корисне навантаження — стілер, що збирає секрети, облікові дані та токени
- Шкідливе ПЗ впроваджує в GitHub Actions робочий процес з назвою «Run Copilot», який вилучає секрети CI/CD-середовища з пам’яті раннера
- Зібрані дані шифруються та вивантажуються в публічні GitHub-репозиторії
За даними дослідників, шкідливе ПЗ містить механізм вимкнення для систем із російською локаллю (так званий killswitch) і перевіряє наявність засобів захисту кінцевих точок перед виконанням основного навантаження.
Індикатори компрометації
Дослідники виявили кілька характерних рядкових маркерів, які використовує ця кампанія:
- «Alright Lets See If This Works» — опис GitHub-репозиторіїв, що використовуються як точки скидання викрадених даних. На момент публікації дослідження 559 репозиторіїв відповідали цьому опису
- «RevokeAndItGoesKaboom» — поточний маркер ретрансляції токенів, який замінив раніше використаний «IfYouInvalidateThisTokenItWillNukeTheComputerOfTheOwner»
- «firedalazer» — рядок у комітах GitHub, за яким шкідливе ПЗ щогодини опитує платформу для отримання та виконання варіанта Hades
Зв’язок із компрометацією codfish/semantic-release-action
Маркер «RevokeAndItGoesKaboom» пов’язує цю кампанію з нещодавньою компрометацією GitHub Action codfish/semantic-release-action. Згідно з звітом StepSecurity, 24 червня 2026 року о 15:39:06 UTC зловмисник виконав force-push шкідливого коміту та перенаправив кілька тегів версій на цей коміт. Усі робочі процеси, які використовували скомпрометовані теги після цього моменту, виконували корисне навантаження зловмисника безпосередньо в раннері GitHub Actions.
Корисне навантаження в цьому випадку, за даними дослідників, викрадало OIDC-токени GitHub, збирало персональні токени доступу (PAT), шифрувало матеріал за допомогою AES-128-GCM і намагалося поширити бекдор в інші доступні репозиторії. Використання спільних маркерів указує на належність усіх цих інцидентів до єдиного операційного кластера або спільної інструментальної бази.
Розширення на екосистему Go
Компрометація Go-модуля Verana Blockchain означає розширення кампанії за межі npm. Однак, як зазначає Socket, цей зразок не використовує binding.gyp і не спирається на механізми розв’язання модулів чи збирання Go. Натомість загроза реалізується через виконання коду в контексті вихідного репозиторію: розробник, який клонує або відкриває репозиторій у довіреній IDE чи середовищі AI-асистента для програмування, може ненавмисно активувати шкідливе навантаження через конфігурацію проєкту.
Це принциповий зсув у тактиці: Miasma переміщується між екосистемами пакетів, атакуючи робочі процеси розробників, а не лише хуки інсталяції менеджерів пакетів.
Оцінка впливу
Як зазначає JFrog, набір пакетів Leo/RStreams пов’язаний із хмарними та serverless-робочими навантаженнями. Компрометація цих пакетів потенційно зачіпає:
- Робочі станції розробників
- CI/CD-системи та конвеєри розгортання
- Застосунки на базі AWS
- GitHub-репозиторії та облікові дані для публікації пакетів
- Нижчих за ланцюгом споживачів скомпрометованих пакетів
Ключова небезпека кампанії полягає не в радикальній новизні корисного навантаження, а в здатності Shai-Hulud послідовно переходити між легітимними екосистемами пакетів, змінюючи індикатори рівно настільки, щоб зробити застарілі детекції неефективними.
Рекомендації щодо реагування
- Негайна перевірка залежностей: звірте використовувані версії всіх перелічених пакетів із вказаними скомпрометованими версіями. Використовуйте
npm lsабоgo list -m allдля інвентаризації - Ротація секретів: у разі виявлення скомпрометованих версій виконайте ротацію всіх npm-токенів, GitHub PAT, OIDC-токенів, AWS-ключів та інших секретів, доступних із уражених середовищ
- Аудит GitHub Actions: перевірте робочі процеси на наявність workflow з назвою «Run Copilot» або посилань на codfish/semantic-release-action. Зафіксуйте всі використовувані Actions на конкретні хеші комітів замість тегів версій
- Пошук IOC: перевірте журнали на наявність рядків «Alright Lets See If This Works», «RevokeAndItGoesKaboom» і «firedalazer» у мережевому трафіку та конфігураціях репозиторіїв
- Моніторинг binding.gyp: налаштуйте сповіщення в інструментах аналізу залежностей на появу файлів binding.gyp у пакетах, які не є нативними модулями
- Перевірка середовищ IDE: під час роботи з клонованими репозиторіями з неперевірених джерел вимкніть автоматичне виконання конфігураційних скриптів проєкту в IDE та AI-асистентах
Кампанія Shai-Hulud/Miasma демонструє стійку модель самопоширюваної атаки на ланцюг постачання, де кожен скомпрометований акаунт розробника стає вектором для зараження нових екосистем. Пріоритетна дія для команд, які використовують пакети LeoPlatform, RStreams або Verana Blockchain, — негайна фіксація версій залежностей, ротація всіх секретів із потенційно уражених CI/CD-серед і перехід на закріплення GitHub Actions за хешами комітів замість мутабельних тегів.