VMTech
Обсудить проект

В npm нашли пакет с загрузчиком, скрытым в коде библиотеки

В npm нашли пакет с загрузчиком, скрытым в коде библиотеки

В реестре npm обнаружили вредоносный пакет indexed-btree, имитировавший легитимную библиотеку sorted-btree. До удаления пакет успел набрать миллионы загрузок; Checkmarx оценила возможный доход операторов примерно в 109 ETH, или €230 933,57. Особенность кампании — запуск вредоносной цепочки не через install-скрипты, а из кода самой библиотеки во время работы приложения.

Пакет был опубликован 18 июня 2026 года пользователем npm charlessadler25. Сам пакет и связанный с ним репозиторий GitHub уже недоступны. Checkmarx также связала с той же операцией пакеты 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 и mutex-forge.

Загрузчик спрятали в штатном методе

Обычная схема атак на цепочку поставок JavaScript использует lifecycle-скрипты preinstall или postinstall: код запускается автоматически при установке зависимости. В npm 12 появился защитный механизм, ограничивающий автоматическое выполнение таких скриптов. Однако indexed-btree обошёл этот барьер, поскольку вообще не задействовал install hooks.

Загрузчик находился в методе BTree.prototype.set(). При его вызове подключался файл sharedLoad.min.js с обфусцированным первым этапом вредоносного кода. Таким образом, активация происходила не в момент установки, а при обращении приложения к внешне обычной функции пакета.

Первый этап собирал характеристики хоста и отправлял их в жёстко заданные канал Slack и Telegram-боту. Затем он применял EtherHiding: получал зашифрованные фрагменты следующего этапа из смарт-контракта в тестовой сети Sepolia, объединял их и формировал полезную нагрузку. После этого код удалял вредоносные артефакты и триггер из пакета, стараясь скрыть следы.

Что меняется в защите зависимостей

Случай показывает, что ограничение lifecycle-скриптов сокращает одну поверхность атаки, но не гарантирует безопасность опубликованной библиотеки. Контекст этой смены тактики помогает понять использование доверия к привычным инструментам как использование доверия к привычным инструментам и процессам превращается в канал компрометации.

Отдельно Socket сообщила об удалении вредоносного кода из версии dev-main пакета visanduma/nova-two-factor на Packagist, который имел более 700 000 совокупных загрузок. Исследователи связывают эпизод с кампанией PolinRider: её операторы компрометируют учётные записи разработчиков, внедряют код в репозитории и используют обычные действия — например, клонирование проекта или открытие его в IDE — как условия запуска цепочки.

В актуальном варианте PolinRider обфусцированный JavaScript был напрямую вставлен в index.php и запускался через PHP-функцию shell_exec(). Socket отмечает, что публикация заражённого пакета может быть следствием более широкой компрометации Git-репозитория, а не самостоятельной целью.

Практический вывод

Командам разработки стоит проверять не только скрипты установки и состав зависимостей, но и поведение библиотек при исполнении: неожиданные сетевые обращения, сбор сведений о среде, загрузку кода со сторонних каналов и попытки удалить файлы. Для бизнеса это означает необходимость многоуровневого контроля до установки, во время работы приложения и после развёртывания, особенно для пакетов с похожими на известные названиями.

#npmsecurity#supplychain#malware#appsec
Открытая аналитика
На сайте 1 просмотров
мин чтения 4 22.09.2026
Instagram

В npm нашли пакет с загрузчиком, скрытым в коде библиотеки

Открыть публикацию в Instagram ↗