Злоумышленник внедрил вредоносный код в девять npm-пакетов
В мае 2025 года злоумышленник за примерно 90 минут опубликовал девять версий пакетов npm, воспользовавшись захваченной учётной записью сопровождающего. Восстановленные версии содержали компоненты доставки вредоносного ПО и полезной нагрузки. Цепочка атаки доставляла RAT на Node.js и стиллер учётных данных на Python.
Как работала цепочка заражения
В существующие файлы пакетов добавили обфусцированный код JavaScript, скрытый за длинными пробелами. Полезная нагрузка имела общие ключевые технические характеристики с PolinRider, среди них ключ XOR, маркер, командный сервер и пути на сервере. Образцы 2025 года содержали компоненты доставки вредоносного ПО и полезной нагрузки, но не включали поведение принудительного распространения, задокументированное в 2026 году.
Для получения зашифрованной полезной нагрузки загрузчики использовали EtherHiding. Данные транзакций BNB Smart Chain и Ethereum они запрашивали через публичные API обозревателей блокчейна. Загрузчик JADESNOW расшифровывал следующий этап с помощью XOR, а затем загружал бутстраппер из транзакции Ethereum от 7 февраля 2025 года.
Бутстраппер подключался к 154.91.0.103:27017, блокировал выполнение в России, устанавливал зависимости Node.js и файлы поддержки Python 3.12.7. Отчёт о статусе он отправлял по пути /verify-human/5-itsa.
RAT подключался к серверу Socket.IO по адресу 85.239.62.36:3306 и принимал команды оператора. С его помощью можно было выполнять команды командной строки, менять каталоги, загружать файлы или каталоги и завершать работу. Команды выполнялись с параметром shell: true. В Windows использовался портативный Python.
Стиллер работал в Windows, Linux и macOS. Он собирал учётные данные браузеров, файлы cookie, платёжные данные, сведения о кошельках и расширениях браузера, учётные данные Git и GitHub, файлы менеджеров паролей и данные облачного хранилища. Перед отправкой на 85.239.62.36:27017 стиллер создавал архивы и шифровал их алгоритмом AES. Для передачи более мелких архивов в качестве резервного канала использовался Telegram. Вредоносное ПО не устанавливало закрепление при перезагрузке.
Изменения в GitHub и индикаторы
В 2026 году связанные полезные нагрузки появлялись в репозиториях GitHub, принадлежавших разработчикам. Для этого использовалась принудительная отправка изменений, которая модифицировала файл webpack.config.js. Даты коммитов и метаданные сфальсифицировали. Поэтому время отправки изменений в GitHub служит более надёжным источником для определения активности, чем даты коммитов.
К полезным индикаторам обнаружения относятся:
- затронутые версии пакетов;
- необычно длинный код, замаскированный пробелами;
- процессы Node.js, выполняющие запросы к обозревателям блокчейна перед запуском;
- непредвиденный трафик Socket.IO или HTTP на порту 3306;
- создание каталогов
/tmp/.npmили~/.pyenv.
В отчёте также приведены хеши SHA-256 затронутых архивов пакетов и компонентов вредоносного ПО.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



