Вредоносные npm-пакеты обходят защиту, прячась в обычном коде библиотеки

· Безопасность
Пакет indexed-btree выдаёт себя за популярную библиотеку sorted-btree и скрывает вредоносный загрузчик не в скриптах установки, а в штатном методе, который вызывается при обычной работе приложения.

cover.svg

Исследователи компании Checkmarx описали продолжающуюся кампанию во вредоносными пакетами npm, авторы которой научились обходить свежие механизмы защиты цепочки поставок. Ключевой пример — пакет indexed-btree, выдающий себя за легитимную библиотеку sorted-btree. Он уже набрал два миллиона загрузок в неделю.

Как обходят защиту

В июне 2026 года GitHub представил набор мер безопасности для npm — ответ на череду атак на open-source-экосистему, начавшуюся в конце 2025 года. Среди прочего блокируются скрипты жизненного цикла зависимостей (preinstall, install, postinstall), если они не одобрены явно, а также запрещена автоматическая загрузка зависимостей из Git-репозиториев и по внешним URL без разрешения.

Авторы indexed-btree обошли эти ограничения, вовсе отказавшись от скриптов установки. Вредоносный загрузчик спрятан внутри метода BTree.prototype.set() — той самой функции, которую приложение постоянно вызывает во время работы. При установке пакет выглядит чистым и не запускает ни один из механизмов одобрения npm. По словам Checkmarx, приём хорошо продуман: он позволяет проскользнуть мимо стандартных инструментов анализа заражения и большинства статических сканеров.

Что делает вредонос

Вызов метода с определённым значением ключа запускает обфусцированную первую стадию. Она собирает данные о системе — архитектуру, имя хоста, процессор, объём памяти, время работы — и передаёт их через жёстко прописанные каналы Slack и Telegram. Дальше вредонос обращается к смарт-контракту Ethereum в тестовой сети Sepolia за командами C2: с помощью обмена ключами X25519 выводится ключ AES и расшифровывается вторая стадия, хранящаяся в контракте. Завершая атаку, операторы могут удалить файлы и вырезать вредоносный триггер из кода пакета, заметая следы.

Злоумышленники тщательно маскировались: создали правдоподобный репозиторий на GitHub, наполнили историю коммитов и оформили аккаунт разработчика. По данным Checkmarx, их кошелёк содержит 109 ETH, хотя отчёт не утверждает, что эти средства получены от кражи криптовалюты.

Не только один пакет

Checkmarx обнаружила и удалила из npm ещё девять связанных пакетов, каждый с сотнями тысяч загрузок, а btree-core — почти два миллиона. Среди них ordered-kv-index, btree-leaderboard, priority-slot-queue, btree-range-store, btree-time-index, btree-lru-cache, neighbor-key-map и sliding-score-window.

Специалисты советуют не полагаться только на проверку при установке и добавить поведенческий анализ во время выполнения. Тем, кто установил любой из перечисленных пакетов, рекомендуют сменить все секреты и восстановить рабочее окружение из безопасной резервной копии.


Источник: Bleeping Computer

Комментарии

Войдите, чтобы комментировать.

  • Пока нет комментариев.