Специалисты провели анализ атаки ChainDrop, которая затронула свыше 440 пакетов на платформе npm. Исследователи установили связь этого инцидента с семейством вредоносов Shai-Hulud. Такая закономерность объясняется тем, что исходный код Shai-Hulud был опубликован в открытом доступе в мае, предоставив киберпреступникам готовый инструмент для проведения атак на цепочку поставок программного обеспечения.

Распространение ChainDrop осуществлялось через скомпрометированные учётные записи разработчиков и инфицированные npm-пакеты. По классификации Microsoft, это вредонос является модификацией Mini Shai-Hulud. После активации вредоносный код ищет токены npm и GitHub, данные облачных платформ, приватные ключи SSH, конфиденциальные данные Kubernetes и HashiCorp Vault, а также информацию из систем интеграции и развёртывания. Получив необходимый npm-токен, ChainDrop автоматически обходит доступные пакеты, встраивает вредоносный код, увеличивает номер версии и загружает заражённый выпуск обратно в реестр.

Главной мишенью стала широко используемая библиотека keyv, которую за последний месяц скачали более 600 млн раз. В атаку также вовлечены пакеты flat-cache, cacheable-request, cacheable и cache-manager. Совокупное количество загрузок этих взаимосвязанных библиотек превышает миллиард в месяц. Однако количество загрузок нельзя приравнивать к числу заражённых устройств, поскольку проекты часто используют несколько зависимостей одновременно.

Инфицированный код выполняется через встроенный npm-скрипт preinstall до окончания установки пакета. ChainDrop работает на Windows, Linux и macOS, используя сильно зашифрованный JavaScript. Для выполнения основных функций вредонос при необходимости самостоятельно загружает среду исполнения Bun. После запуска программа собирает конфиденциальные данные разработчика и пытается использовать полученные учётные данные для дальнейшего заражения.

Разработчики ChainDrop предусмотрели дополнительные каналы инфекции. Вредонос способен внедрять вредоносные параметры в проекты Claude Code и Visual Studio Code. Это позволяет запустить заражённый код при инициализации новой сессии Claude Code или при работе с хранилищем кода в VS Code. Украденная информация шифруется перед передачей, а адрес сервера управления получается через смарт-контракт на блокчейне Ethereum. Такой подход даёт злоумышленникам возможность менять инфраструктуру без обновления вредоноса.

Взлом keyv выявил серьёзную уязвимость в системе проверки. Заражённый выпуск содержал действительные подписи npm provenance, так как официальный GitHub Actions workflow произвел и подписал пакет. Хотя криптографическая проверка подтверждала источник сборки, она не гарантировала безопасность кода. Скомпрометация произошла ранее, поэтому стандартная система опубликовала уже инфицированную версию.

Связь между ChainDrop и Shai-Hulud оказалась предсказуемой. 12 мая исходный код Shai-Hulud был добавлен в общедоступные GitHub-репозитории вскоре после крупной атаки на проекты TanStack и подобные системы. Специалисты в области безопасности незамедлительно предупредили, что размещение готового вредоноса облегчит проникновение новых злоумышленников и приведёт к созданию измененных вариантов. ChainDrop демонстрирует, с какой скоростью подобный сценарий реализуется в реальности.

Microsoft советует рассматривать рабочие машины разработчиков и системы CI/CD как потенциально инфицированные, если на них выполнялась заражённая версия. Компания рекомендует произвести отзыв и замену токенов и секретов, аннулировать опубликованные npm-пакеты и GitHub-репозитории на предмет несанкционированных изменений, очистить кэши пакетов и произвести повторную сборку приложений из проверенных компонентов. Elastic дополнительно советует обновиться до npm версии 12, активировать двухфакторную защиту и воздержаться от немедленной установки свежих версий компонентов, предоставив время для выявления возможной компрометации.