Компрометація однієї з найпопулярніших JavaScript-бібліотек для HTTP‑запитів Axios продемонструвала, наскільки вразливими залишаються ланцюги постачання ПЗ. За даними Google Threat Intelligence Group, атакою на npm‑пакет скористалася фінансово мотивована північнокорейська група UNC1069, яка цілеспрямовано працює проти криптовалютного сектору та розробників.
Компрометація npm-пакета Axios: що саме сталося
Зловмисники отримали контроль над обліковим записом мейнтейнера в npm і випустили дві троянізовані версії бібліотеки Axios: 1.14.1 та 0.30.4. Вихідний код самого Axios вони не змінювали, натомість додали в залежності новий пакет plain-crypto-js, який і містив шкідливу логіку.
Ключовим елементом стала експлуатація механізму postinstall у файлі package.json шкідливої залежності. Після встановлення скомпрометованої версії Axios клієнт npm автоматично запускає postinstall‑скрипт, що дає змогу непомітно виконати довільний код. Для розробника це виглядає як звичайне оновлення пакета, тоді як у фоновому режимі стартує повноцінний ланцюг зараження.
SILKBELL: прихований дроппер та кросплатформений бекстор
Пакет plain-crypto-js виконував роль транспорту для обфускованого JavaScript‑дроппера SILKBELL (файл setup.js). Після запуску він під’єднувався до віддаленого сервера керування та завантажував наступний етап атаки залежно від ОС цілі.
Для Windows завантажувалася малварь на базі PowerShell, для macOS — скомпільований Mach‑O‑бінарник на C++, для Linux — повноцінний Python‑бектор. Такий підхід забезпечував охоплення більшості типових середовищ розробки й CI/CD‑інфраструктур.
Після успішного виконання завдань дроппер ініціював самоочищення. Зокрема, видаляв власні артефакти й підміняв package.json у plain-crypto-js на «чисту» версію без postinstall-хука. Це різко ускладнює форензичний аналіз: прямі ознаки компрометованої залежності зникають, а ретроспективне розслідування потребує глибокого аналізу логів і артефактів збірок.
UNC1069 та еволюція бекстора WAVESHAPER.V2
Google GTIG спільно з Mandiant оцінили основний бектор, який доставлявся через цю кампанію, як нову версію інструмента WAVESHAPER.V2. Раніше схожий C++‑бектор WAVESHAPER вже пов’язували з операціями UNC1069 проти криптовалютних організацій, а Elastic Security Labs першою відзначила функціональні збіги з попередніми кампаніями.
На думку дослідників, WAVESHAPER.V2 є еволюцією оригінального бекстора: він передає дані у форматі JSON, збирає розширену інформацію про систему та підтримує більший набір команд. Водночас зберігаються характерні риси протоколу керування: опитування C2‑сервера приблизно кожні 60 секунд, динамічне отримання адреси C2 через аргументи командного рядка, використання нетипового User‑Agent та вивантаження додаткових корисних навантажень у схожі тимчасові директорії (наприклад, /Library/Caches/com.apple.act.mond).
Група UNC1069 активна щонайменше з 2018 року та зосереджується на операціях із фінансовою мотивацією, включно з крадіжкою криптовалютних активів. Підготовка окремих шкідливих модулів під три основні платформи свідчить про високий рівень планування та орієнтацію на масове зараження розробницьких середовищ.
Ризики для екосистем npm, PyPI, NuGet та CI/CD
Axios є де-факто стандартом HTTP‑клієнта для JavaScript, тож компрометація його ланцюга постачання потенційно впливає на тисячі CI/CD‑конвеєрів, внутрішніх сервісів і користувацьких застосунків. Аналітики розглядають цю операцію як масштабовану supply chain‑кампанію, а не одноразовий інцидент: швидкий випуск двох заражених гілок релізів (менше ніж за годину), кросплатформені корисні навантаження та вбудовані механізми приховування це підтверджують.
Інцидент логічно продовжує тенденцію зміщення фокусу атакувальників від «кінцевих користувачів» до розробників і DevOps‑команд. Компрометація одного пакета може вплинути на тисячі продуктів, а аналогічні сценарії вже спостерігалися в кейсах event-stream у npm і в атаці на SolarWinds у корпоративному сегменті. Попередження про можливу появу споріднених пакетів у PyPI та NuGet демонструє прагнення зловмисників охопити максимальну кількість мов та екосистем.
Практичні рекомендації: як захистити розробників і організації
1. Провести аудит залежностей і артефактів збірки. Перевірити дерево залежностей на наявність Axios версій 1.14.1 і 0.30.4, а також пакета plain-crypto-js у node_modules. У разі виявлення — негайно перейти на довірені версії та повністю перескласти артефакти.
2. Фіксувати версії та контролювати оновлення. Використовувати package-lock.json та аналогічні lock‑файли для запобігання несанкціонованим оновленням. Розгортати приватні проксі‑репозиторії з політиками довіри та додатковою перевіркою пакетів.
3. Блокувати інфраструктуру зловмисників. Додати до блок‑листів домен sfrclak[.]com і IP‑адресу 142.11.206[.]73, перевірити журнали мережевої активності на запити до цих ресурсів і схожих C2‑патернів.
4. Реагувати на інцидент комплексно. Ізолювати потенційно уражені системи, завершити підозрілі процеси, виконати повне оновлення та перевірку середовищ розробки й CI/CD. Усі облікові дані (токени репозиторіїв, ключі CI, паролі до реєстрів пакетів тощо), які могли бути доступні з інфікованих машин, слід вважати скомпрометованими та негайно ротувати.
5. Посилити процеси безпеки розробки. Впровадити регулярний аналіз залежностей (SCA), формування й перевірку SBOM, обов’язкову багатофакторну автентифікацію для акаунтів у npm, PyPI, NuGet та Git‑репозиторіях. Мінімізувати права технічних облікових записів і автоматизованих агентів.
Інцидент із Axios показує, що навіть зрілі та широко використовувані open source‑проєкти залишаються привабливою ціллю для цілеспрямованих supply chain‑атак. Щоб знизити ризики, організаціям варто розглядати безпеку ланцюга постачання ПЗ як ключовий елемент стратегії кібербезпеки: захищати облікові записи мейнтейнерів, впроваджувати моніторинг залежностей, регулярно переглядати DevSecOps‑процеси та навчати команди працювати з ризиками ланцюга постачання. Чим раніше в життєвому циклі розробки виявляються подібні загрози, тим менше шансів, що одиничний пакет перетвориться на точку входу для масштабної компрометації бізнесу.