Исследователи связали ChainDrop, который в начале недели проник более чем в 440 пакетов, с семейством Shai-Hulud. Такой поворот специалисты считают закономерным. Полный исходный код Shai-Hulud появился в открытом доступе ещё в мае, после чего у злоумышленников фактически появилась готовая основа для новых атак на цепочки поставок ПО.
ChainDrop распространяется через взломанные учётные записи разработчиков и заражённые npm-пакеты. Microsoft описывает вредоносную программу как вариант Mini Shai-Hulud. После запуска червь ищет токены npm и GitHub, учётные данные облачных сервисов, SSH-ключи, секреты Kubernetes и HashiCorp Vault, а также данные из CI/CD-сред. Получив подходящий токен npm, ChainDrop автоматически перебирает пакеты, которые владелец учётной записи может публиковать, добавляет вредоносный код, повышает номер версии и загружает заражённый релиз обратно в реестр.
Одной из главных точек входа стал популярный пакет keyv. Только за последний месяц библиотеку загрузили более 600 млн раз. В орбиту атаки также попали flat-cache, cacheable-request, cacheable и cache-manager. Совокупная популярность связанных библиотек превышает миллиард загрузок в месяц, хотя число загрузок нельзя напрямую считать числом заражённых компьютеров, поскольку одни и те же проекты используют несколько зависимостей одновременно.
Вредоносный код запускается через стандартный механизм preinstall в npm ещё до завершения установки пакета. ChainDrop работает в Windows, Linux и macOS и использует сильно обфусцированный JavaScript-код. Для выполнения основной нагрузки червь при необходимости самостоятельно загружает среду Bun. После запуска вредоносная программа собирает секреты разработчика и пытается использовать найденные учётные данные для дальнейшего распространения.
Создатели ChainDrop предусмотрели и дополнительные способы заражения. Червь способен добавлять вредоносные настройки в проекты для Claude Code и Visual Studio Code. В результате заражённый код может запуститься при начале новой сессии Claude Code или работе с репозиторием в VS Code. Украденные данные ChainDrop шифрует перед отправкой, а адрес управляющего сервера получает через смарт-контракт Ethereum. Такая схема позволяет операторам менять инфраструктуру без выпуска новой версии вредоносной программы.
Отдельную проблему показал взлом keyv. Заражённый релиз имел корректную npm provenance, поскольку легитимный GitHub Actions workflow действительно собрал и подписал пакет. Проверенная подпись в таком случае подтверждала происхождение сборки, но не гарантировала безопасность исходного кода. Компрометация произошла раньше, поэтому штатная система публикации добросовестно собрала уже заражённую версию.
Связь ChainDrop с Shai-Hulud не стала неожиданностью. 12 мая исходный код Shai-Hulud появился в публичных репозиториях GitHub, вскоре после крупной атаки на TanStack и другие проекты. Исследователи практически сразу предупреждали, что публикация готового червя снизит порог входа для новых злоумышленников и приведёт к появлению модифицированных вариантов. ChainDrop показывает, насколько быстро такой сценарий может повториться на практике.
Microsoft рекомендует считать потенциально скомпрометированными рабочие станции разработчиков и CI/CD-системы, где запускались заражённые версии. Компания советует отозвать и заменить доступные таким системам токены и секреты, проверить npm-релизы и GitHub-репозитории на посторонние изменения, очистить кэши пакетов и заново собрать проекты из заведомо безопасных зависимостей. Elastic также рекомендует перейти на npm 12, включить двухфакторную аутентификацию и не устанавливать новые версии зависимостей сразу после публикации, оставляя время на обнаружение возможной компрометации.