
Дослідницька установа з безпеки Socket 31 березня виявила активну атаки на ланцюжок постачання на ядровий пакет npm axios. Зловмисник зламав npm-акаунт головного супровідника axios jasonsaayman, опублікував шкідливі версії та ін’єктував шкідливі залежності, щоб розгорнути кросплатформенний бекдор для віддаленого доступу (RAT). Цільові системи: macOS, Windows і Linux.
(Джерело: Socket)
Ця подія є ретельно спланованою багатокроковою атакою на ланцюжок постачання. Зловмисник спершу зламав акаунт супровідника, змінив електронну пошту на ifstap@proton.me, а потім, використовуючи вкрадені облікові дані доступу npm, вручну опублікував шкідливі версії, повністю обходячи офіційний процес публікації axios через GitHub Actions + OIDC Trusted Publisher. Дві шкідливі версії не містили відповідних комітів, міток або записів про реліз у GitHub-репозиторії.
Підготовка зловмисника також була ретельною: контроль за іншим акаунтом (nrwise, nrwise@proton.me) приблизно за 18 годин до того дозволив спершу опублікувати чисту приманку plain-crypto-js@4.2.0 для створення історії, а потім 30 березня о 23:59 UTC опублікувати шкідливу версію 4.2.1.
Після виконання шкідливого postinstall hook розгортальник RAT (setup.js) підключився до командно-контрольного сервера sfrclak[.]com:8000, щоб завантажити платформозалежні корисні навантаження. Після завершення розгортальник самоусунувся та замінив package.json на чистий підставний файл (stubs), через що під час подальшої перевірки у директорії node_modules неможливо виявити сліди зараження.
Версії шкідливих пакетів: axios@1.14.1, axios@0.30.4, plain-crypto-js@4.2.1
C2-сервер: sfrclak[.]com / 142.11.206.73 / [.]com:8000
Сліди зараження на macOS: /Library/Caches/com.apple.act.mond
Сліди зараження на Windows: %PROGRAMDATA%\wt.exe, %TEMP%\6202033.vbs
Сліди зараження на Linux: /tmp/ld.py
Акаунт зловмисника: jasonsaayman (зламано), nrwise (акаунт, створений атакувальником)
Оскільки розгортальник, що здійснював ін’єкцію, після виконання самознищується, неможливо підтвердити зараження шляхом перевірки директорії node_modules. Правильний підхід — безпосередньо перевірити lockfile (package-lock.json або yarn.lock) на наявність записів версій axios@1.14.1 або axios@0.30.4.
Відкат безпечної версії: користувачам 1.x знизити версію до axios@1.14.0; користувачам 0.x — до axios@0.30.3, а також після видалення каталогу plain-crypto-js з node_modules повторно встановити залежності.
Якщо в системі буде виявлено будь-які сліди зараження RAT (com.apple.act.mond, wt.exe, ld.py), не намагайтеся видалити їх «на місці». Потрібно відновити систему з відомого нормального стану та негайно зробити ротацію всіх можливих компрометованих облікових даних, включно з токенами npm, AWS access key, SSH private key, ключами конфігурації CI/CD та значеннями у файлах .env.
Для розробників у сфері криптовалют і Web3 axios є ключовою HTTP-бібліотекою для багатьох DeFi-протоколів, фронтендів, інструментів керування криптоактивами та сервісів запитів ончейн-даних. Компрометоване середовище розробки може призвести до витоку приватних ключів гаманця, seed-фраз (мнемонік) або API-ключів для атакувальника. Рекомендовано першочергово переглянути та зробити ротацію всіх чутливих облікових даних.
Оскільки розгортальник, що здійснював ін’єкцію, після виконання самознищується, неможливо підтвердити зараження шляхом перевірки директорії node_modules. Слід безпосередньо перевірити lockfile на наявність записів axios@1.14.1 або axios@0.30.4 і перевірити, чи існує в node_modules каталог plain-crypto-js. Можна виконати npm list axios або напряму здійснити пошук рядків версій у lockfile.
axios — поширена HTTP-бібліотека для Web3-фронтендів і інтерфейсів DeFi-протоколів. Компрометоване середовище розробки може розкрити атакувальнику чутливі облікові дані, зокрема приватні ключі, seed-фрази, API-ключі бірж або ключі конфігурації CI/CD. Відповідним розробникам слід першочергово виконати аудит і ротацію всіх крипто-залежних облікових даних, які могли бути скомпрометовані.
Основні запобіжні заходи включають: у CI/CD завжди використовувати npm ci --ignore-scripts, щоб вимкнути postinstall hook; фіксувати версії для критично важливих пакетів залежностей; регулярно переглядати журнали змін lockfile; а також розгортати інструменти Socket, Aikido тощо для моніторингу в реальному часі залежностей на предмет шкідливого ПЗ.