Атака на Axios: как через скомпрометированный npm-аккаунт раздавали троян на три платформы сразу

Axios — один из самых популярных JavaScript-пакетов для HTTP-запросов, его скачивают больше 83 миллионов раз в неделю. 31 марта 2026 года через него начали распространять кроссплатформенный троян удалённого доступа. Атака была проведена через цепочку поставок: злоумышленник скомпрометировал npm-аккаунт основного мейнтейнера проекта и внедрил вредоносную зависимость в две ветки релизов.
Атака на Axios: как через скомпрометированный npm-аккаунт раздавали троян на три платформы сразу
Изображение носит иллюстративный характер

Скомпрометированными оказались версии Axios 1.14.1 и 0.30.4. Атакующий получил доступ к учётной записи "jasonsaayman" — главного мейнтейнера Axios на npm. По всей видимости, был украден долгоживущий классический токен доступа npm. Почта аккаунта была изменена на адрес Proton Mail, контролируемый злоумышленником. Публикация заражённых версий шла напрямую через npm, полностью обходя CI/CD-пайплайн проекта на GitHub Actions. То есть код вообще не проходил через обычный процесс сборки и проверки.
Вредоносный код при этом не затронул исходники самого Axios. Вместо этого в runtime-зависимости пакета была добавлена библиотека "plain-crypto-js" версии 4.2.1, опубликованная с аккаунта "nrwise". Именно внутри этой фейковой библиотеки был спрятан обфусцированный Node.js-дроппер под названием "setup.js", запускавшийся через postinstall-скрипт. Схема была выстроена аккуратно: за 18 часов до основной атаки подготовили саму вредоносную зависимость, 30 марта 2026 года в 23:59 UTC опубликовали обновлённую версию "plain-crypto-js" с полезной нагрузкой, а 31 марта в 00:21 UTC уже вышла заражённая версия Axios. Вторая скомпрометированная версия появилась в 01:00 UTC. Обе ветки релизов были поражены в окне длиной 39 минут.
После установки дроппер обращался к серверу управления на домене sfrclak[.]com (порт 8000) и в зависимости от операционной системы выбирал одну из трёх веток атаки. На macOS запускался AppleScript, который загружал бинарный RAT на C++, сохранял его по пути /Library/Caches/com.apple.act.mond, делал исполняемым и запускал в фоне через /bin/zsh. После этого сам AppleScript удалялся. URL для получения нагрузки маскировался как . Троян снимал «отпечатки» системы, связывался с командным сервером каждые 60 секунд, мог запускать произвольные команды и шелл, обходить файловую систему и самоуничтожаться.
Для Windows схема была другой. Дроппер находил путь к PowerShell, записывал VBScript во временную директорию и использовал его для загрузки PowerShell-трояна. RAT сохранялся как %PROGRAMDATA%\wt.exe, маскируясь под приложение Windows Terminal. URL нагрузки — . На Linux и прочих системах через execSync запускалась shell-команда, скачивавшая Python-скрипт RAT в /tmp/ld.py и запускавшая его в фоне через nohup. Адрес загрузки — .
Отдельного внимания заслуживает механизм самоочистки. Малварь проходила три шага: удаляла postinstall-скрипт из директории установленного пакета, стирала вредоносный package.json с упоминанием postinstall-хука, а затем переименовывала чистый файл "package.md" (заранее включённый в plain-crypto-js) в "package.json". Если кто-то потом заглядывал в node_modules, следов заражения уже не было видно.
Исследователи из StepSecurity и лично Ашиш Курми обнаружили и описали атаку. Компания Socket параллельно выявила ещё два пакета, распространявших тот же самый малварь. Пакет @shadanai/openclaw в версиях 2026.3.28-2, 2026.3.28-3, 2026.3.31-1 и 2026.3.31-2 содержал "plain-crypto-js", спрятанный глубоко в вендорных зависимостях. А пакет @qqbrowser/openclaw-qbot версии 0.0.130 поставлялся с уже модифицированной версией Axios прямо внутри своих node_modules.
Что делать тем, кого это коснулось? Первым делом — ротация всех секретов и учётных данных. Axios нужно откатить на версию 1.14.0 или 0.30.3. Пакет "plain-crypto-js" надо вычистить из node_modules вручную. На сетевом уровне стоит заблокировать исходящий трафик к домену sfrclak[.]com. Необходимо проверить логи CI/CD на предмет сборок, которые устанавливали заражённые версии.
И, наконец, нужно поискать на серверах и рабочих машинах артефакты: /Library/Caches/com.apple.act.mond на macOS, %PROGRAMDATA%\wt.exe на Windows, /tmp/ld.py на Linux. Если что-то из этого найдено — систему следует считать полностью скомпрометированной. Не «возможно скомпрометированной», а именно полностью. Со всеми вытекающими из этого мерами реагирования.


Новое на сайте

20327Кости прерий: как истребление бизонов породило целую индустрию — и сама себя же уничтожила 20326Кто и зачем взламывает серверы Ollama и ComfyUI ради ключей от AWS? 20325Как злоумышленники спрятали командный сервер внутри блокчейна и почему его невозможно... 20324Брюссель заставляет Android делиться секретами с чужими ИИ-помощниками 20323WordPress: как два бага слились в одну критическую дыру, которую назвали wp2shell 20322Как китайские хакеры обманули DigiCert и украли сертификаты для подписи кода? 20321Что скрывается за уязвимостью, которую агентство США внесло в список активно используемых... 20320Автономные системы наступают быстрее, чем инфраструктура для управления ими: кто выиграет... 20319Почему в OpenSSL нашли дыру, съедающую память серверов, но не дали ей даже номер CVE? 20317SonicWall SMA 1000: как два бага превратили VPN-шлюз в бэкдор для атакующих 20316Может ли уязвимость в клиенте Zoom для Windows открыть доступ к чужому аккаунту без... 20315TELEPUZ: новый вредонос на C, который научился прятаться в Telegram, Steam и блокчейне... 20314Дома из дёрна: как исландцы триста лет прятались от холода под слоем земли и травы 20313Как один токен от чужого сервиса мог впустить злоумышленника в чужой аккаунт n8n?
Ссылка