————————————————————————
Сначала важное:
Заражённые пакеты: `axios@1.14.1`, `axios@0.30.4`, `plain-crypto-js@4.2.1`
Артефакты малвари:
macOS: /Library/Caches/com.apple.act.mond
Windows (постоянный): %PROGRAMDATA%\wt.exe
Windows (временный, само-удаляется): %TEMP%\6202033.vbs
Windows (временный, само-удаляется): %TEMP%\6202033.ps1
Linux: /tmp/ld.py
————————————————————————
Что и как происходило (в UTC):
2026-03-30 05:57
Опубликован пакет
plain-crypto-js@4.2.0 пользователем nrwise@proton.me. Это "чистый" (безопасный) пакет, содержащий копию оригинального кода crypto-js. Он был создан для того, чтобы создать видимость нормальной истории публикаций пакета, чтобы он не выглядел подозрительно при последующем анализе.2026-03-30 23:59
Опубликован пакет
plain-crypto-js@4.2.1 пользователем nrwise@proton.me. В этот пакет добавлен вредоносный код. В него добавлен хук postinstall, который запускает скрипт setup.js, содержащий замаскированный (обфусцированный) вредоносный компонент.2026-03-31 00:21
Пакет
axios@1.14.1 опубликован скомпрометированной учетной записью jasonsaayman (адрес электронной почты: ifstap@proton.me). Этот пакет добавляет plain-crypto-js@4.2.1 в качестве зависимости во время выполнения, нацеливаясь на пользователей современной версии axios (1.x).2026-03-31 01:00
Опубликован пакет
axios@0.30.4 с той же скомпрометированной учетной записи. В этот пакет также внедрен plain-crypto-js@4.2.1 в качестве зависимости, но он предназначен для более старой версии axios (0.x). Это сделано для охвата большего числа пользователей.2026-03-31 ~03:15
Пакеты
axios@1.14.1 и axios@0.30.4 удалены из реестра npm. Версия 1.14.1 была доступна примерно 2 часа 53 минуты, а версия 0.30.4 - примерно 2 часа 15 минут. Точное время удаления определено по информации из реестра npm, так как npm не предоставляет отдельный API для получения времени удаления конкретной версии.2026-03-31 03:25
npm начинает процесс блокировки для пакета
plain-crypto-js, чтобы заменить вредоносный пакет на безопасный "заглушку" (stub).2026-03-31 04:26
Опубликован безопасная "заглушка"
plain-crypto-js@0.0.1-security.0 от имени учетной записи npm@npmjs.com. Это окончательно заменяет вредоносный пакет в реестре. Пакет plain-crypto-js@4.2.1 был активен примерно 4 часа 27 минут. Теперь при попытке установить любую версию plain-crypto-js отображается предупреждение о безопасности.————————————————————————
А что вообще это такое и что случилось?
При разработке на Node.js, для управления библиотеками используется пакетный менеджер npm, он позволяет в одну команду установить нужную зависимость и все нужные для неё зависимости. Именно на этот алгоритм и пришла атака.
Некоторым пакетам после скачивания нужно выполнять дополнительные действия, для этого существует механизм
postinstall, обычно его используют для вызова компиляции или патчинга текущего/соседних модулей.Теперь перейдём к
axios, это одна из самых популярных библиотек для работы с HTTP(S) протоколом. Что у нас получилось? Разработчик обновляет/устанавливает axios до заражённой версии, он автоматически как зависимость скачивает plain-crypto-js, а тот в своём postinstall запускает скрипт, который устанавливает RCE вирус на рабочую станцию, при этом всё это происходит полностью незаметно для разработчика.Вот как-то так.
Подробнее: https://www.stepsecurity.io/blog/axios-compromised-on-npm-malicious-versions-drop-remote-access-trojan
#itnews