170 packages npm pirates en 3 jours : la supply chain IA vise vos agents
Entre le 11 et le 14 mai 2026, la chaîne logicielle qui fait tourner vos agents IA a craqué deux fois. 173 packages compromis, 90 catégories de credentials volés, et pour la première fois une cible que personne n’avait vue venir : les fichiers de configuration de Claude, Cursor et VS Code installés sur les postes de vos développeurs.
Trois jours, deux mécanismes inédits, un même message : l’écosystème npm n’a plus de digue contre des attaquants qui investissent une journée et douze euros pour prendre le contrôle d’un compte de mainteneur. Et la nouveauté la plus inquiétante n’est pas dans les chiffres, elle est dans la cible.
Trois jours, deux attaques, 173 packages
11 mai 2026
170 packages npm et 2 packages PyPI publient simultanément 404 versions malveillantes. La liste fait froid dans le dos : 42 packages TanStack (dont @tanstack/react-router, 3 millions de downloads par semaine), les trois SDK officiels Mistral AI, 65 packages UiPath, le client OpenSearch JavaScript (1,3 million de downloads par semaine). Le vecteur initial : une chaîne de tokens GitHub Actions exploités en cascade, dans la lignée de la série Flowise-Mercor-Axios d’avril.
14 mai 2026
Trois jours plus tard, node-ipc (plus de 10 millions de downloads par semaine) publie à son tour trois versions vérolées. Mais le mécanisme change radicalement : pas de faille technique, pas de phishing. Un domaine .net racheté pour quelques euros, un email recréé, un reset de mot de passe npm parfaitement légitime, et le compte change de mains sans déclencher la moindre alerte.
Le malware déposé partage la même charge : un voleur qui ratisse plus de 90 catégories de credentials. Clés AWS, Azure, GCP, OCI, DigitalOcean, Hetzner. Clés SSH. Tokens Git, npm publish, GitHub PAT. Tokens Kubernetes. Variables Terraform state. Et, pour la première fois explicitement listés dans le payload, ~/.claude.json, ~/.claude/mcp.json et .vscode/tasks.json.
L’exfiltration ne passe pas par une infrastructure de command-and-control classique. Elle utilise Session, un messenger décentralisé sans serveur central. Bloquer le domaine d’exfiltration sur votre pare-feu ne sert à rien : il n’y en a pas.
Le mécanisme inédit : un domaine expiré, le contrôle d’un compte npm
C’est l’épisode node-ipc qui mérite d’être disséqué, parce qu’il ouvre une porte que personne ne refermera vite.
Le compte du mainteneur atiertant était associé à un email sur atlantis-software.net. Ce domaine a expiré le 10 janvier 2025, sans renouvellement. Pendant seize mois, l’adresse est restée orpheline mais le compte npm est resté actif. Le 7 mai 2026, les attaquants ont re-enregistré le domaine pour le tarif standard d’un .net. Une fois propriétaires, ils ont reconfiguré l’email, cliqué sur “mot de passe oublié” depuis l’interface npm, reçu le reset, changé le mot de passe et publié les nouvelles versions. Aucun système du mainteneur d’origine n’a été compromis.
Cette mécanique a deux propriétés qui en font un problème systémique. Elle est invisible côté npm : tous les évènements sont 100 % légitimes, un mainteneur a réinitialisé son mot de passe. Aucune anomalie à détecter. Et elle se réplique à l’échelle : combien de comptes npm parmi les 50 packages les plus téléchargés utilisent un email sur un domaine personnel ? Personne n’a la réponse, et la surface d’attaque est probablement à trois ou quatre chiffres.
Pour douze euros et une heure de travail, un attaquant peut viser un compte qui distribue du code à des dizaines de millions de développeurs. Le ratio coût/dégâts n’a plus aucun sens.
Vos configs d’agents IA sont une cible explicite
L’autre singularité de cette double attaque, c’est ce qu’elle cherche après les credentials cloud.
Le malware de l’épisode TanStack ne se contente pas d’exfiltrer. Il utilise les tokens GitHub volés pour commit, dans les repos accessibles, des fichiers .claude/settings.json et .vscode/tasks.json modifiés. Le contenu ressemble à une configuration banale, sauf qu’il enregistre un serveur MCP supplémentaire, un task de build qui s’exécute à l’ouverture du projet, ou un hook déclenché à chaque commande de l’agent.
C’est exactement le scénario décrit dans l’analyse du pattern d’architecture Lovable-MCP-Shai-Hulud : .claude/settings.json n’est pas un fichier de préférences, c’est du code que l’agent exécute. Les attaquants viennent de transformer cette intuition en arme.
Les conséquences sont systémiques. Une fois la config compromise, l’agent rejoue le payload à chaque démarrage, la persistance est automatique. Le développeur installe une version corrigée du package, mais sa configuration locale reste contaminée pendant des semaines. Pire : il pousse son repo, et la config malveillante voyage avec, contaminant tout collaborateur qui clone le projet. Le malware ne se contente plus de voler. Il s’auto-réplique en utilisant vos outils IA comme vecteur de propagation.
Pourquoi “auditer vos dépendances” ne suffit plus
Le réflexe sécurité classique invoque le SCA, npm audit, Snyk, Socket.dev, Dependabot. Tous utiles. Tous insuffisants pour ce qui se joue.
Le problème est temporel. Quand @tanstack/react-router est compromis pendant 72 heures et que le package fait 3 millions d’installations par semaine, plus d’un million de développeurs ont déjà fait npm install avant que les bases de signatures soient à jour. Le scan rétrospectif arrive après l’exfiltration.
Le pivot, c’est de changer la question. Au lieu de “ces packages sont-ils sûrs ?”, on demande “qu’est-ce que mes outils voient, et qui d’autre peut le voir ?”. Le sujet n’est plus l’audit, c’est la réduction de la surface de confiance.
Cinq actions à déployer cette semaine
- Inventaire express des installations. Identifiez tous les postes développeurs ou serveurs de build qui ont exécuté
npm installounpm updateentre le 11 et le 14 mai 2026. Unnpm ls @tanstack/react-router @opensearch-project/opensearch @mistralai/mistralaipermet de vérifier les versions. Les packages affectés sont listés dans le post-mortem TanStack officiel.
2. Rotation systématique des credentials
Si un seul poste de l’inventaire a installé une version compromise, considérez comme exposés : tokens GitHub PAT, clés AWS / GCP / Azure, npm publish tokens, clés SSH personnelles. Rotation immédiate, pas dans le sprint. Et révocation des sessions GitHub actives.
-
Audit des fichiers de configuration IA. Sur chaque poste,
git statusdans les repos personnels et professionnels. Cherchez toute modification non commitée ou commit récent de.claude/settings.json,.claude/mcp.json,.vscode/tasks.json,.cursorrules. Si un fichier a changé sans intervention humaine, reconstruisez la configuration depuis une source de référence propre. -
Commit hook d’alerte permanent. Ajoutez au pre-commit hook un check qui refuse tout commit modifiant ces fichiers sans flag explicite. Le but n’est pas d’empêcher les modifications légitimes, c’est de transformer chaque changement en décision consciente, donc traçable.
-
Revue des workflows GitHub Actions. Le vecteur initial TanStack était une faille GHA. Auditez les workflows qui acceptent du code de PR externe. Permissions OIDC en lecture seule par défaut, pas de
pull_request_targetsans isolation stricte.
L’architecture qui réduit votre surface d’exposition
Le mode de déploiement par défaut des agents IA jusqu’à mai 2026 imposait un compromis cassant : soit les contenus de votre code et de vos CRM passaient par les serveurs de l’éditeur, soit vous renonciez au modèle frontier.
Ce compromis n’existe plus depuis le 19 mai 2026, avec l’architecture self-hosted sandbox et MCP Tunnels livrée par Anthropic. L’orchestration du modèle reste chez l’éditeur, l’exécution des outils, les configs et les credentials reviennent dans votre périmètre. Vos serveurs MCP n’ont plus d’IP publique : un attaquant qui compromet un package npm n’atteint pas vos systèmes internes même s’il vole les credentials du développeur.
Pour les équipes qui passent des agents IA en production cette année, l’arbitrage migration self-hosted vs maintien en cloud est devenu un sujet de gouvernance, plus un sujet technique.
Le “lift and shift IA” sans gouvernance est intenable
Neuf incidents supply chain IA en quatre mois. Ce n’est plus une série, c’est un régime. Et ce régime a une caractéristique qui devrait alerter chaque dirigeant : le coût d’une attaque a baissé à un point où le calcul d’opportunité bascule. Douze euros et une heure pour viser un compte qui distribue du code à dix millions de développeurs.
Notre conviction : installer un agent Claude, Cursor ou Copilot dans le workflow d’une PME sans poser trois questions, qu’est-ce qu’il voit ? qu’est-ce qu’il peut modifier ? qu’est-ce qu’il commit ?, c’est ouvrir un canal d’exfiltration permanent. La maturité IA d’une équipe se mesure désormais à sa capacité à répondre, en moins de soixante secondes, à : “quels packages npm ont été installés ce mois-ci, par qui, et qu’est-ce que ces packages voient ?”.
Si la réponse est “je ne sais pas”, l’audit n’est pas une option. C’est par là qu’il faut commencer.
Auditer vos agents IA et votre supply chain avec LeCollectif
Restez informé des dernières actualités gratuitement
Automatisation, IA, développement web et stratégie digitale pour PME. Un email par semaine, zéro spam.
Articles similaires
Vercel piraté : l'OAuth d'un preneur de notes IA a suffi
Flowise, Mercor, Axios : 12 jours, 3 incidents, une seule faille
Lovable, MCP, Shai-Hulud : 3 incidents, 1 pattern d'architecture