Checkmarx отслеживает кампанию по распространению вредоносного ПО в npm, демонстрирующую, как можно обходить средства защиты цепочки поставок через сокрытие вредоносного кода в обычном режиме работы пакета, а не в скриптах установки.
Обнаруженный исследователями пакет indexed-btree пытается выдать себя за легитимную библиотеку sorted-btree и уже набрал 2 млн. еженедельных загрузок.
Выявленная кампания, по всей видимости, уже в значительной степени монетизировала затраты злоумышленников, которые, по данным Checkmarx, используют кошелек с 109 ETH. Однако в отчете не утверждается, что эти средства были получены путем кражи криптовалюты.
В июне 2026 года GitHub объявил о новых мерах безопасности для npm, призванных предотвратить атаки на цепочки поставок, которые неоднократно сотрясали экосистемы открытого исходного кода с конца 2025 года.
Одна из ключевых мер - блокировка скриптов жизненного цикла зависимостей, таких как preinstall, install и postinstall, если они не получили явного разрешения. Другие меры предотвращают автоматическое получение зависимостей npm из репозиториев Git или удаленных URL без разрешения.
Вредоносный пакет indexed-btree обходит все эти средства защиты, избегая скриптов установки и вместо этого скрывая свой загрузчик в методе BTree.prototype.set() пакета, который выполняется во время выполнения, когда приложение вызывает его с определенным значением ключа.
В результате установка проходит без ошибок и не запускает ни один из механизмов подтверждения npm v12. Загрузчик вредоносного ПО скрывается внутри собственного метода библиотеки BTree.prototype.set, который является основной функцией, постоянно вызываемой каждым пользователем.
Это позволяет запускать файл sharedLoad.min.js, содержащий обфусцированную первую стадию вредоносного ПО. В целом показывает хорошо продуманный способ обойти стандартные инструменты анализа заражения и большинство статических сканеров.
После запуска вредоносная ПО может собирать информацию о системе, включая архитектуру, имя хоста, процессор, память и время безотказной работы, и передавать эту информацию через встроенные каналы в Slack и Telegram.
Вредоносная ПО также опрашивает смарт-контракт Ethereum в сети Sepolia для получения информации о системе C2. Она использует обмен ключами X25519 для получения ключа AES и расшифровки полезной нагрузки второго этапа, хранящейся в контракте.
Когда операторы решат прекратить атаку, вредоносная ПО способна удалить свои файлы и вредоносный триггер из кода пакета, чтобы стереть свои следы.
Исследователи отмечают, что злоумышленники приложили огромные усилия, дабы придать проекту внешнюю легитимность, включая создание репозитория GitHub, выглядящего вполне правдоподобно, заполнение истории коммитов и модерацию учетной записи разработчика.
Checkmarx также задетектила 9 других пакетов 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 или любой из перечисленных выше пакетов, следует сменить все секретные ключи и восстановить свою среду разработки из надежной резервной копии.
Post #8634
3.82K