Продолжающаяся кампания по распространению вредоносных npm-пакетов, включающая пакет indexed-btree, показывает, как злоумышленники обходят защиту цепочки поставок, скрывая вредоносный код в обычном поведении пакета во время выполнения, а не в скриптах установки.
Пакет, обнаруженный исследователями Checkmarx, пытается выдать себя за легитимную библиотеку sorted-btree и уже скачан 2 миллиона раз за неделю.
Эта кампания могла принести злоумышленникам значительную прибыль, поскольку, по данным Checkmarx, они используют кошелек, на котором хранится 109 ETH. Однако в отчете не говорится, что эти средства были получены в результате кражи криптовалюты.
Обход новейших мер безопасности
В июне 2026 года GitHub анонсировал набор мер безопасности npm, призванных помочь предотвратить атаки на цепочки поставок, которые с конца 2025 года неоднократно сотрясали экосистемы с открытым исходным кодом.
Одна из ключевых мер безопасности — блокировка скриптов жизненного цикла зависимостей, таких как ‘preinstall’, ‘install ‘ и ‘postinstall,’ без явного разрешения.
Другие меры не позволяют npm автоматически извлекать зависимости из репозиториев Git или с удалённых URL-адресов без разрешения.
Вредоносный пакет indexed-btree обходит эти средства защиты, не используя установочные скрипты, а вместо этого скрывая свой загрузчик в методе BTree.prototype.set() пакета, который выполняется во время работы приложения, когда оно вызывает его с определенным значением ключа.
В результате установка выглядит чистой и не активирует ни один из механизмов проверки npm версии 12.
«Загрузчик вредоносного ПО скрыт в собственном методе библиотеки BTree.prototype.set, который является основной функцией, которую постоянно вызывает каждый пользователь», — объясняет Checkmarx.
«Это запускает»the» sharedLoad.min.js, который содержит скрытую первую стадию вредоносного ПО. Это хорошо продуманный способ обойти стандартные инструменты анализа заражений и большинство статических сканеров «.

Запуск вредоносного по во время выполнения.
Источник: Checkmarx
После запуска вредоносная программа может собирать сведения о системе, включая архитектуру, имя хоста, процессор, память и время безотказной работы, и передавать информацию через жестко запрограммированные каналы Slack и Telegram.
Вредоносная программа также опрашивает смарт-контракт Ethereum в тестовой сети Sepolia для получения командно-контрольной информации (C2). Она использует обмен ключами X25519 для получения ключа AES и расшифровки полезной нагрузки второго этапа, хранящейся в контракте.
Когда операторы решают прекратить атаку, вредоносная программа может удалить свои файлы и вредоносный триггер из кода пакета, чтобы замести следы.
Исследователи отмечают, что злоумышленники приложили немало усилий, чтобы придать проекту видимость легитимности, в том числе создали репозиторий на GitHub, похожий на настоящий, заполнили его историю коммитов и создали учетную запись разработчика.

Фальсифицированная история коммитов
Источник: Checkmarx
Checkmarx также обнаружил девять дополнительных пакетов npm, связанных с той же операцией, которые теперь удалены из npm. Они также получили значительное количество скачиваний, как показано здесь:
- ordered-kv-index (448,184 загрузок)
- btree-leaderboard (493,685 загрузок)
- priority-slot-queue (402,860 загрузок)
- btree-range-store (468,092 загрузок)
- btree-core (1,951,274 загрузок)
- btree-time-index (425,312 загрузок)
- btree-lru-cache (372,185 загрузок)
- neighbor-key-map (366,019 загрузок)
- sliding-score-window (448,024 загрузок)
Разработчикам рекомендуется не полагаться только на сканирование во время установки, а также использовать поведенческий анализ во время выполнения.
Тем, кто установил indexed-btree или любой из перечисленных выше пакетов, следует сменить все пароли и восстановить среду разработки из безопасной резервной копии.
