TGViewer
Феня в Сербии Феня в Сербии @infinityproductive · 834 subscribers
Post #538 1.39K
Axios скомпрометирован: троян удаленного доступа через npm

Я давно не про фронтенд канал веду, но эта штука касается всех, кто хоть раз писал npm install - а значит, практически каждого разработчика.

Что произошло

Вчера, 30 марта, злоумышленники угнали npm-аккаунт ведущего мейнтейнера axios (jasonsaayman) и залили две вредоносные версии: 1.14.1 и 0.30.4. Axios - самый популярный HTTP-клиент в JS, ~100 млн скачиваний в неделю, стоит примерно в 80% облачных окружений.

Как это работало

Ни одна строка кода axios не была изменена. В package.json тихо добавили зависимость plain-crypto-js@4.2.1, которая нигде в коде не импортируется. Вся ее задача - выполнить postinstall-скрипт, который за 2 секунды разворачивает кроссплатформенный RAT-дроппер под macOS, Windows и Linux. Еще до того, как npm закончит резолвить остальные зависимости, малварь уже стучится на C2-сервер.

Публикация обошла штатный CI/CD: атакующий подменил email мейнтейнера на proton.me и залил пакет напрямую через npm CLI украденным токеном. Ни коммита, ни тега в репозитории. Если смотреть на GitHub - ничего не видно, вредоносные версии существовали только в npm-реестре.

Хронология (UTC, 30-31 марта)

05:57 - публикация "чистого" plain-crypto-js@4.2.0 (создание видимости легитимности)
23:59 - выход 4.2.1 с payload
00:21 - axios@1.14.1
01:00 - axios@0.30.4
~03:29 - вредоносные версии удалены

Окно экспозиции - около 3 часов.

Что делает RAT

На каждом зараженном хосте - моментальная разведка: перечисление директорий, корней файловой системы, запущенных процессов. Все улетает на C2. Маяк каждые 60 секунд, готовность принимать команды: выполнение скриптов, инъекция бинарников в память, листинг файлов. На Windows дополнительно прописывается в автозагрузку через реестр и переживает ребут.

После запуска дроппер удаляет себя и подменяет свой package.json на чистую заглушку с версией 4.2.0. Следов почти не остается.

Что делать прямо сейчас

1. Проверить: ls node_modules/plain-crypto-js - если директория есть, дроппер был запущен
2. Откатиться на axios@1.14.0 или 0.30.3
3. Если затронуты - ротировать ВСЕ секреты: SSH-ключи, API-токены, облачные креды, npm-токены. Не in place, а revoke и перевыпуск
4. Не пытаться "чистить" машину - пересобирать с чистого снэпшота
5. Проверить логи CI/CD на соединения к sfrclak[.]com / 142.11.206.73

Главный вывод

npm-реестр принимает валидный токен как единственную границу аутентификации для публикации. Токен украден - все, никакие подписанные коммиты, branch protection и код-ревью не помогут. Пакет выходит от имени настоящего мейнтейнера и выглядит легитимно.

Pin-версии, npm ci --ignore-scripts в CI, проверка OIDC provenance у критичных зависимостей - это уже не опциональная гигиена, а необходимость.

Источники: StepSecurity (первооткрыватели), Huntress, Snyk, Wiz, GitHub Issue #10604
www.stepsecurity.io axios Compromised on npm - Malicious Versions Drop Remote Access Trojan - StepSecurity Hijacked maintainer account used to publish poisoned axios releases including 1.14.1 and 0.30.4. The attacker injected a hidden dependency that drops a cross platform RAT. We are actively investigating and will update this post with a full technical analysis.
  • 😱 9
  • ❤ 2
  • 🤝 2
More from @infinityproductive
  1. Sep 24, 2026https://music.yandex.ru/album/19760408/track/153316438?ref_id=3572C018-7A78-4B64-A64A-BBD2…
  2. Sep 17, 2026upd: Личный счет теперь тоже открыт, можно подаваться на ВНЖ 😃
  3. Sep 17, 2026Теперь мы сербские предприниматели 💪
  4. Sep 11, 2026Так, так вот и отпуск подошел к концу, но мы все еще остаемся в Белграде 😅 Уже несколько…
  5. Sep 8, 2026Сегодня Гугл карты захотели, чтоб я добирался домой вплавь, там нет моста… А я подумал и р…
  6. Sep 3, 2026Post #560
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →