Библиотека axios скомпрометирована трояном удалённого доступа

Библиотека axios скомпрометирована трояном удалённого доступа

30 марта злоумышленники опубликовали в npm 2 вредоносные версии библиотеки axios. Версии 1.14.1 и 0.30.4 содержали скрытый установщик кроссплатформенного RAT — инструмента скрытого удалённого доступа.

JavaScript-библиотека Axios широко распространена в экосистеме разработки ИИ-решений — она обеспечивает HTTP-взаимодействие между клиентскими интерфейсами и API (OpenAI, Anthropic, LangChain).

Компрометацию обнаружила компания StepSecurity — её ИИ-анализатор пакетов зафиксировал аномальные исходящие соединения к домену sfrclak[dot]com в CI-пайплайнах открытых проектов.

Это одна из самых технически изощрённых атак на цепочку поставок, когда-либо зафиксированных в экосистеме npm.

Атакующие получили доступ к npm-аккаунту ведущего мейнтейнера проекта jasonsaayman и подменили привязанный email. Публикация обошла штатный CI/CD-пайплайн: все легитимные релизы axios 1.x выходят через GitHub Actions с криптографической привязкой по OIDC, а вредоносная версия была залита напрямую с украденным npm-токеном — без привязки к коммиту или тегу в репозитории.

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

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

Проведённое расследование установило, что операция была спланирована заранее. За 18 часов до атаки злоумышленник зарегистрировал чистый клон легитимного crypto-js, создающий видимость нормальной истории публикаций. Затем вышла версия 4.2.1 с вредоносным postinstall-хуком. Обе ветки axios — актуальная 1.x и устаревшая 0.x — были инфицированы с интервалом в 40 минут.

Вредоносные версии axios оставались в реестре npm около 3 часов, после чего были удалены. Пакет plain-crypto-js продержался примерно 4,5 часа.

Всем, кто установил axios@1.14.1 или axios@0.30.4, рекомендуется проверить наличие директории plain-crypto-js в node_modules. Её присутствие означает, что дроппер был запущен, даже если npm list не показывает версию 4.2.1. Зависимость необходимо удалить, а все секреты, SSH-ключи и токены на затронутых машинах считать скомпрометированными.

Источник: https://x.com/Machinelearrn/status/2039019675003027819

1
1
1
Начать дискуссию