Новый червь ChainDrop поразил более 400 NPM-пакетов

Зафиксирована массовая атака на пакеты в репозитории NPM, проводимая с использованием нового самораспространяющегося червя ChainDrop, подставляющего вредоносное ПО в зависимости. В результате атаки опубликовано 2212 вредоносных выпусков для 444 пакетов. Наиболее популярные из скомпрометированных пакетов keyv, flat-cache и file-entry-cache насчитывают 154, 149.9 и 147.6 миллионов загрузок в неделю.
Загрузчик червя размещался в файлах setup.mjs и Math_Symbol.js, которые запускались при помощи preinstall-обработчика ("preinstall": "node setup.mjs"), вызываемого при установке поражённого пакета. Указанные скрипты загружали легитимный Bun runtime и обфусцированный код червя, размером 710 Кб. После активации червь выполнял поиск в системе и в переменных окружения токенов к NPM, PyPI, CircleCI, AWS, GCP, Docker, Azure, HashiCorp, KubernetesK8s и другим сервисам (всего анализировалось более 140 файловых путей, типа ~/.npmrc), а также анализировал память (через /proc//mem) окружения GitHub Actions на предмет токенов и учётных данных.
В случае обнаружения токена для подключения к каталогу NPM червь автоматически публиковал новые вредоносные релизы для разрабатываемых в текущем окружении пакетов, поражая дерево зависимостей. В отличие от ранее выявленного червя Shai-Hulud 2.0 в ChainDrop была реализована техника EtherHiding для получения управляющих команд через публичный блокчейн Ethereum, задействовано шифрование для скрытия передаваемых на сервер атакующих конфиденциальных данных и обеспечено внедрение в файлы конфигурации Claude Code, VS Code и GitHub Copilot для закрепления присутствия в системе.
Атака началась с компрометации процесса формирования релизов на базе GitHub Actions для пакета keyv, насчитывающего 154 млн загрузок в неделю и используемого как зависимость в 1703 пакетах. Атакующие сформировали новую версию 6.0.0, подставив в неё вредоносный код, и опубликовали её с использованием механизма «Trusted Publishers» и корректной SLSA-аттестацией. После публикации червь поразил многие зависимые от keyv пакеты и по цепочке стал поражать непрямые зависимости.
Среди наиболее популярных пакетов, которые оказались поражены червём, опубликовавшим для них вредоносные релизы:
- flat-cache 6.1.24 (149.8 млн загрузок в неделю);
- file-entry-cache 11.1.6 (147.5 млн);
- cacheable-request 13.0.20 (33.9 млн);
- @cacheable/utils 2.5.1 (8.7 млн);
- cacheable 2.5.1 (7.8 млн);
- @cacheable/memory 2.2.1 (7.1 млн);
- cache-manager 7.2.10 (4.2 млн);
- @cacheable/node-cache 3.1.2 (1.5 млн).
>>> Источник: OpenNET
