
В экосистеме JavaScript произошёл серьёзный инцидент, который хорошо показывает, насколько опасными стали атаки на open source и цепочки поставок. Исследователи StepSecurity сообщили о компрометации axios — одной из самых популярных HTTP-библиотек в npm (~83 миллионов загрузок в неделю). Злоумышленник получил доступ к аккаунту одного из ведущих мейнтейнеров проекта и опубликовал две вредоносные версии пакета: axios@1.14.1 и axios@0.30.4.
На первый взгляд это выглядит как обычное обновление зависимости. Но на деле установка этих версий могла привести к заражению системы трояном удалённого доступа.
Что произошло
По данным исследователей, атака не была связана со взломом самого GitHub-репозитория или обходом стандартного CI/CD через GitHub Actions. Сценарий оказался проще и опаснее: атакующий скомпрометировал учётную запись сопровождающего, сменил привязанный email на ProtonMail и вручную опубликовал заражённые сборки через npm CLI.
Именно поэтому привычные защитные механизмы публикации фактически не сработали. Если у злоумышленника есть права мейнтейнера, он может доставить вредоносный код так, будто это обычный релиз от доверенного участника проекта.
Почему это опасно
Главная проблема в том, что axios — это массовая зависимость. Её используют не только в пользовательских проектах, но и во внутренних сервисах, backend-приложениях, скриптах автоматизации и CI/CD-конвейерах.
Это значит, что вредоносная версия могла попасть:
на рабочие станции разработчиков;
на серверы сборки;
в тестовые и production-пайплайны;
в инфраструктуру, где хранятся токены, ключи и другие секреты.
Если заражённый пакет устанавливался в CI, последствия могут быть особенно тяжёлыми: утечка переменных окружения, токенов доступа к GitHub, npm, облакам, Docker Registry и другим внутренним системам.
Как был встроен вредонос
В заражённые версии axios добавили зависимость plain-crypto-js@4.2.1. Примечательно, что самой библиотеке axios она фактически не нужна и по прямому назначению не используется. Её задача была другой — запустить postinstall-скрипт после установки пакета.
Именно этот скрипт и выступает как дроппер вредоносной нагрузки. После установки он связывается с управляющим сервером sfrclak.com (142.11.206.73) и начинает загрузку второй стадию скрипта в зависимости от операционной системы.
Под удар попали сразу три платформы:
macOS
Windows
Linux
Что делает троян
После запуска вредоносный код не просто подгружает полезную нагрузку, но и пытается скрыть факт своего присутствия. По данным исследователей, он удаляет следы своей активности и подменяет package.json на чистую версию, чтобы усложнить анализ и поиск источника утечки.
Позже Socket AI подтвердил, что plain-crypto-js — это обфусцированный дроппер и лоадер, использующий вполне зрелые техники маскировки:
деобфускацию кода только во время выполнения;
динамическую загрузку модулей вроде
fs,osиexecSync;выполнение shell-команд на хосте;
размещение файлов во временных каталогах и в
ProgramDataна Windows;удаление или переименование собственных артефактов после запуска.
Иными словами, это был не «сломанный пакет», а полноценный вредоносный механизм доставки.
Индикаторы компрометации
Исследователи рекомендуют обращать внимание на следующие признаки:
Пакеты:
axios@1.14.1
axios@0.30.4
plain-crypto-js@4.2.1
Сетевая активность:
sfrclak.com142.11.206.73
Файлы на хостах:
macOS:
/Library/Caches/com.apple.act.mondWindows:
%PROGRAMDATA%\wt.exeLinux:
/tmp/ld.py
Если одна из этих версий axios была установлена, систему рекомендуется считать потенциально скомпрометированной.
Что делать прямо сейчас
Минимальный набор действий выглядит так:
проверить, использовались ли
axios@1.14.1илиaxios@0.30.4;откатиться на безопасные версии:
axios@1.14.0илиaxios@0.30.3;проверить lock-файлы, историю сборок и логи установок;
искать исходящие подключения к
sfrclak.comи142.11.206.73;просканировать машины на наличие известных файлов-индикаторов;
провести ротацию токенов, API-ключей, паролей и других секретов, если заражённая версия хотя бы раз устанавливалась.
Для CI/CD также советуют использовать флаг при установке:
npm install --ignore-scripts
Это не универсальная защита, но она помогает блокировать запуск вредоносных postinstall-скриптов в сборочной среде.
Вывод
История с axios важна не только потому, что была скомпрометирована одна из самых популярных библиотек JavaScript. Этот инцидент показывает более широкую проблему: даже если у open source-проекта есть нормальные пайплайны и базовые меры защиты, компрометация аккаунта мейнтейнера может обойти эти механизмы и превратить обычное обновление зависимости в канал доставки вредоносного кода.
Опасность здесь не ограничивается только пользователями самой библиотеки. Поскольку axios используется в огромном числе приложений, внутренних сервисов, инструментов автоматизации и CI/CD-сред, одна такая публикация потенциально затрагивает тысячи проектов и компаний. По сути, это атака не только на конкретный пакет, а на всю модель доверия внутри npm-экосистемы.
Именно поэтому, если в вашей инфраструктуре хотя бы теоретически могли появиться axios@1.14.1 или axios@0.30.4, относиться к ситуации нужно как к полноценному инциденту ИБ. Простого отката версии недостаточно: необходимо проверять системы, сетевую активность, артефакты заражения и все секреты, к которым могли иметь доступ потенциально скомпрометированные машины. В случае supply chain-атак главный риск — не только сам вредоносный пакет, а то, насколько глубоко он успевает зайти в доверенную среду разработки.
НЛО прилетело и оставило здесь промокод для читателей нашего блога:
-15% на заказ любого VDS (кроме тарифа Прогрев) — HABRFIRSTVDS.
