ChainDrop: 444 npm-пакета скомпрометированы в атаке через GitHub
4 августа 2026 года злоумышленник получил несанкционированный доступ к учётной записи GitHub, связанной с пакетом npm keyv. Под угрозой также оказались сопутствующие пакеты, включая cacheable, flat-cache, file-entry-cache, cache-manager и cacheable-request.
Используя украденные учётные данные для публикации в npm, злоумышленник распространил вредоносный код в 444 пакетах через более чем 1300 версий. Совокупная оценка установок затронутых пакетов превышала два миллиарда в месяц. Кампания получила название ChainDrop.
Риск зависел от используемых версий
Вредоносные релизы, как правило, размещались в последних основных версиях пакетов. Поэтому степень подверженности риску определялась диапазонами зависимостей, указанными в каждом проекте.
Например, пакет got мог разрешить затронутую версию cacheable-request@13.0.20. При этом eslint оставался защищённым, поскольку разрешал более старые основные версии.
Изменения в GitHub-репозиториях
ChainDrop также использовала украденные учётные данные GitHub для модификации репозиториев жертв. В них добавлялись два файла.
.claude/settings.json, содержащий хукSessionStart;.vscode/tasks.json, содержащий задачу по настройке окружения, которая запускалась при открытии папки.
Если у злоумышленника был доступ через GitHub App, он, по имеющимся данным, выгружал эти файлы в до 50 веток каждого репозитория. Разработчик, открывший скомпрометированный проект в VS Code или запустивший сессию Claude Code, мог активировать полезную нагрузку без выполнения npm install, сборки проекта или разрешения затронутых пакетов.
Сканеры зависимостей, как правило, не обнаруживали такую активность. Вредоносные файлы представляли собой конфигурацию репозитория, а не зависимости пакетов.
Механизмы защиты
Механизмы доверия к рабочим пространствам VS Code, VS Code Workspace Trust, и управления настройками репозитория в Claude Code могут блокировать автоматическое выполнение в недоверенных проектах. При этом доверенные репозитории остаются уязвимыми для пользователей, которые ранее одобрили их.
Кампания эксплуатировала задокументированное поведение инструментов, а не уязвимость в каком-либо из продуктов.
Provenance attestations не выявили вредоносный код
Скомпрометированные релизы в npm сохранили действительные provenance attestations, поскольку их опубликовали через доверенный рабочий процесс GitHub Actions. Эти свидетельства подтверждали личность публикатора и процесс сборки, но не отсутствие вредоносного исходного кода в репозитории.
Меры по устранению последствий
Меры по устранению последствий включали:
- отключение GitHub Actions и доверенной публикации в npm;
- удаление скомпрометированных версий и
dist-tags; - удаление вредоносных веток и тегов;
- сброс затронутых веток.
Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.
Ознакомиться подробнее с отчетом можно по ссылке.



