В экосистеме JavaScript произошло одно из наиболее тревожных событий последнего времени - успешная атака на цепочку поставок, нацеленная на крайне популярную библиотеку Axios. Вредоносные версии пакетов, внедрённые в официальный реестр npm, содержат скрытую зависимость, развёртывающую многоступенчатый троянец удалённого доступа (RAT). Учитывая, что Axios является де-факто стандартом для выполнения HTTP-запросов с еженедельной загрузкой около 100 миллионов раз, потенциальный масштаб заражения может быть колоссальным, затрагивая фронтенд, бэкенд и корпоративные приложения по всему миру.
Описание
Атака была выявлена специалистами компании Socket, чей автоматический сканер обнаружил подозрительную активность. Инцидент начался с публикации в реестре npm двух скомпрометированных версий Axios: "axios@1.14.1" и "axios@0.30.4". Эти релизы отсутствуют в официальном репозитории проекта на GitHub, что сразу указывает на публикацию вне стандартного рабочего процесса. Обычно команда разработчиков Axios сопровождает выпуск в npm соответствующим тегом в GitHub, однако последним видимым тегом остаётся "v1.14.0". Данное несоответствие стало первым сигналом о возможной компрометации аккаунта или токена публикации.
Основным вектором атаки стало добавление в файл зависимостей Axios вредоносного пакета "plain-crypto-js@4.2.1". Этот пакет был опубликован за считанные минуты до скомпрометированных версий Axios, что свидетельствует о скоординированных действиях злоумышленников. Любой проект, использующий в качестве зависимости Axios с диапазоном версий, например, "^1.14.0" или "^0.30.0", при следующей установке пакетов через "npm install" автоматически получит заражённую версию. Такой подход, заключающийся в минимальном изменении популярного пакета для внедрения вредоносной транзитивной зависимости, является классической тактикой атак на цепочку поставок, поскольку второстепенные зависимости часто подвергаются менее тщательной проверке.
Внутренний механизм атаки демонстрирует высокий уровень изощрённости. Вредоносный код активируется через стандартный механизм "postinstall" в npm - хук, который выполняется автоматически после установки пакета. Основной скрипт "setup.js" использует двухслойную схему обфускации, специально разработанную для уклонения от статического анализа и сигнатурных систем обнаружения. Первый слой представляет собой строку в обратном порядке Base64, а второй - шифр XOR с динамическим ключом. Таким способом скрыты все критически важные элементы: имена модулей, URL-адрес командного сервера (C2), команды оболочки и пути к файлам.
После расшифровки и выполнения скрипт определяет операционную систему жертвы и загружает платформозависимую полезную нагрузку. Для macOS это бинарный файл, маскирующийся под системный демон Apple, для Windows - скрипт PowerShell, запускаемый через переименованный исполняемый файл для обхода систем защиты (EDR), а для Linux - Python-скрипт. Все пути ведут на один командный сервер "sfrclak[.]com:8000". Особенно примечательна реализация RAT для macOS, детально проанализированная экспертами. Этот троянец, написанный на C++, обладает широким функционалом: от сбора системной информации и периодического оповещения C2 до выполнения произвольных команд, внедрения дополнительных бинарных файлов и инвентаризации файловой системы.
Что делает эту атаку особенно коварной, так это встроенные механизмы анти-криминалистики. После успешного выполнения полезной нагрузки скрипт проводит самоочистку: удаляет сам файл "setup.js", удаляет скомпрометированный "package.json", содержащий хук "postinstall", и заменяет его на чистую версию из файла "package.md". В результате каталог "node_modules" выглядит как легитимная установка библиотеки "crypto-js", не оставляя очевидных следов вмешательства.
Последствия инцидента выходят за рамки самого Axios. Сканеры обнаружили, что вредоносная зависимость уже проникла в другие пакеты, такие как "@shadanai/openclaw" и "@qqbrowser/openclaw-qbot@0.0.130", через транзитивные зависимости или прямое внедрение. Это наглядно демонстрирует, как одна скомпрометированная зависимость может каскадом распространиться по всей экосистеме за считанные часы, особенно в условиях автоматизированных процессов сборки. На момент публикации новости не обнаружено связи этой активности с ранее известными кампаниями группы TeamPCP.
Команда поддержки Axios публично заявила, что работает над восстановлением контроля и выяснением причин компрометации. Предварительное обсуждение указывает на возможные уязвимости в процессе публикации, такие как использование долгоживущих токенов npm. Меры по устранению последствий включают отзыв токенов, ужесточение контроля над публикациями и восстановление безопасного конвейера выпуска версий. Для разработчиков и компаний критически важно немедленно проверить свои проекты на наличие скомпрометированных версий Axios ("1.14.1", "0.30.4") и пакета "plain-crypto-js@4.2.1", а также откатиться к безопасным релизам. Этот инцидент служит суровым напоминанием о хрупкости современных цепочек поставок программного обеспечения и необходимости внедрения комплексных мер безопасности, выходящих за рамки простого доверия к реестрам пакетов.
Индикаторы компрометации
Malicious Packages
- axios (v0.30.4, 1.14.1)
- plain-crypto-js (v4.2.0, 4.2.1)
- @shadanai/openclaw (v2026.3.28-2, 2026.3.28-3, 2026.3.31-1, 2026.3.31-2)
- @qqbrowser/openclaw-qbot (v0.0.130)
Network Indicators
- C2 domain: sfrclak.com
- C2 IP: 142.11.206.73
- C2 URL: http://sfrclak.com:8000/6202033
- POST body (macOS): packages.npm.org/product0
- POST body (Windows): packages.npm.org/product1
- POST body (Linux): packages.npm.org/product2