Червь Mini Shai-Hulud скомпрометировал сотни npm-пакетов экосистемы @antv — анализ кампании и защита

Фото автора

CyberSecureFox Editorial Team

Масштабная атака на цепочку поставок npm затронула сотни пакетов экосистемы @antv — популярной библиотеки визуализации данных — а также ряд широко используемых JavaScript-пакетов, включая echarts-for-react с примерно 1,1 миллиона еженедельных загрузок. По данным исследователей из Socket, атака связана с продолжающейся кампанией Mini Shai-Hulud, в рамках которой скомпрометированная учётная запись мейнтейнера используется для массовой публикации троянизированных версий пакетов. Вредоносная нагрузка похищает более 20 типов учётных данных — от ключей AWS и Azure до токенов GitHub и npm — и способна к самораспространению через украденные токены. Организациям, использующим затронутые пакеты, необходимо немедленно провести аудит зависимостей и отозвать потенциально скомпрометированные секреты.

Масштаб компрометации и затронутые пакеты

Атака затронула пакеты, связанные с учётной записью npm-мейнтейнера atool. По данным Socket, злоумышленник опубликовал 639 вредоносных версий в рамках 323 уникальных пакетов, из которых 558 версий приходятся на 279 пакетов в пространстве имён @antv. Независимый анализ SafeDep приводит несколько отличающиеся цифры — 631 вредоносная версия в 314 пакетах, — что указывает на определённую неопределённость в точном охвате кампании.

Среди подтверждённых затронутых пакетов:

  • Пространство @antv: @antv/g2, @antv/g6, @antv/x6, @antv/l7, @antv/s2, @antv/f2, @antv/g, @antv/g2plot, @antv/graphin, @antv/data-set
  • За пределами @antv: echarts-for-react, timeago.js, size-sensor, canvas-nest.js

Как отмечает Socket, потенциальный радиус поражения значителен, поскольку скомпрометированная учётная запись связана с широко используемыми пакетами в экосистемах визуализации данных, построения графиков, картографии и React-компонентов. Организации, автоматически подтягивающие новые версии зависимостей, подвержены особому риску.

Техническая анатомия атаки

Механизм заражения

По данным SafeDep, атака использует два пути выполнения. Каждая скомпрометированная версия добавляет хук preinstall, вызывающий bun run index.js. Кроме того, 630 из 631 вредоносных версий внедряют запись optionalDependencies, указывающую на так называемые imposter-коммиты — поддельные коммиты в легитимном репозитории antvis/G2 на GitHub, доставляющие вторую копию вредоносной нагрузки.

Примечательна скорость операции: SafeDep зафиксировал 22-минутный всплеск публикаций, охвативший 314 пакетов и 631 версию с идентичной обфусцированной нагрузкой. Это однозначно указывает на полностью автоматизированную операцию с использованием украденного токена, а не на постепенную или целевую атаку.

Возможности стилера

Вредоносная нагрузка, по данным исследователей, похищает более 20 типов учётных данных:

  • Ключи облачных провайдеров: Amazon Web Services, Google Cloud, Microsoft Azure
  • Токены разработчика: GitHub, npm
  • Инфраструктурные секреты: SSH-ключи, Kubernetes, Vault
  • Платёжные данные: Stripe
  • Строки подключения к базам данных
  • Попытка побега из Docker-контейнера через сокет хоста

Собранные данные сериализуются, сжимаются, шифруются и отправляются на домен t.m-kosche[.]com через порт 443. В качестве резервного механизма эксфильтрации вредонос использует украденный токен GitHub для создания публичного репозитория под учётной записью жертвы и коммита данных в JSON-файл.

Самораспространение

Ключевая особенность Mini Shai-Hulud — встроенная логика распространения через npm. Вредонос валидирует украденные npm-токены через API реестра, перечисляет пакеты, принадлежащие владельцу токена, скачивает архивы пакетов, внедряет вредоносную нагрузку, добавляет хук preinstall, увеличивает номер версии и повторно публикует пакеты от имени скомпрометированного мейнтейнера. Таким образом, каждая компрометация порождает следующую, создавая каскадный эффект.

Индикатор компрометации на GitHub

Репозитории, создаваемые вредоносом, содержат характерную строку описания: «niagA oG eW ereH :duluH-iahS» (при обратном прочтении — «Shai-Hulud: Here We Go Again»). На момент публикации исследований поиск по GitHub выявил более 2200 репозиториев с этим маркером — косвенный индикатор масштаба компрометации учётных записей.

Атрибуция и эскалация угрозы

Кампания Mini Shai-Hulud, по оценкам исследователей, связана с финансово мотивированной группировкой TeamPCP. Однако ситуация существенно обострилась: как сообщает SlowMist, TeamPCP опубликовала полный исходный код фреймворка в рамках конкурса атак на цепочки поставок, объявленного совместно с BreachForums.

Как отмечает Datadog, публикация исходного кода действующего наступательного фреймворка — событие нечастое. Это снижает порог входа для других злоумышленников, предоставляя им готовые техники, включая злоупотребление OIDC-токенами, подделку данных о происхождении пакетов и хуки для закрепления в инструментах на базе ИИ.

Последствия уже наблюдаются: по данным Mondoo, неизвестный злоумышленник загрузил четыре вредоносных npm-пакета, один из которых содержит практически дословную копию червя Shai-Hulud с собственной инфраструктурой управления. Появление клонов усложняет атрибуцию и расширяет поверхность атаки.

Как подчёркивает Trend Micro, организации, использующие GitHub Actions, PyPI, Docker Hub, GitHub Container Registry, расширения VS Code и облачные CI-раннеры, непосредственно подвержены рискам этой кампании.

Оценка воздействия

Наибольшему риску подвержены команды разработки, использующие пакеты @antv и связанные библиотеки визуализации данных в корпоративных проектах. Учитывая, что echarts-for-react загружается более миллиона раз в неделю, потенциальное число затронутых организаций исчисляется тысячами. Самораспространяющийся характер червя означает, что компрометация одного мейнтейнера может каскадно затронуть все пакеты, связанные с его токенами. Утечка облачных ключей, SSH-секретов и токенов CI/CD открывает путь к полной компрометации инфраструктуры.

Практические рекомендации

  1. Аудит зависимостей: проверьте, используются ли в ваших проектах затронутые пакеты. Зафиксируйте версии зависимостей и откатитесь к заведомо чистым версиям, опубликованным до начала кампании.
  2. Отзыв секретов: если затронутые пакеты устанавливались в вашей среде — немедленно ротируйте все токены npm, GitHub, облачные ключи AWS/GCP/Azure, SSH-ключи и строки подключения к базам данных.
  3. Проверка GitHub: выполните поиск по своей организации на предмет репозиториев с описанием «niagA oG eW ereH :duluH-iahS» — их наличие указывает на компрометацию.
  4. Блокировка IOC: добавьте домен t.m-kosche[.]com в чёрные списки сетевого мониторинга.
  5. Отключение автоматических обновлений: пересмотрите политику автоматического подтягивания новых версий зависимостей. Используйте lock-файлы и пиннинг версий.
  6. Мониторинг preinstall-хуков: проверяйте наличие подозрительных хуков preinstall в зависимостях, особенно вызовов bun run index.js.

Кампания Mini Shai-Hulud демонстрирует системную уязвимость экосистемы npm: единственный скомпрометированный токен мейнтейнера запускает каскад заражений, а публикация исходного кода червя превращает единичную угрозу в массовую. Приоритетное действие сейчас — аудит всех зависимостей из пространства @antv и связанных пакетов, ротация всех секретов, которые могли быть доступны в скомпрометированных средах, и переход на строгий пиннинг версий с ручной проверкой обновлений для критичных зависимостей.


CyberSecureFox Editorial Team

Редакция CyberSecureFox освещает новости кибербезопасности, уязвимости, malware-кампании, ransomware-активность, AI security, cloud security и security advisories вендоров. Материалы готовятся на основе official advisories, данных CVE/NVD, уведомлений CISA, публикаций вендоров и открытых отчётов исследователей. Статьи проверяются перед публикацией и обновляются при появлении новых данных.

Оставьте комментарий

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.