Уязвимость в популярной библиотеке Axios: атака на цепочку поставок привела к установке трояна на миллионы систем

information security

Инцидент с компрометацией библиотеки Axios, одного из самых популярных инструментов для выполнения HTTP-запросов в экосистеме Node.js, вновь демонстрирует разрушительный потенциал атак на цепочку поставок программного обеспечения. Вместо того чтобы атаковать каждую организацию по отдельности, злоумышленники скомпрометировали учётную запись одного из основных разработчиков и внедрили вредоносный код в официальные обновления пакета. В результате рутинный процесс обновления зависимостей автоматически превратился в механизм доставки трояна удалённого доступа (RAT) на тысячи, если не миллионы, систем по всему миру. Этот случай, произошедший в конце марта 2026 года, подчёркивает критическую уязвимость современной модели разработки, построенной на доверии к открытым исходным кодам и автоматическим обновлениям.

Описание

Атака была осуществлена 31 марта 2026 года, когда в официальный реестр npm были опубликованы скомпрометированные версии пакета Axios: 1.14.1 и 0.30.4. Они оставались доступны для загрузки примерно три часа - с 00:21 до 03:15-03:20 по всемирному координированному времени (UTC), после чего были удалены. За этот короткий промежуток времени любая система, выполнившая чистую установку или обновление до этих версий, могла быть заражена. Библиотека Axios является фундаментальным строительным блоком для веб-разработки на JavaScript и TypeScript, её еженедельное количество загрузок превышает 100 миллионов. Такая широта распространения делает её идеальной мишенью для атакующих, стремящихся максимизировать воздействие при минимальных усилиях.

Расследование показало, что накануне, 30 марта, была скомпрометирована учётная запись одного из сопровождающих проекта под именем "jasonsaayman". Метаданные реестра npm свидетельствуют о том, что адрес электронной почты, связанный со злонамеренными релизами, изменился с оригинального на контролируемый злоумышленником. Это классический признак захвата учётной записи. Используя полученный доступ, атакующие модифицировали пакет, добавив в его зависимости вредоносную библиотеку "plain-crypto-js". Версия 4.2.0 этого пакета, по всей видимости, служила чистым заполнителем для создания истории версий, тогда как версия 4.2.1 содержала непосредственно вредоносный код.

Механизм атаки был выстроен многоступенчато. Скомпрометированные версии Axios загружали пакет "plain-crypto-js", который, в свою очередь, скачивал и исполнял обфусцированный JavaScript-файл с именем "setup.js". Этот скрипт выполнял первоначальную разведку, определяя операционную систему жертвы (Windows, macOS или Linux), после чего загружал соответствующий второстепенный payload - троян удалённого доступа. Все коммуникации осуществлялись с управляемого атакующими сервера командования и управления по адресу "sfrclak[.]com". Стоит отметить, что код скрипта "setup.js" был серьёзно обфусцирован с использованием обратного порядка текста, кодирования base64 и XOR-операций, что затрудняло его статический анализ.

Поведение финального вредоносного payload различалось в зависимости от операционной системы, но общая логика оставалась схожей. Троян собирал системную информацию: имя хоста, пользователя, версию ОС и данные о модели, после чего отправлял их на сервер C2. В ответ он мог получать команды для выполнения. Функционал включал выполнение произвольных скриптов, рекурсивное перечисление содержимого каталогов и завершение работы. Ключевое различие наблюдалось в механизме закрепления в системе (persistence). Если в Linux-версии такая функция отсутствовала, то Windows-троян прописывал себя в автозагрузку через реестр, создавая ключ "MicrosoftUpdate" в ветке "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Run". Версия для macOS представляла собой бинарный файл Mach-O, поддерживающий архитектуры ARM и x86, и также была лишена сложной обфускации.

Анализ кода выявил признаки небрежности и незавершённости разработки со стороны атакующих. Например, в Linux-версии одна из функций, предназначенная для инъекции кода ("peinject"), содержала ошибки и была неработоспособна, что может указывать на поспешность подготовки атаки. Однако это не умаляет её опасности: рабочие функции для выполнения команд и сбора данных файловой системы функционировали корректно, предоставляя злоумышленникам значительный контроль над скомпрометированной системой.

Для организаций, которые могли пострадать в ходе этого инцидента, критически важно провести проверку. В первую очередь необходимо убедиться, что в проектах используются безопасные версии Axios - 1.14.0 для основной ветки и 0.30.3 для legacy-ветки. Следует тщательно изучить файлы блокировок зависимостей ("package-lock.json", "yarn.lock", "pnpm-lock.yaml") на наличие ссылок на версии 1.14.1, 0.30.4, а также на пакеты "plain-crypto-js" версий 4.2.0 или 4.2.1. Любое их присутствие должно трактоваться как признак потенциальной компрометации системы. В таком случае необходимо изолировать систему, провести глубокий аудит на предмет наличия следов деятельности злоумышленников, заблокировать исходящие соединения на адрес C2-сервера и сменить все учётные данные, которые могли быть скомпрометированы.

Инцидент с Axios - это наглядный урок о необходимости пересмотра подхода к безопасности цепочки поставок. Слепое доверие к автоматическим обновлениям из открытых репозиториев создаёт колоссальные риски. Организациям стоит рассмотреть внедрение практик, минимизирующих эти угрозы. Среди них - принцип наименьших привилегий для выполнения скриптов, тщательная валидация обновлений в изолированных средах перед их развёртыванием в production, а также постоянный мониторинг сетевой активности на предмет аномальных исходящих соединений. Только переход от модели неявного доверия к постоянной верификации каждого компонента программного обеспечения может создать эффективный барьер против подобных изощрённых атак, которые используют саму инфраструктуру современной разработки против её пользователей.

Индикаторы компрометации

URLs

  • http://sfrclak.com

SHA256

  • 617b67a8e1210e4fc87c92d1d1da45a2f311c08d26e89b12307cf583c900d101
  • 6483c004e207137385f480909d6edecf1b699087378aa91745ecba7c3394f9d7
  • 92ff08773995ebc8d55ec4b8e1a225d0d1e51efa4ef88b8849d0071230c9645a
  • f7d335205b8d7b20208fb3ef93ee6dc817905dc3ae0c10a0b164f4e7d07121cd
  • f7ed242667045390cef626f8ba128066c677db09f95c3e223161ccb05636ff88
  • fcb81618bb15edfdedfb638b4c08a2af9cac9ecfa551af135a8402bf980375cf
Комментарии: 0