Исследователи JFrog обнаружили три вредоносных npm-пакета — aes-decode-runner-pro, postcss-minify-selector и postcss-minify-selector-parser, — которые маскируются под легитимные инструменты сборки и доставляют многоступенчатый троян удалённого доступа (RAT) для Windows. Пакеты эксплуатируют доверие разработчиков к экосистеме PostCSS: название postcss-minify-selector-parser имитирует postcss-selector-parser — легитимную библиотеку с более чем 127 миллионами еженедельных загрузок. Суммарно вредоносные пакеты были загружены более 1000 раз. Разработчикам, установившим любой из этих пакетов, необходимо немедленно удалить их, очистить артефакты и ротировать все учётные данные на затронутых машинах.
Механизм атаки: от npm install до полноценного RAT
По данным исследователей, все три пакета были опубликованы за последний месяц пользователем abdrizak. Пакеты aes-decode-runner-pro и postcss-minify-selector-parser представляются как утилиты для AES-кодирования и зависят от легитимного postcss-selector-parser. Пакет postcss-minify-selector позиционируется как минификатор CSS-селекторов и зависит от postcss-minify-selector-parser. Независимо от того, какой из трёх пакетов установлен, цепочка атаки приводит к развёртыванию одного и того же вредоносного ПО.
Цепочка заражения состоит из нескольких этапов:
- JavaScript-дроппер, встроенный в пакет, записывает на диск PowerShell-скрипт
settings.ps1и запускает его. - PowerShell-загрузчик скачивает следующую стадию с внешнего сервера
nvidiadriver[.]netчерезcurl.exe. - Загруженный ZIP-архив содержит VBS-файл
update.vbs, среду выполнения Python, загрузчикloader.pyи набор скомпилированных Python-модулей (.pyd), собранных с помощью Nuitka. - VBS-скрипт настраивает Python-окружение и запускает
loader.py, который активирует основную логику RAT.
Модульная архитектура трояна
RAT реализован через набор нативных Python-модулей, каждый из которых отвечает за отдельную функцию:
- config.pyd — константы, идентификаторы команд, URL сервера управления, имена ключей реестра
- api.pyd — обмен пакетами с C2-сервером по HTTP
- audiodriver.pyd — основной цикл оркестрации RAT (название выбрано для маскировки)
- command.pyd — профилирование хоста, проверка виртуальных машин, передача файлов, выполнение команд оболочки
- auto.pyd — кража учётных данных и данных расширений Google Chrome с обходом механизма App-Bound Encryption (ABE)
- util.pyd — вспомогательные функции для работы с tar/gzip-архивами
Обход ABE — защитного механизма Chrome, привязывающего шифрование к конкретному приложению, — делает этот RAT особенно опасным для разработчиков, хранящих в браузере пароли и токены доступа к репозиториям, CI/CD-системам и облачным сервисам.
Индикаторы компрометации
- C2-сервер:
95.216.92[.]207:8080 - Домен загрузки полезной нагрузки:
nvidiadriver[.]net
Волна атак на цепочку поставок npm
Обнаружение этих пакетов совпало с несколькими другими кампаниями, нацеленными на экосистему npm, что указывает на системный рост атак на цепочку поставок через менеджеры пакетов:
- Пакет apintergrationpost, по данным SafeDep, доставляет Linux RAT под названием MYRA. Как сообщается, он компилирует нативный C-руткит при установке, создаёт три механизма закрепления, маскируется под systemd-сервис и поддерживает бесфайловое выполнение.
- Пакет @withgoogle/stitch-sdk, по данным SafeDep, имитирует инструмент Google Stitch AI и похищает учётные данные разработчиков из восьми источников: Claude Code, git config, ~/.git-credentials, SSH-ключи, GitHub CLI, npm config, ~/.npmrc и ~/.docker/config.json. Данные отправляются на домен
stitch-production[.]org. - Кластер из пяти пакетов (procwire, routecraft, endpointmap, bytecraft, staticlayer), которые доставляют и запускают дроппер на Windows-хостах при выполнении npm install.
Отдельно SafeDep зафиксировала атаку на цепочку поставок через проект Egonex-AI/Understand-Anything, где вредоносный код использует блокчейн Tron в качестве инфраструктуры управления — адрес последней транзакции кодирует хеш BSC-транзакции с активной полезной нагрузкой.
Оценка воздействия
Несмотря на относительно небольшое число загрузок (суммарно около 1016), основная опасность заключается в целевой аудитории: пакеты нацелены на разработчиков, использующих PostCSS — один из самых популярных инструментов обработки CSS. Компрометация машины разработчика открывает доступ к приватным репозиториям, секретам CI/CD, токенам облачных провайдеров и ключам подписи. Модуль auto.pyd, специализирующийся на краже данных Chrome, включая расширения, может извлечь токены менеджеров паролей и сессии аутентификации.
Использование домена nvidiadriver[.]net для загрузки полезной нагрузки — характерный приём социальной инженерии: имя домена имитирует легитимное ПО NVIDIA и может не вызвать подозрений при беглом анализе сетевого трафика.
Рекомендации по реагированию
- Проверить зависимости проектов на наличие пакетов aes-decode-runner-pro, postcss-minify-selector, postcss-minify-selector-parser, apintergrationpost, @withgoogle/stitch-sdk, procwire, routecraft, endpointmap, bytecraft, staticlayer.
- Удалить вредоносные пакеты и все артефакты: файлы
settings.ps1,update.vbs,loader.py, каталоги с Python-средой выполнения и.pyd-модулями. - Проверить сетевые подключения к
95.216.92[.]207:8080,nvidiadriver[.]netиstitch-production[.]orgв журналах прокси и DNS. - Ротировать все учётные данные на затронутых машинах: пароли Chrome, SSH-ключи, токены GitHub/npm/Docker, секреты CI/CD.
- Внедрить политики проверки зависимостей: использовать инструменты аудита (npm audit, Socket, Snyk) и блокировать установку пакетов без проверки при помощи lockfile и политик разрешённых пакетов.
- Настроить мониторинг запуска PowerShell и wscript.exe из каталогов node_modules — это аномальное поведение для npm-пакетов.
Данный случай наглядно демонстрирует, что даже небольшой вспомогательный пакет, имитирующий популярную зависимость сборки, может скрывать полноценную многоступенчатую атаку. Ключевое действие для команд разработки — немедленно проверить свои проекты на наличие перечисленных пакетов, заблокировать указанные индикаторы компрометации на уровне сетевой инфраструктуры и внедрить автоматизированный аудит зависимостей как обязательный этап CI/CD-пайплайна.