Вредоносный npm-пакет с 2 млн еженедельных загрузок прячет код в функции BTree

Материал подготовлен искусственным интеллектом на основе нескольких источников — ссылки на оригиналы приведены ниже.
Вредоносный npm-пакет набрал более 2 миллионов еженедельных загрузок, скрывая полезную нагрузку в обычной библиотечной функции, а не в установочном скрипте. Вредоносное ПО похищает данные хоста через Slack и Telegram и использует смарт-контракт тестовой сети Sepolia Ethereum для управления. Исследователи Checkmarx выявили ещё девять пакетов, связанных с кампанией, все они удалены из реестра.
Ключевые факты
- Вредоносный пакет набрал более 2 миллионов еженедельных загрузок.
- Полезная нагрузка была встроена в метод BTree.prototype.set, а не в установочный скрипт.
- Вредоносное ПО похищает данные хоста через жёстко заданные Slack-канал и Telegram-чаты.
- Адрес C2-сервера скрыт в смарт-контракте тестовой сети Sepolia Ethereum.
- Checkmarx выявила ещё девять пакетов, связанных с кампанией, включая btree-core с более чем 1,9 млн загрузок.
Механизм заражения
Вредоносный скрипт был встроен непосредственно в метод BTree.prototype.set вместо установочного хука в package.json. Когда метод получает определённое значение ключа, код запускает обфусцированный загрузчик первой стадии как отдельный процесс Node.js. Загрузчик собирает отпечаток хоста: архитектуру операционной системы, имя хоста, данные о процессоре, памяти и времени работы. Данные эксфильтруются через жёстко заданные Slack-канал и Telegram-чаты.
Управление через блокчейн
Злоумышленники скрыли адрес C2-сервера в смарт-контракте тестовой сети Sepolia Ethereum. Исследователи Checkmarx отметили, что контракт предоставляет функции getter и setter, которые вредоносное ПО опрашивает вместо запроса к обычному домену. Этот метод более устойчив к блокировке домена или IP, чем традиционные подходы, поскольку смарт-контракт указывает на новый адрес после блокировки старого. Вредоносное ПО создаёт криптографические ключи для установления общего секрета с открытым ключом, полученным из блокчейна, что позволяет расшифровать полезную нагрузку второй стадии из двух зашифрованных фрагментов в смарт-контракте.
Масштаб кампании
Checkmarx выявила девять других npm-пакетов, связанных с кампанией, которые впоследствии были удалены из реестра. Среди них ordered-kv-index, btree-leaderboard, priority-slot-queue, btree-range-store, btree-core, btree-time-index, btree-lru-cache, neighbor-key-map и sliding-score-window. Несколько из этих пакетов имели сотни тысяч загрузок, а btree-core — более 1,9 миллиона. Операторы поддерживали репозиторий GitHub с многочисленными коммитами, не включая вредоносный код в репозиторий, а связанный аккаунт GitHub использовал сгенерированное ИИ изображение профиля. Checkmarx сообщила, что кампания продолжается, и опубликовала индикаторы компрометации для служб безопасности.