💣 npm как C2: история с axios
В конце марта исследователи обратили внимание на подозрительную активность в npm-пакетах, связанных с экосистемой axios. Сначала это выглядело как обычный случай вредоносной зависимости, но при разборе выяснилось, что речь идёт о полноценной supply chain атаке с бэкдором и удалённым управлением.
Сразу отметим, что axios не был скомпрометирован. Атаку провели через сторонние пакеты, которые маскировались под легитимные модули и попадали в dependency tree.
🧬 Как происходит заражение
Вредоносный пакет выглядит как обычная зависимость без явных признаков компрометации. Он спокойно устанавливается через npm и активируется на этапе npm install.
Ключевой механизм lifecycle-скрипты (например, postinstall). Именно они позволяют выполнить код ещё до запуска приложения.
В этот момент:
➖подтягивается внешний payload или активируется встроенный
➖происходит первичная инициализация бэкдора
➖устанавливается канал связи с управляющим сервером
⚙️ Что делает бэкдор
После активации пакет начинает работать как скрытый агент:
➖собирает информацию об окружении (OS, переменные, пути, токены)
➖устанавливает исходящее соединение с C2
➖загружает и исполняет дополнительный код
При этом он работает в контексте текущего процесса, т.е. получает доступ ко всему, к чему есть доступ у сборки или разработчика.
🌐 Почти незаметно
Вредоносный код:
➖обфусцирован
➖маскирует сетевую активность
➖может быть разбит на части
Дополнительно, транзитивные зависимости, пакет может попасть в проект вообще без прямого подключения.
В итоге обнаружение становятся не самой тривиальной задачей.
🛡 Как от этого защищаются
После выявления атаки основной фокус должен сместиться на контроль этапа установки зависимостей.
Во-первых, нужно жёстко ограничивать выполнение lifecycle-скриптов. В прод- и CI-средах стоит использовать установку с отключёнными скриптами (--ignore-scripts) и разрешать их только для проверенных пакетов.
Во-вторых, необходимо усилить контроль над зависимостями. Фиксация версий через lock-файлы, аудит новых пакетов и отказ от «автоматических» обновлений должен быть базовой практикой, а не рекомендацией.
Отдельное внимание стоит уделять изоляции CI. Сборки нужно запускать в средах с минимальными правами и без прямого доступа к секретам.
Даже если вредоносный код выполнится, он не должен получить ничего критичного.
📄 Разбор атаки:
https://opensourcemalware.com/blog/axios-compromised
Stay secure and read SecureTechTalks 📚
#cybersecurity #infosec #supplychain #npm #javascript #appsec #devsecops #malware #hacking #axios
Post #738
187

- 👍 1