Атака на цепочку поставок npm: червь похищает учётные данные

4 августа 2026 года злоумышленники осуществили Supply Chain Compromise, получив доступ к GitHub-аккаунту разработчика key-value storage библиотеки keyv, широко используемой в экосистеме npm. Используя этот доступ, они загрузили вредоносные файлы в keyv и несколько связанных пакетов, что привело к распространению credential-stealing worm через эти библиотеки, включая популярные пакеты cacheable и flat-cache.

Вектор атаки и первоначальная компрометация

Злоумышленники получили контроль над учётной записью разработчика и внесли изменения непосредственно в основную ветку затронутых репозиториев. В каждый из них были добавлены два вредоносных файла – setup.mjs и Math_Symbol.js. После этого файлы package.json были модифицированы таким образом, чтобы setup.mjs автоматически запускался при выполнении пользователями команды npm install. Этот замаскированный loader тихо загружает JavaScript runtime Bun и передаёт управление основной полезной нагрузке, встроенной в Math_Symbol.js.

Анализ вредоносной нагрузки

  • setup.mjs — скрытый загрузчик, обеспечивающий среду выполнения Bun и активацию payload.
  • Math_Symbol.js — крупный JavaScript-файл (728 КБ), реализующий многофункциональную кражу данных и механизм червя.

Payload, содержащийся в Math_Symbol.js, извлекает конфиденциальные учётные данные из пользовательского окружения, шифрует их и отправляет в публичный репозиторий GitHub, помеченный заголовком «Shai-Hulud: Here We Go Again.» Кроме того, вредоносный код демонстрирует worm-like behavior, позволяя заражать другие пакеты, используемые поражёнными разработчиками.

Функционал кражи данных

Файл Math_Symbol.js реализует несколько методов извлечения секретов, нацеленных на самые разные хранилища скомпрометированных машин. Среди его возможностей:

  • сбор аутентификационных токенов из ~/.npmrc и его вариантов;
  • проверка токенов через реестр npm;
  • извлечение секретов из сервисных аккаунтов и конфигурационных файлов Kubernetes;
  • поиск чувствительных API-ключей и токенов, связанных с такими сервисами, как Stripe и Slack, по всей файловой системе жертвы.

Эксфильтрация и worm-механизм распространения

Похищенные данные направляются в публичный репозиторий на GitHub, играющий роль collection point. Механизм распространения червя активно использует скомпрометированные учётные данные для дальнейшего продвижения. Обнаружив токены ghs_, вредонос пытается внести вредоносные изменения в различные ветки других репозиториев, к которым получает доступ, эффективно сливаясь с легитимной историей коммитов. Дополнительно устанавливаются hooks, запускающие выполнение payload непосредственно в средах разработки, таких как Visual Studio Code.

Выводы и последствия

Инцидент обнажает серьёзные уязвимости экосистемы npm, вызванные зависимостью от целостности пакетов, и демонстрирует потенциально разрушительные последствия Supply Chain-атак. Обнаруженные компоненты malware подчёркивают важность постоянной бдительности и внедрения строгих мер безопасности, включая контроль целостности зависимостей, мониторинг подозрительной активности в репозиториях и ограничение автоматического выполнения скриптов при установке пакетов.

Отчет получен из сервиса CTT Report Hub. Права на отчет принадлежат его владельцу.

Ознакомиться подробнее с отчетом можно по ссылке.

Технологии киберугроз
Автор: Технологии киберугроз
Технологии киберугроз – технологическая компания, специализирующаяся на решениях по анализу угроз для предприятий любого размера. Мы собираем, нормализуем, обогащаем информацию о киберугрозах со всего мира. Нашими источниками являют более 260 открытых фидов, более 100 открытых поставщиков Threat Intelligence-отчетов, открытые online sandbox, социальные сети и репозитории GitHub. Мы также предоставляем ряд сервисов по: семантическом анализу Threat Intelligence-отчетов и приведения их в машиночитаемый формат STIX 2.1, проверки IoC на потенциальные ложноположительные сработки, а также получению WHOIS-записей для доменных имен.
Комментарии: