npm-пакеты AntV пострадали из-за взлома аккаунта мейнтейнера

Snyk сообщает о более чем 300 вредоносных версиях в 323 npm-пакетах AntV после компрометации аккаунта мейнтейнера.

2026-05-20 GIGATAP Team #security
#npm#supply-chain#open-source

Что произошло#

Snyk сообщает, что скомпрометированный аккаунт npm-мейнтейнера использовали для публикации более 300 вредоносных версий в 323 пакетах экосистемы AntV для визуализации данных.

AntV — семейство JavaScript-проектов для визуализации. Поэтому инцидент важен не только для пользователей одной малоизвестной зависимости. Библиотеки визуализации часто попадают в дашборды, админки, аналитические продукты, внутренние инструменты и frontend-сборки. Если вредоносная версия оказывается на этом пути, масштаб ущерба зависит от разрешения зависимостей, lockfile-файлов, поведения CI и того, как быстро команды обновляют или пересобирают проекты.

Snyk связывает активность с продолжающейся npm-кампанией supply chain-червя «Mini Shai-Hulud». По описанию источника заметная деталь — автоматизация: после взлома аккаунта мейнтейнера атакующий смог массово публиковать вредоносные версии во множестве пакетов, а не выбирать одну цель вручную.

Почему это важно#

Экосистема npm специально делает публикацию пакетов простой. Это удобно для мейнтейнеров. Но так же удобно и для атакующих, если они получают контроль над доверенной учетной записью для публикации.

Взлом аккаунта мейнтейнера меняет саму модель доверия. Разработчики могут не увидеть странное новое имя пакета. Они увидят знакомый пакет, в знакомом scope, с новой версией, похожей на обычное обновление. Автоматические инструменты управления зависимостями могут затем подтянуть вредоносную версию в сборки, если это позволяют диапазоны версий, обновления lockfile или CI-процессы.

Поэтому такие инциденты — не просто история про «кто-то загрузил malware в npm». Более точная формулировка: был использован доверенный путь публикации, а потребители пакетов могли получить результат через обычный процесс обновления.

Для обычных инженерных команд риск зависит от того, использовали ли их проекты затронутые пакеты AntV в период публикации вредоносных версий, а также выполнялись ли install-скрипты пакетов или импортируемый код в средах сборки либо runtime. Краткое описание источника не дает достаточно деталей, чтобы делать универсальный вывод по каждой установке. Воздействие нужно проверять, а не предполагать.

Что известно из источника#

Исходный материал подтверждает несколько конкретных фактов:

  • аккаунт npm-мейнтейнера был скомпрометирован;
  • компрометация привела к публикации вредоносных версий пакетов;
  • Snyk насчитал более 300 вредоносных версий в 323 пакетах экосистемы AntV;
  • Snyk описывает активность как часть supply chain-кампании Mini Shai-Hulud;
  • публикация Snyk посвящена поведению malware, выявлению затронутых сред и рекомендациям по реагированию.

Этого достаточно, чтобы команды, использующие пакеты AntV, сразу проверили зависимости. Но этих фактов самих по себе недостаточно, чтобы утверждать, что каждый пользователь AntV был скомпрометирован, что атакующие добрались до production-систем или что в каждой среде произошла конкретная кража данных.

Разница важна. Инциденты supply chain часто сводят к одному громкому заголовку. Рабочий вопрос уже и полезнее: устанавливала ли ваша build- или runtime-среда одну из вредоносных версий, и какие права или секреты были доступны из этой среды?

Что стоит проверить командам#

Начните с инвентаризации пакетов. Найдите AntV-зависимости в manifest-файлах и lockfile. Проверьте активные приложения, архивные сервисы, которые все еще собираются, внутренние шаблоны и примеры для CI. Старые frontend-проекты часто остаются в автоматизации дольше, чем команда помнит.

Затем проверьте, что именно устанавливалось. Lockfile полезнее, чем диапазоны в package.json, потому что фиксирует разрешенные версии. Логи CI, метаданные артефактов, снимки зависимостей и инструменты software composition analysis помогут подтвердить, подтягивалась ли вредоносная версия в затронутый период.

Практические проверки:

  • просмотрите package-lock.json, yarn.lock, pnpm-lock.yaml и логи сборки на наличие пакетов AntV;
  • сравните установленные версии со списком затронутых пакетов и версий Snyk, если он указан в advisory;
  • пересоберите проекты из заведомо чистого состояния зависимостей после pinning или обновления затронутых пакетов;
  • ротируйте токены и секреты, которые были доступны затронутым build job, если установка подтверждена;
  • проверьте CI runners, машины разработчиков и build containers, где устанавливались подозрительные версии;
  • не считайте production безопасным автоматически, если build-система имела доступ к deployment credentials.

Особенно чувствительная зона — CI. Многие npm supply chain payloads опаснее всего при выполнении во время install или сборки: именно там могут находиться registry tokens, cloud keys, GitHub tokens, deployment credentials и доступ к приватным пакетам. Даже если итоговый app bundle выглядит нормально, настоящей целью могла быть build-среда.

Чего не стоит утверждать без данных#

Эта заметка основана на собранном кратком описании источника, а не на новом reverse-engineering отчете. В summary нет точных вредоносных версий, внутреннего устройства payload, indicators of compromise, доли успешных атак или подтвержденного числа жертв.

Поэтому безопасная трактовка ограничена: Snyk наблюдал крупную публикацию вредоносных версий через скомпрометированный аккаунт мейнтейнера и связал ее с Mini Shai-Hulud. Воздействие зависит от того, устанавливала ли конкретная среда затронутые версии и к чему эта среда имела доступ.

Не приравнивайте число пакетов к числу жертв. Не считайте наличие зависимости доказательством выполнения кода. Не считайте отсутствие пакета в package.json доказательством безопасности, если transitive dependencies, изменения lockfile или tooling в monorepo могли подтянуть затронутые пакеты в другом месте.

Вывод#

Инцидент с AntV — наглядный пример современного сбоя в npm supply chain: доверие ломается не из-за странного пакета, который никто не выбирал, а из-за того, что легитимный путь публикации становится враждебным.

Реакция команды должна быть простой и быстрой. Найдите использование AntV. Проверьте разрешенные версии. Просмотрите CI и среды разработчиков. Ротируйте раскрытые секреты там, где установка подтверждена или выглядит вероятной. Затем ужесточите правила обновления зависимостей и контроля доверия к публикации, пока не пришла следующая автоматизированная волна.