ChainDrop: npm-червь с блокчейн-C2 и закреплением в папке .vscode
💀 ChainDrop: npm-червь с блокчейн-C2 и закреплением в папке .vscode
Самораспространяющийся червь ChainDrop заразил более 400 npm-пакетов, включая keyv и cacheable-request, с нагрузкой в сотни миллионов загрузок в неделю. Единственное изменение в манифесте — обработчик preinstall в package.json. Нет ошибок. Нет предупреждений. Установка запускает загрузчик, тот загружает легитимный Bun и передаёт ему запутанную полезную нагрузку размером 727 КБ. Перед сбором учётных данных червь проверяет локаль: русскоязычную машину щадит, выходит молча.
Крадёт всё: облачные IAM-токены, npm‑ и GitHub‑токены, SSH‑ключи, конфиги ИИ-инструментов, Vault, историю командной оболочки. На исполнителе GitHub Actions скрипт читает /proc/<pid>/mem, забирая OIDC-токены прямо из памяти рабочего процесса. Закрепление двойное: .vscode/tasks.json срабатывает при открытии проекта, .claude/settings.json — при старте Claude Code. Оба файла перекрёстно ссылаются на копии загрузчика в папке друг друга. Жертва сама запускает червя действием, которое годами считалось безопасным.
Распространение — через украденные npm-токены. Червь заново собирает доступные жертве пакеты, добавляет обработчик preinstall, повышает версию исправления и публикует. Для репозитория opensearch-js реализован незаметный способ: OIDC-обмен на токен публикации, внедрение зависимости с похожим названием @opensearch/setup — и корректные данные о происхождении в sigstore. Подпись действительна, журнал Rekor настоящий, сборка вышла из того же CI. Средства обнаружения, настроенные на preinstall, такое пропускают.
Инфраструктура C2 управляется умным контрактом Ethereum (0xE1f2395ee43e45A1556EC6438a88c31B83493103). Червь опрашивает около 60 публичных RPC-точек, получает домен — сейчас npm‑cache[.]com — и отправляет украденное. Ответ сервера содержит произвольный JavaScript и исполняется без записи на диск. 4 августа 2026 года оператор сменил всю серверную часть одной транзакцией, не затрагивая установленных агентов. Блокировать IP бесполезно: за сервисом защиты периметра проходит чужой трафик, режьте по домену или SNI.
По данным Unit 42, заражённые репозитории и среды выполнения уже обнаружены в десятке организаций.
Папки .vscode и .claude стали полноценным средством закрепления, которого нет в охвате большинства сканеров. А корректные данные о происхождении больше не гарантируют чистоту пакета — они лишь подтверждают, что CI дышал воздухом атакующего.
#ChainDrop #npm #supplychain #малварь #CI/CD
Такие разборы выходят в канале каждый день — коротко и со ссылкой на первоисточник.