Aller au contenu
Guide

Ver Mini Shai-Hulud npm : détectez, faites pivoter et réduisez votre rayon d'explosion

| 8 min read

Les packages npm TanStack, Mistral AI et UiPath ont été touchés le 11 mai 2026. Un script de détection de 60 secondes, une liste de contrôle de rotation en premier et des API à usage unique qui remplacent quatre des types de packages les plus empoisonnés.

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

Le 11 mai 2026, entre 19h20 et 19h26 UTC, l'acteur malveillant TeamPCP a poussé plus de 400 attaques malveillantes. versions de plus de 170 packages npm et PyPI en une seule rafale coordonnée. Routeur TanStack, TanStack Les adaptateurs de requête, le SDK Mistral AI, UiPath et Guardrails AI se trouvaient tous dans le rayon d’explosion. Six procès-verbaux de publication; semaines de nettoyage.

Cette vague est le ver Mini Shai-Hulud : une charge utile post-installation à propagation automatique qui vole jetons du responsable, puis utilise ces jetons pour publier des versions plus empoisonnées dans les packages la victime contrôle. OpenAI a demandé aux utilisateurs de macOS de mettre à jour. Les pipelines CI du monde entier ont parcouru le charge utile avant que quiconque ne lise l'avis.

Si tu as couru npm install sur un ordinateur portable CI Runner ou Developer après le 2026-05-11 19:20 UTC, tu te dois un contrôle de 60 secondes, une passe de rotation et un changement structurel pour que la prochaine vague vous coûte moins cher. Voici le manuel de jeu.

Étape 1 : détecter en moins de 60 secondes

Le ver laisse trois signaux forts : des versions de paquets compromises dans votre fichier de verrouillage, un commit Git ou référentiel nommé Shai-Hulud-Migration, et des actions GitHub inattendues s'exécutent exfiltrer des secrets pour webhook.site ou un binaire TruffleHog. Exécutez ceci depuis n'importe quel hôte avec gh et npm installé:

Tout appui sur l’une de ces quatre commandes signifie que vous passez immédiatement à l’étape 2. Il n'y a pas chemin "regardez-le d'abord". Le ver se termine avant l'avis.

La charge utile Mini Shai-Hulud s'exécute dans votre postinstall crochet avec les privilèges de celui qui a couru npm install. Sur un exécuteur CI avec OIDC, il s'agit d'une identité fédérée avec accès au cloud. Sur un ordinateur portable de développeur, c'est tout le secret de ~/.aws, ~/.ssh, ~/.npmrc, et l'historique de votre shell.

Étape 2 : faites une rotation d'abord, enquêtez ensuite

La médecine légale a lieu la semaine prochaine. La rotation est pour la minute suivante. Ouvrez un onglet Runbook pour chaque secret surface touchée par la machine concernée et révoquée en parallèle. Ce script énumère les surfaces donc rien n'est oublié :

L'ordre de rotation qui capture les mouvements aval du ver est le suivant : jetons npm (arrête les nouveaux publie), les PAT GitHub (arrête la création du référentiel), les clés cloud IAM (arrête l'exfil des données), des clés SaaS tierces (Stripe, Slack, OpenAI, Anthropic), et enfin des clés SSH mises en cache sur disque. Mettez à jour votre gestionnaire de secrets uniquement une fois que les anciennes informations d'identification sont mortes à la source.

Utilisez l'API de violation pour vérifier si votre e-mail CI a été divulgué

TeamPCP publie des dumps IOC qui incluent les e-mails du responsable récoltés à partir de fichiers compromis ~/.npmrc fichiers. Exécutez une vérification des violations sur vos comptes de robots de version pour confirmer si votre adresse figurait dans les dumps du 12 mai :

Si votre e-mail de version apparaît dans la dernière source, le jeton npm correspondant est déjà publique. Révoquez-le, faites pivoter la relation d'approbation OIDC du workflow de publication et rééditez-le sous un nouvelle identité.

Étape 3 : effacez les secrets divulgués des journaux et des tickets

Les charges utiles du ver transfèrent les variables d'environnement dans les journaux qui circulent dans Datadog, Sentry, Slack et votre système de billetterie. Traitez chaque ligne de journal écrite après 19h20 UTC le 11 mai comme suspecte. Tuyau champs à haut risque via un PII et un détecteur secret avant qu’ils n’atteignent l’entrepôt frigorifique :

Le même point de terminaison signale les clés AWS, les jetons npm, les PAT GitHub, les clés Stripe et les JWT. Câblez-le dans un log middleware qui échoue fermé : si l'appel de détection expire, supprimez la ligne plutôt que écrire un dossier potentiellement empoisonné. Mieux vaut perdre une entrée de journal que d'envoyer des informations d'identification à un index interrogeable.

Étape 4 : bloquer la prochaine vague avec un garde CI

Le ver s'appuie sur trois éléments qui atterrissent sur votre runner : une version de package compromise, un hook post-installation qui s'exécute et accès réseau sortant pour publier. Bloquez n'importe lequel d'entre eux et la chaîne se brise. Cette vérification des actions GitHub échoue au PR si une mise à jour du fichier de verrouillage introduit un version connue-mauvaise, un ver IOC ou un dépôt d'exécution sans provenance signée :

Associez-le à npm config set ignore-scripts true sur les coureurs CI et un explicite liste verte pour les packages qui nécessitent légitimement une étape de construction (TypeScript, esbuild, Sharp). Le le bruit ponctuel vaut la valeur par défaut anti-vers.

Étape 5 : rétrécir la surface pouvant accueillir un ver

Les types de packages les plus empoisonnés au cours des vagues d'avril et mai 2026 étaient les SDK IA, validation assistants, clients HTTP et petits utilitaires. Chacun d'entre eux est candidat à la suppression et remplacer par un appel HTTP révocable. Comparez le rayon de l'explosion :

Catégorie Victime typique du NPM Remplacement HTTP Révocation
Validation par e-mail validateur, validateur de courrier électronique approfondi /v1/email/validate Rotation de la clé API
Vérification des violations packages clients hibp /v1/breach/check Rotation de la clé API
PII et analyse secrète secretlint, détecteur pii /v1/pii/detect Rotation de la clé API
Analyse du téléphone libphonenumber-js /v1/phone Rotation de la clé API

Choisissez d'abord les packages avec des hooks de post-installation. Choisissez ensuite les SDK IA (Mistral, Guardrails, et LiteLLM ont tous été compromis au cours des deux derniers mois). Conservez de lourdes bibliothèques en cours vous en avez réellement besoin ; supprimez ceux qui enveloppent un appel de 200 ms que vous pourriez passer vous-même.

Points clés à retenir

  • Détecter en 60 secondes. Versions de package compromises, dépôts nommés Shai-Hulud-Migration, et les exécutions non autorisées de GitHub Actions sont les trois plus bruyantes signaux. Un coup signifie tourner.
  • Faites pivoter avant d’enquêter. jetons npm, PAT GitHub, clés cloud, SaaS clés, clés SSH. La vente en aval des identifiants par le ver commence en quelques minutes, et non en quelques jours.
  • Frottez les journaux. Acheminez les champs à haut risque vers /v1/pii/detect et échec de fermeture à l'expiration du délai. Une ligne de journal manquante bat une fuite d'informations d'identification.
  • Bloquez la prochaine vague. Garde CI qui rejette les mauvaises versions connues, les IOC de vers, et les dépôts d'exécution non signés. Associer avec ignore-scripts par défaut.
  • Rétrécissez la surface. Remplacez les packages NPM à usage unique par du HTTP révocable appels. Une clé API violée meurt en une seule requête ; un package violé a déjà été exécuté.

Botoi exposes /v1/breach/check, /v1/pii/detect, /v1/email/validate, et environ 200 autres points de terminaison à usage unique derrière une seule API clé avec 5 req/min gratuites. Connectez-les à votre runbook d'incidents ou connectez le Serveur MCP à Claude Code pour que votre assistant IA exécute le script de détection pour vous. Parcourez le documents interactifs pour commencer.

FAQ

Qu'est-ce que le ver Mini Shai-Hulud ?
Mini Shai-Hulud est une attaque de chaîne d'approvisionnement NPM et PyPI à propagation automatique menée par l'acteur menaçant TeamPCP. Il compromet les jetons du responsable, publie du code post-installation malveillant, puis utilise les jetons volés pour publier davantage de versions empoisonnées sur les packages appartenant au responsable. La vague du 11 mai 2026 a touché TanStack, Mistral AI SDK, UiPath et Guardrails AI ; plus de 400 versions malveillantes de plus de 170 packages ont été publiées en six minutes environ entre 19h20 et 19h26 UTC.
Quels forfaits ont été concernés le 11 mai 2026 ?
TanStack Router, TanStack Query (plusieurs adaptateurs de framework), Mistral AI SDK, les packages UiPath npm, Guardrails AI et plusieurs bibliothèques plus petites en aval de ces responsables. Wiz, Snyk et StepSecurity ont tous publié des avis le 12 mai avec les listes complètes du CIO. Si votre fichier de verrouillage a extrait une version de ces packages publiée après le 11/05/2026 à 19h20 UTC, considérez l'hôte CI et la machine du développeur comme compromis.
Comment puis-je savoir si mon CI a été touché ?
Check three signals: a git commit named 'Shai-Hulud' pushed from a CI runner, an outbound request to webhook.site or a TruffleHog binary download in your CI logs, and any GitHub repository named 'Shai-Hulud-Migration' in your org. Le ver exfiltre les secrets via GitHub Actions, le journal d'audit constitue donc votre surface de détection la plus rapide. Filtrez les nouvelles exécutions de flux de travail que vous n’avez pas créées au cours des 7 derniers jours.
Que dois-je faire pivoter après l’exposition ?
Chaque secret touché par le coureur ou l'ordinateur portable concerné. jetons npm, PAT GitHub, clés AWS, comptes de service GCP, clés live Stripe, jetons de bot Slack, clés API OpenAI et Anthropic, informations d'identification de base de données interne et toutes clés SSH mises en cache sur la machine. N’enquêtez pas d’abord ; faites pivoter, puis enquêtez. L'exfiltration se termine en quelques secondes ; la rotation ferme la porte avant que les informations d’identification volées ne soient vendues.
Comment les API HTTP à usage unique réduisent-elles ce risque ?
Un appel HTTPS vers une API à usage unique remplace un package de confiance transitive et son hook post-installation par une clé révocable. Si le fournisseur d'API est violé, vous faites pivoter une clé et le trafic s'arrête. Si un package de votre arborescence est piraté, le logiciel malveillant s'est déjà exécuté sur chaque machine exécutant l'installation de npm. L'échange est une faible latence pour un petit rayon d'explosion et une révocation instantanée.

Commencez a construire avec botoi

150+ endpoints API pour la recherche, le traitement de texte, la generation d'images et les utilitaires pour developpeurs. Offre gratuite, sans carte bancaire.