Перейти к содержимому
Guide

Мини-червь Shai-Hulud npm: обнаруживайте, вращайте и уменьшайте радиус взрыва

| 8 min read

Пакеты NPM TanStack, Mistral AI и UiPath были атакованы 11 мая 2026 года. 60-секундный сценарий обнаружения, контрольный список ротации и одноцелевые API, которые заменяют четыре наиболее отравленных типа пакетов.

Code on a terminal representing an npm supply chain incident response
Photo by Caspar Camille Rubin on Unsplash

11 мая 2026 г. между 19:20 и 19:26 UTC злоумышленник TeamPCP запустил более 400 вредоносных версии более 170 пакетов npm и PyPI в одном скоординированном пакете. Маршрутизатор TanStack, TanStack Адаптеры запросов, Mistral AI SDK, UiPath и Guardrails AI оказались в радиусе взрыва. Шесть протокол публикации; недели уборки.

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

Если ты побежал npm install на ноутбуке CI-раннера или разработчика после 11 мая 2026 г., 19:20 UTC, вы должны пройти 60-секундную проверку, пройти ротацию и внести структурные изменения, чтобы следующая волна обходится вам дешевле. Вот пьеса.

Шаг 1: обнаружение менее чем за 60 секунд

Червь оставляет три громких сигнала: скомпрометированные версии пакетов в файле блокировки, коммит Git. или репозиторий с именем Shai-Hulud-Migrationи неожиданные действия GitHub Actions запускают это выведать секреты webhook.site или двоичный файл TruffleHog. Запустите это с любого хоста с gh и npm установлено:

Любое нажатие любой из этих четырех команд означает, что вы немедленно переходите к шагу 2. Нет путь «сначала изучи это». Червь завершает работу раньше, чем выдается рекомендация.

Полезная нагрузка Mini Shai-Hulud работает в вашем postinstall крючок с привилегиями тот, кто бежал npm install. На бегуне CI с OIDC это федеративное удостоверение. с доступом к облаку. На ноутбуке разработчика это все секреты ~/.aws, ~/.ssh, ~/.npmrcи историю вашей оболочки.

Шаг 2: сначала поверните, потом исследуйте

Судмедэкспертиза будет на следующей неделе. Ротация происходит в течение следующей минуты. Откройте вкладку Runbook для каждого секрета. поверхность, к которой прикасалась затронутая машина, и отзыв параллельно. Этот скрипт перечисляет поверхности так что ничего не пропадет:

Порядок ротации, который улавливает последующие перемещения червя, следующий: токены npm (останавливает новые публикует), GitHub PAT (останавливает создание репозитория), облачные ключи IAM (останавливает удаление данных), сторонние ключи SaaS (Stripe, Slack, OpenAI, Anthropic) и, наконец, ключи SSH, кэшированные на диске. Обновляйте свой менеджер секретов только после того, как старые учетные данные исчезнут в источнике.

Используйте API взлома, чтобы проверить, не произошла ли утечка электронной почты вашей CI

TeamPCP публикует дампы IOC, которые включают в себя электронные письма сопровождающих, полученные из скомпрометированных ~/.npmrc файлы. Запустите проверку на наличие нарушений в своих учетных записях релиз-ботов, чтобы подтвердить появился ли ваш адрес в дампах от 12 мая:

Если ваш адрес электронной почты о выпуске отображается в последнем источнике, соответствующий токен npm уже доступен. общественность. Отмените его, поменяйте доверительные отношения OIDC рабочего процесса публикации и повторно выпустите его под новая личность.

Шаг 3. Удалите утекшие секреты из журналов и заявок.

Полезная нагрузка червя сбрасывает переменные среды в журналы, которые передаются в Datadog, Sentry, Slack и ваша билетная система. Считайте каждую строку журнала, написанную после 19:20 UTC 11 мая, подозрительной. Труба поля высокого риска через PII и секретный детектор, прежде чем они попадут в холодное хранилище:

Одна и та же конечная точка помечает ключи AWS, токены npm, PAT GitHub, ключи Stripe и JWT. Подключите его к промежуточное программное обеспечение журнала, которое не закрывается: если время вызова обнаружения истекло, отбросьте строку, а не написать потенциально отравленную запись. Лучше потерять запись в журнале, чем отправлять учетные данные в запрашиваемый индекс.

Шаг 4: заблокируйте следующую волну с помощью CI-охранника

Червь полагается на три вещи, попадающие на ваш бегун: скомпрометированную версию пакета, запускается перехватчик после установки и исходящий доступ к сети для публикации. Заблокируйте любой из них и цепь рвется. Эта проверка действий GitHub не проходит PR, если обновление файла блокировки вводит заведомо плохая версия, IOC-червь или версия среды выполнения без подписанного происхождения:

Соедините его с npm config set ignore-scripts true на бегунах CI и явном список разрешений для пакетов, которым на законных основаниях требуется этап сборки (TypeScript, esbuild, Sharp). Одноразовый шум стоит защиты от червей по умолчанию.

Шаг 5: уменьшите поверхность, на которой может разместиться червь

Наиболее опасными типами пакетов в апреле и мае 2026 года были AI SDK, проверка помощники, HTTP-клиенты и крошечные утилиты. Каждый из них является кандидатом на удаление и заменить отзывным HTTP-вызовом. Сравните радиус взрыва:

Категория Типичная жертва npm Замена HTTP отзыв
Проверка электронной почты валидатор, валидатор глубокой электронной почты /v1/email/validate Поворот API-ключа
Проверка на нарушение клиентские пакеты hipp /v1/breach/check Поворот API-ключа
PII и секретное сканирование secretlint, пии-детектор /v1/pii/detect Поворот API-ключа
Парсинг телефона libphonenumber-js /v1/phone Поворот API-ключа

Сначала выберите пакеты с хуками после установки. На втором месте выберите AI SDK (Mistral, Guardrails, и LiteLLM были скомпрометированы за последние два месяца). Сохраняйте тяжелые библиотеки в процессе вам действительно нужно; удалите те, которые оборачивают вызов длительностью 200 мс, который вы могли бы сделать самостоятельно.

Ключевые выводы

  • Обнаружение за 60 секунд. Скомпрометированные версии пакетов, репозитории названы Shai-Hulud-Migrationи несанкционированный запуск GitHub Actions — это три громких сигналы. Один удар означает поворот.
  • Поверните, прежде чем исследовать. токены npm, PAT GitHub, облачные ключи, SaaS ключи, ключи SSH. Передача учетных данных червем начинается через несколько минут, а не дней.
  • Очистите журналы. Пропустить месторождения с высоким риском /v1/pii/detect и сбой закрытия по тайм-ауту. Отсутствующая строка журнала лучше утечки учетных данных.
  • Заблокируйте следующую волну. Защита CI, которая отклоняет заведомо плохие версии, IOC-черви, и неподписанные данные времени выполнения. Сопряжение с ignore-scripts по умолчанию.
  • Уменьшите поверхность. Замените одноцелевые пакеты npm отзывным HTTP. звонки. Нарушенный ключ API умирает в одном запросе; поврежденный пакет уже запущен.

Ботойские экспонаты /v1/breach/check, /v1/pii/detect, /v1/email/validateи примерно 200 других одноцелевых конечных точек за одним API. ключ на 5 рек/мин бесплатно. Подключите их к своей книге инцидентов или подключите MCP-сервер чтобы Claude Code, чтобы ваш ИИ-помощник выполнил за вас сценарий обнаружения. Просмотрите интерактивные документы начать.

FAQ

Что такое червь Мини Шай-Хулуд?
Mini Shai-Hulud — это самораспространяющаяся атака на цепочки поставок npm и PyPI, проводимая злоумышленником TeamPCP. Он компрометирует токены сопровождающего, публикует вредоносный код после установки, а затем использует украденные токены для публикации более зараженных версий в пакетах, принадлежащих сопровождающему. Волна 11 мая 2026 года затронула TanStack, Mistral AI SDK, UiPath и Guardrails AI; более 400 вредоносных версий более 170 пакетов были опубликованы примерно за шесть минут с 19:20 до 19:26 UTC.
Какие пакеты были затронуты 11 мая 2026 г.?
TanStack Router, TanStack Query (несколько адаптеров инфраструктуры), Mistral AI SDK, пакеты UiPath npm, Guardrails AI и несколько небольших библиотек, последующих за этими сопровождающими. 12 мая Wiz, Snyk и StepSecurity опубликовали рекомендации с полными списками МОК. Если ваш файл блокировки извлекает любую версию этих пакетов, опубликованную после 11 мая 2026 г., 19:20 UTC, считайте хост CI и компьютер разработчика скомпрометированными.
Как узнать, был ли поражен мой CI?
Проверьте три сигнала: фиксацию git с именем «Shai-Hulud», отправленную из бегуна CI, исходящий запрос на webhook.site или загрузку двоичного файла TruffleHog в ваших журналах CI, а также любой репозиторий GitHub с именем «Shai-Hulud-Migration» в вашей организации. Червь похищает секреты с помощью GitHub Actions, поэтому журнал аудита – это самый быстрый способ обнаружения. Отфильтруйте новые запуски рабочих процессов, которые вы не создавали в течение последних 7 дней.
Что мне следует повернуть после экспонирования?
Каждую тайну, к которой прикоснулся пострадавший бегун или ноутбук. токены npm, PAT GitHub, ключи AWS, учетные записи служб GCP, живые ключи Stripe, токены ботов Slack, ключи API OpenAI и Anthropic, учетные данные внутренней базы данных и любые ключи SSH, кэшированные на компьютере. Не проводите расследование первым; поверните, затем исследуйте. Эксфильтрация завершается за считанные секунды; вращение закрывает дверь до того, как украденные учетные данные будут проданы.
Как одноцелевые HTTP API снижают этот риск?
Вызов HTTPS к специализированному API заменяет транзитивно доверенный пакет и его перехват после установки отзывным ключом. Если поставщик API взломан, вы меняете один ключ, и трафик прекращается. Если пакет в вашем дереве взломан, значит, вредоносное ПО уже запускалось на всех машинах, на которых запускалась установка npm. Обмен — небольшая задержка для крошечного радиуса взрыва и мгновенного отзыва.

Начните разработку с botoi

150+ API-эндпоинтов для поиска, обработки текста, генерации изображений и утилит для разработчиков. Бесплатный тариф, без банковской карты.