КРУПНЕЙШАЯ АТАКА НА NPM: ЧЕРВЬ SHAI-HULUD ЗАРАЗИЛ ПАКЕТЫ С 2 МЛРД УСТАНОВОК

4 августа 2026 года произошёл один из самых масштабных инцидентов в истории цепочки поставок JavaScript-экосистемы. Взломан аккаунт мейнтейнера библиотеки keyv (Джареда Рэя), после чего злоумышленники опубликовали вредоносные версии сотен пакетов. Поскольку релизы проходили через штатный GitHub Actions и имели валидную подпись npm, заражённые сборки выглядели абсолютно легитимно. МАСШТАБ На момент написания отчётов зафиксировано более 868 заражённых пакетов в 1381 версии. Совокупный объём установок этих пакетов превышает 2 миллиарда в месяц. Каждую минуту появляются 50–100 новых заражённых пакетов, в пиковые моменты – до 1280 заражений в минуту. Первичные цели: keyv версии 6.0.0, flat-cache 6.1.24, file-entry-cache 11.1.6, cacheable-request 13.0.20, а также пакеты из скоупов cacheable, а затем цепочка затронула пакеты компаний Deliveroo, ServiceTitan, Qlik, Picsart и других.

МЕХАНИЗМ ЗАРАЖЕНИЯ При выполнении npm install на заражённом пакете срабатывает preinstall-хук, который запускает файл setup.mjs. Тот загружает среду выполнения Bun с GitHub и исполняет обфусцированный скрипт Math_Symbol.js (около 728 КБ). Этот скрипт сканирует файловую систему по 200 шаблонам и ворует: · npm-токены аутентификации и OIDC-токены, · GitHub Personal Access Tokens и сессионные токены, · ключи AWS (из ~/.aws/credentials, IAM, метаданных EC2), · секреты Kubernetes и токены сервисных аккаунтов, · токены HashiCorp Vault, · закрытые SSH-ключи и сертификаты, · файлы .env и строки подключения к БД, · файлы состояния Terraform, · базы данных KeePass, · конфигурации VPN и IDE, · токены Stripe, Slack и других API. Собранные данные шифруются и отправляются в публичные репозитории злоумышленников (обнаружено около 1300 таких репозиториев). Кроме того, червь использует украденные npm-токены для самораспространения – автоматически публикует заражённые версии других пакетов, принадлежащих скомпрометированным разработчикам. Таким образом, каждый взломанный мейнтейнер становится новым узлом распространения. ЧТО ДЕЛАТЬ НЕМЕДЛЕННО 1. Остановите все npm install, yarn install и pnpm install в CI/CD и на локальных машинах до выхода официальных патчей. 2. Используйте механизмы overrides (npm) или resolutions (yarn/pnpm), чтобы принудительно зафиксировать чистые, дорелизные версии затронутых пакетов (например, keyv@4.5.3, если они не заражены). 3. Добавьте флаг --ignore-scripts ко всем командам установки – это заблокирует выполнение вредоносных preinstall-хуков. 4. Немедленно ротируйте все секреты, которые находились на машинах и раннерах, где после 09:30 UTC 4 августа 2026 года выполнялась установка зависимостей. В первую очередь: npm-токены публикации, GitHub PAT, OIDC-токены, AWS-ключи, Vault-токены, SSH-ключи, токены Stripe и Slack. 5. Проверьте файлы package-lock.json, yarn.lock и логи CI на наличие подозрительных версий и артефактов работы setup.mjs или загрузки Bun. Атака продолжается в реальном времени. Промедление с ротацией секретов и блокировкой установок может привести к полной компрометации инфраструктуры и кода. Следите за обновлениями от исследовательских команд Aikido Security, Endor Labs и Socket. По материалам Aikido Security, Endor Labs, DevOps.com (04.08.2026)