Un incident de sécurité majeur a touché la chaîne d’approvisionnement logicielle : des paquets npm malveillants pour Nx ont été publiés, compromettant plus de 2 300 identifiants GitHub, cloud et IA. Les versions modifiées exploitaient des mécanismes d’automatisation pour injecter du code malveillant via des pull requests. Si vous recherchez des informations sur une attaque supply chain npm, vols de tokens GitHub ou des failles de sécurité dans les packages open source, ce dossier est à lire attentivement.
Qu’est-ce que Nx et pourquoi est-il ciblé ?
Présentation de la plateforme Nx
Nx est une plateforme open-source de build modulaire utilisée dans de nombreux projets JS/TS. Elle est conçue pour connecter divers outils de développement, de l’éditeur de code à l’intégration continue. Le paquet npm « nx » revendique plus de 3,5 millions de téléchargements hebdomadaires, ce qui en fait une cible de haut niveau.
Une popularité qui attire les cybercriminels
Son caractère “AI-first” et sa forte adoption dans les outils comme Visual Studio Code ont favorisé la diffusion des versions vérolées, notamment sur Linux et macOS. L’exploitation s’est produite sur le dépôt GitHub officiel du projet via une faille dans un flux de travail GitHub Actions mal configuré.
Les paquets npm compromis et leurs effets
Liste des versions infectées
Voici les paquets malveillants identifiés, publiés à partir du 26 août 2025. Tous ont été supprimés de npm :
- nx : 21.5.0, 20.9.0, 20.10.0, 21.6.0, 20.11.0, 21.7.0, 21.8.0, 20.12.0
- @nx/devkit : 21.5.0, 20.9.0
- @nx/eslint, @nx/js, @nx/node, @nx/workspace : 21.5.0, 20.9.0
- @nx/enterprise-cloud, @nx/key : 3.2.0
Contenu malveillant et actions du script
Le script malveillant se déclenche avec la commande postinstall, scannant les fichiers locaux à la recherche de mots de passe ou jetons d’accès. Il encode ces données en Base64 avant de les envoyer vers des dépôts publics GitHub comme « s1ngularity-repository » associés aux utilisateurs victimes.
Le script modifie également les fichiers .zshrc
et .bashrc
pour inclure une commande sudo shutdown -h 0, forçant un arrêt immédiat du système si le mot de passe root est saisi à l’ouverture du terminal.
Analyse de la faille exploitée
Utilisation abusive de GitHub Actions
L’équipe Nx a identifié la cause de l’injection comme provenant d’un workflow GitHub configuré avec pull_request_target
. Ce déclencheur donne des droits élevés à l’action, y compris un jeton GITHUB_TOKEN avec permissions en écriture, transformant toute PR malveillante en vecteur de compromission.
Les attaquants ont ainsi pu déclencher le script publish.yml
et voler le token npm utilisé pour publier les paquets. Ce processus leur a permis d’avoir un accès légitime au registre npm, contournant les contrôles habituels.
Méthodes d’exfiltration avancées
Le vecteur d’attaque ne s’est pas limité à l’ingénierie sociale : un mécanisme de bash injection dans le processus de validation des PR a été utilisé. Cela a permis l’envoi automatique de credentials vers un serveur distant sous contrôle des attaquants.
Impact de la campagne “s1ngularity”
Fuites massives de secrets
Les chercheurs de Wiz et de GitGuardian ont recensé pas moins de 2 349 identifiants exposés. Parmi eux, on retrouve principalement des tokens GitHub OAuth, des clefs d’accès cloud (AWS, GCP), ainsi que des informations sensibles liées à OpenAI, Google AI, Amazon Q ou encore Claude d’Anthropic.
Utilisation détournée d’assistants IA installés en CLI
La particularité de cette attaque réside dans sa manipulation d’outils IA en ligne de commande. Les attaquants ont exploité des flags comme --dangerously-skip-permissions
pour détourner des outils IA de leur usage normal, explorant l’ensemble du système de fichiers. Un comportement analysé en détail dans notre livre pour hacker, qui enseigne comment comprendre et se défendre contre ces méthodologies.
Recommandations de sécurité aux développeurs
Identifier les signes d’infection
Les développeurs doivent vérifier les fichiers .bashrc
et .zshrc
à la recherche de lignes suspectes, ainsi que les répertoires contenant « s1ngularity-repository » dans leur GitHub. La rotation immédiate de tous les tokens API, jetons npm et clefs SSH est une étape obligatoire.
Mesures prises par l’équipe Nx
Suite à l’incident, l’équipe Nx a révoqué tous ses jetons, mis en place l’authentification à deux facteurs (2FA) pour les publications, et lancé un audit des toutes les activités sur GitHub et npm. Ces actions vont dans le sens des recommandations en matière de durcissement de la chaîne CI/CD.
Un tournant dans la sophistication des attaques supply chain
Un modèle inédit d’exploitation IA
StepSecurity qualifie cet incident de premier cas documenté de détournement d’assistants IA installés localement pour contourner les pare-feux et protections traditionnelles. Cette nouvelle méthode d’attaque montre une tendance inquiétante dans l’évolution des menaces sur la chaîne d’approvisionnement logicielle.
Leçons pour les professionnels de la cybersécurité
Comme le souligne Charlie Eriksen (Aikido), l’usage de clients LLM pour explorer des secrets sur un poste est un signal fort des changements à venir en cybersécurité : les outils conçus pour aider les développeurs peuvent devenir des armes de surveillance si leur intégrité est compromise.
Cette actualité souligne à quel point nos services de cybersécurité défensive et d’audit de chaînes DevSecOps chez CyberCare sont indispensables pour prévenir et stopper ce type d’attaques furtives.