GitHub a confirmé cette semaine qu'environ 3 800 de ses dépôts internes ont été exfiltrés après qu'un de ses propres ingénieurs a installé une version malveillante de l'extension VS Code Nx Console. L'incident, révélé par le RSSI de GitHub Alexis Wales dans un billet de blog détaillé publié mercredi soir, est désormais directement rattaché à l'attaque plus large de la chaîne logistique npm de TanStack qui secoue l'écosystème JavaScript depuis une semaine.
Points clés
- Environ 3 800 dépôts internes de GitHub ont été consultés puis exfiltrés par un groupe se faisant appeler TeamPCP.
- Le vecteur d'attaque est une version piégée de Nx Console 18.95.0, l'extension officielle VS Code pour la chaîne d'outils monorepo Nx.
- L'extension empoisonnée n'est restée disponible que 18 minutes sur le Visual Studio Marketplace le 18 mai 2026, et 36 minutes sur OpenVSX.
- TeamPCP a mis le code source volé en vente sur le forum cybercriminel Breached pour au moins cinquante mille dollars.
- GitHub affirme que les données clients stockées en dehors des dépôts compromis n'ont pas été volées, et que les dépôts publics des utilisateurs restent intacts.
Ce qui s'est passé
Selon GitHub, un seul terminal employé a été compromis après que l'ingénieur a installé la version malveillante de Nx Console. Au démarrage, l'extension exécutait silencieusement une commande shell qui téléchargeait et lançait une charge utile cachée depuis un commit planté dans le dépôt officiel nrwl/nx sur GitHub, déguisée en simple tâche de configuration du Model Context Protocol.
Cette charge utile était un voleur d'identifiants conçu pour récolter des secrets dans un large éventail d'outils de développement : coffres-forts 1Password, configurations Anthropic Claude Code, jetons npm, identifiants GitHub, clés d'accès AWS, fichiers kubeconfig de Kubernetes, ainsi que des identifiants GCP et Docker. Munis de ces identifiants, les opérateurs de TeamPCP ont pivoté vers l'empreinte interne de gestion de code source de GitHub et cloné les dépôts concernés.
Le lien avec TanStack
L'équipe Nx a révélé que son extension avait été empoisonnée à la suite de la récente compromission de la chaîne logistique de TanStack, au cours de laquelle le système d'un de leurs propres développeurs avait été piraté. La même chaîne d'attaque a été reliée à des tentatives de vol d'identifiants visant OpenAI, Mistral AI et Grafana Labs, ce qui suggère que TeamPCP cible systématiquement des organisations de développeurs à forte valeur via les pipelines npm et VS Code Marketplace.
L'éditeur de sécurité StepSecurity, qui suit la campagne, qualifie la compromission de Nx Console d'attaque de chaîne logistique de second ordre manuelle : les développeurs font bien plus confiance à leurs extensions d'IDE qu'à leurs dépendances, et peu d'organisations auditent les mises à jour d'extensions avec la même rigueur qu'elles appliquent aux fichiers de paquets.
La réponse de GitHub
Le RSSI Alexis Wales explique dans le rapport d'incident que la réponse s'est déroulée en trois phases :
- Contenir : le poste compromis a été isolé et la version malveillante de l'extension a été retirée de la circulation.
- Faire tourner : "Nous avons fait tourner les secrets critiques lundi et jusqu'à mardi, en donnant la priorité aux identifiants à plus fort impact", écrit Wales.
- Valider : les journaux ont été analysés à travers l'infrastructure de production de GitHub afin de confirmer la rotation des secrets et de surveiller toute activité de suivi.
L'entreprise insiste : il n'existe aucune preuve que des données clients stockées en dehors des dépôts internes affectés aient été volées, et aucun dépôt public d'utilisateur GitHub.com n'a été touché.
Impact
Pour l'écosystème des développeurs au sens large, cette brèche relance une préoccupation ancienne : les extensions d'IDE constituent désormais une surface d'attaque de premier plan, au même titre que les gestionnaires de paquets. Une installation classique de Visual Studio Code embarque des dizaines d'extensions, chacune capable de lire le code source local, d'exfiltrer des variables d'environnement et d'exécuter des commandes shell arbitraires au démarrage — généralement sans aucune mise en bac à sable.
Le fait que la version piégée de Nx Console soit restée en ligne moins de vingt minutes avant d'être retirée, tout en se propageant suffisamment pour atteindre GitHub elle-même, illustre la rapidité des attaques modernes de chaîne logistique. Des chercheurs ont reproché à des éditeurs de détection comme Aikido et Snyk de ne pas disposer de signatures pour la version malveillante plusieurs heures après la divulgation.
Contexte
TeamPCP n'est pas un acteur nouveau. Le groupe a été relié à des campagnes antérieures de chaîne logistique sur PyPI, npm, GitHub Actions et Docker Hub, pivotant généralement à partir d'un seul compte de mainteneur compromis vers les consommateurs en aval. L'écosystème TanStack — une collection populaire de bibliothèques headless d'interface utilisateur et de récupération de données, utilisée par des dizaines de milliers de projets React et Vue — est devenu plus tôt ce mois-ci le dernier maillon de ce schéma.
Pour les utilisateurs de Nx en particulier, la plage des versions malveillantes a été publiée et l'équipe Nx a poussé des versions propres. Le conseil de remédiation pour tout développeur ayant exécuté Nx Console entre environ 12h30 et 12h48 UTC le 18 mai est le scénario standard d'incident de chaîne logistique : faire tourner tous les identifiants de développeur, auditer l'activité git récente et examiner les journaux d'accès de tout compte cloud sur la fenêtre concernée.
Et ensuite
GitHub a promis un post-mortem plus complet dans les semaines à venir, incluant les catégories de code interne présentes dans les dépôts touchés. Microsoft, maison mère de GitHub, accélérerait selon des sources le travail sur un niveau d'"extensions vérifiées" pour le Visual Studio Marketplace, sans qu'aucune annonce officielle n'ait été faite pour l'instant.
Pour les équipes de développement de la région MENA et au-delà, l'enseignement pratique est immédiat : traitez les extensions d'IDE comme des dépendances de production. Épinglez les versions, auditez avant de mettre à jour, restreignez la portée des identifiants et partez du principe que toute extension non isolée peut lire vos secrets dès l'instant où vous ouvrez votre éditeur.