Червь ChainDrop заразил более 1300 npm-пакетов с 2 млрд загрузок в месяц
Реестр npm столкнулся с очередной масштабной атакой на цепочку поставок. Самораспространяющийся зловред под названием ChainDrop скомпрометировал, по данным исследователей, более 1300 версий пакетов с суммарной аудиторией около 2 миллиардов загрузок в месяц.
Как всё началось
Отправной точкой стал взлом GitHub-аккаунта сопровождающего библиотеку Keyv. Оттуда зараза быстро распространилась на связанные пакеты — Cacheable, flat-cache, file-entry-cache и другие утилиты кэширования того же автора, — а затем добралась до пакетов, ассоциированных с Deliveroo, Ornikar, OneReach, Picsart, Qlik и ServiceTitan.
По оценке компании Aikido, червём затронуто как минимум 868 пакетов в 1381 версии. Злоумышленник заливал вредоносные файлы прямо в основные ветки проектов и выпускал новые релизы. Поскольку сборка и публикация шли через легитимные рабочие процессы GitHub Actions, скомпрометированные релизы несли корректную информацию о происхождении (provenance) — что делало их особенно коварными.
Что внутри
Заражённые пакеты содержат два файла: дроппер setup.mjs и скрипт для кражи данных (Math_Symbol.js либо math_init.js), а в package.json прописан хук "preinstall": "node setup.mjs". Достаточно было выполнить npm install для затронутой версии, чтобы дроппер сработал автоматически ещё до завершения установки.
Дроппер скачивает исполняемый файл среды Bun с официального релиза на GitHub, запускает им вредоносный скрипт, а временную директорию затем удаляет. Собранные учётные данные шифруются и отправляются в публичный репозиторий GitHub с говорящим описанием «Shai-Hulud: Here We Go Again» — отсылка к уже знакомому семейству червей.
Зловред нацелен на широкий спектр секретов: токены GitHub (ghp_, gho_, ghs_) и npm, секреты GitHub Actions, ключи AWS, значения из SSM Parameter Store и Secrets Manager, секреты Kubernetes, токены HashiCorp Vault, учётные данные баз данных, а также ключи Stripe, Slack, Twilio, Azure и GCP. Каждый npm-токен предварительно проверяется в реальном времени через registry.npmjs.org. Червь самораспространяется, заражая пакеты других сопровождающих, которые использовали ранее скомпрометированную зависимость.
Что делать
По данным Wiz, для вывода данных также используется домен npm-cache[.]com — его стоит считать явным индикатором компрометации. Если затронутая версия была установлена, рабочую станцию разработчика или CI/CD-раннер следует считать скомпрометированными даже после удаления пакета: рекомендуется пересобрать системы с чистых резервных копий или с нуля, ротировать все доступные токены и проверить журналы и репозитории на предмет несанкционированных изменений.
Атака ещё разворачивается, число заражённых пакетов будет расти. Списки скомпрометированных пакетов и индикаторов компрометации публикуют Wiz, StepSecurity, Aikido, Socket и Ox Security.
Источник: Bleeping Computer
Комментарии
Войдите, чтобы комментировать.