En bref

  • Trois versions malveillantes du package npm node-ipc (9.1.6, 9.2.3 et 12.0.1) publiées le 14 mai 2026 par un compte non lié au mainteneur historique.
  • Le payload vole secrets cloud, clés SSH, jetons CI/CD, sessions Claude Code et Kiro, cookies navigateur, et les exfiltre par requêtes DNS.
  • L'attaquant a pris le contrôle de l'inbox du mainteneur original via un domaine expiré racheté début mai, court-circuitant la 2FA basée sur email.

Ce qui s'est passé

Le 14 mai 2026 au matin, plusieurs équipes de recherche en sécurité, dont StepSecurity, Socket, Datadog Security Labs, OX Security et SlowMist, ont signalé une activité anormale sur le registre npm autour du package node-ipc. Ce module, maintenu historiquement par RIAEvangelist sous le pseudonyme « riaevangelist », est utilisé pour la communication inter-processus en local. Il pèse environ 822 000 téléchargements hebdomadaires et figure dans la chaîne de dépendances de nombreux outils Node.js, dont certains très populaires comme Vue CLI et plusieurs frameworks de test. Trois versions publiées en l'espace de quelques heures, 9.1.6, 9.2.3 et 12.0.1, ont été identifiées comme contenant un backdoor obfusqué.

Les versions malveillantes ont été publiées non pas par le mainteneur d'origine, mais par un compte nommé « atiertant », sans historique préalable de publication ni lien public avec le projet node-ipc. L'investigation menée par les équipes de Datadog et StepSecurity révèle que l'attaquant a procédé à une attaque en plusieurs temps. Premier élément : le domaine atlantis-software.net, utilisé pour l'adresse email associée au compte du mainteneur original, avait expiré et a été ré-enregistré chez Namecheap le 7 mai 2026. À partir de ce domaine, l'attaquant a reconstitué une infrastructure de messagerie via Namecheap PrivateEmail et capté toute la correspondance entrante destinée au mainteneur historique, y compris les liens de réinitialisation envoyés par npm. Cette technique de domain takeover via expiration reste l'un des points faibles les moins surveillés du périmètre des éditeurs open source.

Une fois l'inbox sous contrôle, l'attaquant a pu déclencher le flux de récupération du compte npm associé. La configuration historique de node-ipc s'appuyait sur une authentification à deux facteurs basée sur l'email plutôt que sur TOTP ou clé matérielle, ce qui a permis le détournement complet du compte « riaevangelist ». À partir de là, l'attaquant a publié les trois versions malveillantes en s'appuyant sur les permissions légitimes du compte, sans déclencher d'alerte automatique côté npm. Plusieurs analyses notent que la séquence d'événements n'a pris qu'une journée entre la prise de contrôle de l'inbox et la publication des versions empoisonnées, signe d'une opération préparée et déclenchée rapidement.

Le payload technique est particulièrement abouti. Plutôt que d'utiliser les hooks lifecycle de npm comme preinstall ou postinstall, qui sont aujourd'hui surveillés par la plupart des outils de scanning de dépendances, l'attaquant a injecté son code directement à la fin du fichier node-ipc.cjs sous forme d'IIFE (Immediately Invoked Function Expression). Conséquence : la charge utile se déclenche dès le premier require('node-ipc') dans le code applicatif, sans aucune action d'installation explicite. Cette technique contourne efficacement les scanners qui se contentent d'inspecter les scripts d'installation ou les manifestes package.json.

Le module collecte un éventail très large de secrets : credentials AWS et GCP depuis les fichiers .aws/credentials et .config/gcloud, clés SSH dans ~/.ssh, jetons GitHub depuis les fichiers .netrc et les configurations gh, données de configuration Terraform, Kubernetes et Docker, cookies de session Firefox, données applicatives Microsoft Teams et FileZilla, et de manière plus inédite les sessions Claude Code et Kiro stockées en local. Cette ouverture aux sessions d'agents IA confirme que les attaquants identifient désormais ces jetons comme aussi précieux que les credentials cloud classiques, puisqu'ils donnent accès à des contextes de travail entiers, des dépôts privés et parfois des API payantes.

Le canal d'exfiltration choisi est sans doute l'aspect le plus discret de l'opération. Le payload chiffre les secrets, les fragmente en blocs courts, puis les encode dans des sous-domaines DNS envoyés à une infrastructure attaquante. Chaque requête DNS porte une portion de données, et l'attaquant les recompose côté serveur autoritaire. Cette technique, baptisée DNS tunneling depuis des années, reste difficile à détecter pour les organisations qui n'inspectent pas leurs flux DNS sortants, en particulier sur les postes développeurs qui résolvent souvent depuis des résolveurs publics non journalisés. Datadog estime que des centaines de gigaoctets de données ont pu transiter sur les serveurs attaquants entre la publication et le retrait des versions.

Côté réponse, npm a retiré les trois versions malveillantes dans la soirée du 14 mai, après alerte coordonnée par les équipes de recherche. Les organisations ayant exécuté un npm install entre la publication et le retrait sont potentiellement compromises, en particulier si elles tournent sur des pipelines CI/CD avec rebuild automatique des dépendances ou si elles utilisent des plages de versions semver permettant la promotion automatique des correctifs mineurs. Une rotation systématique des secrets identifiés comme cibles du stealer est recommandée pour toute machine ayant pu charger une des versions piégées dans la fenêtre concernée.

Ce nouvel incident s'inscrit dans une série d'attaques supply chain particulièrement dense ces dernières semaines. Mini Shai-Hulud a compromis plus de 170 packages npm et 2 packages PyPI le 11 mai, en touchant TanStack, Mistral AI, UiPath et OpenSearch. Le ciblage de node-ipc trois jours plus tard, par un acteur distinct semble-t-il, suggère que les opérateurs malveillants industrialisent la prise de contrôle de packages anciens à mainteneur peu actif, en partant à la chasse aux domaines email expirés comme premier vecteur d'accès. Ce schéma d'attaque est connu depuis 2022 mais semble connaître un net regain d'intensité.

Pourquoi c'est important

L'incident node-ipc démontre qu'une seule expiration de domaine email peut suffire à compromettre un package consommé par des millions de pipelines. Pour les équipes plateforme, le risque s'apprécie en chaîne : il ne suffit plus de surveiller ses propres mainteneurs et secrets, il faut aussi assumer une part de vigilance sur les dépendances tierces, notamment celles maintenues par des contributeurs solitaires sur des domaines persos. La maturation des outils SCA (Software Composition Analysis) avec détection des changements de propriétaire et de la fraîcheur de la signature des releases devient une exigence opérationnelle.

L'évolution du payload vers le vol de sessions Claude Code et Kiro est un signal faible mais important. Les attaquants ne se contentent plus de viser les credentials cloud, ils anticipent que les développeurs ont accumulé localement des jetons d'agents IA disposant de permissions étendues sur les dépôts, sur les API payantes et parfois sur les workflows automatisés. La compromission de ces jetons offre un retour sur investissement supérieur à celui d'une simple clé AWS, parce qu'elle ouvre l'accès à un contexte de travail enrichi par des mois d'interactions et de contexte projet. Cette dimension change la nature du risque pour les équipes qui ont intégré rapidement les outils IA sans politique de gestion de secrets adaptée.

Le choix du DNS tunneling rappelle aussi que les politiques de filtrage sortant restent souvent une zone aveugle. Beaucoup d'organisations sécurisent leurs flux HTTPS sortants via des proxys avec inspection TLS, mais laissent leur trafic DNS résolvé directement par des serveurs externes. Pour les postes développeurs, la résolution DNS via le résolveur d'entreprise avec journalisation et détection d'anomalies sur les longueurs et fréquences de requêtes devient une mesure préventive proportionnée. Plusieurs solutions DNS firewall, dont Cisco Umbrella et Cloudflare Gateway, intègrent désormais des détections heuristiques sur les patterns d'exfiltration.

Enfin, cet incident souligne une fois de plus que la 2FA email reste un mécanisme insuffisant pour protéger des comptes critiques d'éditeurs open source. npm a renforcé ses exigences depuis 2023 en imposant la 2FA pour les packages à fort téléchargement, mais des comptes anciens conservent encore des configurations historiques fragiles. Les éditeurs comme GitHub et npm pourraient accélérer leur migration forcée vers des facteurs résistants au phishing, comme les Passkeys ou les clés FIDO2, sans laisser le choix aux mainteneurs. Plus largement, la résilience de l'écosystème open source dépendra de cette mise à niveau imposée par les registres, plus que de la bonne volonté individuelle des contributeurs.

Ce qu'il faut retenir

  • Trois versions de node-ipc publiées le 14 mai 2026 contiennent un stealer ciblant secrets cloud, clés SSH et sessions d'agents IA.
  • L'attaquant a pris le contrôle du compte npm via un domaine email expiré racheté, court-circuitant la 2FA basée sur courriel.
  • Toute installation entre la publication et le retrait justifie une rotation immédiate des secrets et une revue des sessions Claude Code et Kiro.

Comment vérifier si mon pipeline a installé une version piégée ?

Auditez vos lockfiles npm sur la fenêtre du 14 mai 2026, recherchez les entrées node-ipc en version 9.1.6, 9.2.3 ou 12.0.1, et corrélez avec les logs CI/CD pour identifier les exécutions concernées. Toute machine ayant chargé l'une de ces versions doit faire l'objet d'une rotation complète de ses secrets (AWS, GCP, GitHub, Claude Code, Kiro, SSH) et d'une analyse des flux DNS sortants sur la période.

Besoin d'un accompagnement expert ?

Ayi NEDJIMI vous accompagne sur vos projets cybersécurité et IA.

Prendre contact