Содержание
Axios в npm на короткое время раздавал вредоносные релизы: злоумышленник взломал аккаунт мейнтейнера и опубликовал axios@1.14.1 и axios@0.30.4. По разбору StepSecurity, эти версии подтягивали скрытую зависимость, которая ставила кроссплатформенный RAT на macOS, Windows и Linux.
Масштаб неприятный: Axios скачивают около 100 млн раз в неделю. Атакующий закрыл сразу два мира — актуальную ветку 1.x и легаси 0.x.
Как атаковали Axios: две ветки за 39 минут
StepSecurity пишет, что злоумышленник скомпрометировал npm-аккаунт ведущего мейнтейнера Axios jasonsaayman 30 марта. Дальше он опубликовал два релиза в основную библиотеку: 31 марта в 00:21 UTC вышел axios@1.14.1, а в 01:00 UTC — axios@0.30.4. Между ними прошло 39 минут.
Эти версии не совпали с обычным процессом релизов. StepSecurity отмечает, что вредоносные релизы не появились в тегах GitHub-репозитория Axios. Это намекает, что публикация шла напрямую в npm, мимо нормального CI/CD.
Окно атаки оказалось коротким. Вредоносные версии прожили примерно 2-3 часа, после чего npm их убрал. Пакет plain-crypto-js дополнительно поставили на security hold.
Что именно добавили в пакет и почему это трудно заметить
В обоих релизах Axios добавили ровно одну новую зависимость: plain-crypto-js@4.2.1. Это троян, замаскированный под легитимный crypto-js. Важно, что в исходниках Axios эту зависимость не импортировали и не вызывали — она жила своей жизнью через postinstall.
Ее задача — отработать скрипт установки. Он стучался на C2 по домену sfrclak.com, скачивал платформенный payload и затем вычищал следы.
По runtime-анализу StepSecurity, первый исходящий запрос к C2 происходил через 1,1 секунды после старта npm install. То есть у разработчика почти нет шанса заметить что-то по поведению системы до выполнения.

Куда RAT писал себя на macOS, Windows и Linux
StepSecurity описывает разные пути и техники под каждую ОС. Смысл один: спрятать бинарник или скрипт там, где он выглядит правдоподобно.
- macOS: бинарник писали в /Library/Caches/com.apple.act.mond, маскируя под системный процесс Apple.
- Windows: вредонос копировал PowerShell в %PROGRAMDATA%\wt.exe и запускал скрытый скрипт.
- Linux: скачивал Python-RAT в /tmp/ld.py.
Дальше включалась часть, которая усложняет расследование. Скрипт setup.js удалял себя, удалял package.json с postinstall-хуком и подменял его на заранее подготовленную чистую заглушку с другим номером версии. Если вы потом посмотрите папку в node_modules, там может не быть ничего подозрительного.
Что известно про подготовку: сначала «чистая» история, потом payload
Атака выглядела подготовленной. StepSecurity указывает, что злоумышленник сначала опубликовал «чистую» приманку plain-crypto-js 30 марта в 05:57 UTC, чтобы создать историю публикаций. А уже затем, в 23:59 UTC, вышла версия с вредоносной нагрузкой.
После этого и пошли два релиза Axios, которые подтянули зависимость-троян.
Реакция экосистемы и статус инцидента
По уведомлениям от StepSecurity, а также рекомендациям от Snyk, Wiz и Vercel, машины, где успел выполниться вредоносный пакет, предлагают считать полностью скомпрометированными. Отдельно подчеркивают ротацию всех учетных данных, которые могли оказаться на этой машине.
Трекер инцидента завели в GitHub как axios/axios#10604.
Подробный технический разбор StepSecurity опубликован отдельно: Axios compromised on npm: malicious versions drop RAT.