Mise à jour du 22 mai 2026 à 14h20 UTC :
Ajout d'informations de protection supplémentaires.
Valeur de hachage mise à jour pour l'IoC relatif à index.js (le hachage précédent, a68dd1e6a6e35ec3771e1f94fe796f55dfe65a2b94560516ff4ac189390dfa1c, était censé être lié à une compromission TeamPCP similaire mais différente).
Mise à jour du 21 mai 2026 à 16h45 UTC :
Les rapports indiquent que l'extension VS Code empoisonnée impliquée dans cet incident était Nx Console (nrwl.angular-console, version 18.95.0). La version compromise de cette extension a été publiée le 18 mai 2026, et un avis de sécurité est disponible ici.
Les équipes MDR (Managed Detection and Response) de Sophos ont identifié plusieurs clients touchés grâce à la chasse aux menaces.
Nous avons également récupéré un malware à partir d'un endpoint affecté, une backdoor Python nommée cat.py (fb5c97557230a27460fdab01fafcfabeaa49590bafd5b6ef30501aa9e0a51142), avec le chemin de fichier /Users/%/.local/share/kitty/cat.py. Les premières analyses suggèrent qu'il s'agit du même malware observé lors de la récente compromission de la supply chain d'@antv, également attribuée à TeamPCP.
Il s'agit d'une backdoor distante qui télécharge et exécute du code Python arbitraire à partir d'URL contrôlées par l'attaquant. Elle utilise l'API GitHub Search comme canal de communication secret, en interrogeant api.github[.]com/search/commits toutes les heures pour le mot-clé « firedalazer », et utilise des commits GitHub publics pour cacher des commandes à la vue de tous.
Elle extrait les commandes des messages commit, les vérifie à l'aide d'une clé publique RSA intégrée, puis télécharge et exécute les charges virales Python fournies par l'attaquant.
Les 19 et 20 mai 2026, GitHub a confirmé un incident de sécurité affectant ses propres systèmes internes. Un acteur malveillant s'identifiant comme TeamPCP, également suivi sous le nom UNC6780, a compromis l'appareil développeur d'un employé au moyen d'une extension malveillante de Visual Studio Code et a utilisé cette faille pour cloner environ 3 800 dépôts internes de GitHub. L'acteur malveillant aurait mis ces données en vente sur un forum cybercriminel pour un montant supérieur à 50 000 $.
GitHub estime que les dépôts client, les comptes d'entreprise et les données utilisateur ne sont pas affectés. D’après les éléments actuels, cette compromission se limiterait au réseau interne de GitHub. GitHub affirme avoir renouvelé les identifiants, isolé les systèmes endpoint concernés et poursuit son investigation.
Sophos a mené une enquête interne et n'a trouvé aucune preuve de compromission.
Que s'est-il passé exactement ?
D’après les déclarations publiques de GitHub et les articles de The Hacker News, Cybersecurity News et d’autres médias, l’incident s’est déroulé comme suit :
- Accès Initial (Initial Access) : TeamPCP a diffusé une extension Visual Studio Code infectée sur l'appareil de développement d'un employé de GitHub. L'extension récupérait les secrets développeur et les jetons d'accès depuis l'environnement local de l’IDE.
- Vol de dépôts : à l'aide d'identifiants volés, l'attaquant a cloné environ 3 800 dépôts privés internes à GitHub contenant du code source propriétaire, des scripts de déploiement et des éléments de configuration internes. Les médias ont initialement fait état d'un chiffre d'environ 4 000 ; GitHub décrit le chiffre le plus faible comme étant « dans la même tendance » que celui de son investigation.
- Monétisation : TeamPCP a mis en vente les données volées sur un forum cybercriminel et a utilisé un compte X/Twitter prétendument associé (xploitrsturtle2) pour narguer publiquement GitHub.
- Détection par GitHub : GitHub a détecté la faille le 19 mai, a lancé une réponse à l'incident et a procédé à la rotation des secrets critiques le jour même. La version malveillante de l'extension a été supprimée ; les endpoints infectés ont été isolés.
Principales Tactiques, Techniques et Procédures (TTP) de TeamPCP
La caractéristique principale de TeamPCP est qu'il obtient un accès indirect en intégrant des backdoors dans des outils de sécurité et de développement open source que les cibles utilisent déjà et auxquels elles font confiance. Le tableau suivant résume cinq techniques majeures de TeamPCP, associées à leurs identifiants de technique MITRE ATT&CK respectifs :
- Compromission de la supply chain logicielle (T1195.002) : altération d'outils de confiance (par exemple, Trivy, Checkmarx, LiteLLM) pour distribuer des malwares via des écosystèmes de mise à jour et de paquets légitimes.
- Collecte d’identifiants à grande échelle (T1555 / T1003) : vol de mots de passe, de clés API, d'identifiants Cloud et de secrets CI/CD dans des environnements de développement et de production infectés.
- Abus de comptes valides pour l'accès latéral (T1078) : réutilisation de jetons volés et d'identifiants de développeur pour effectuer des transferts entre les dépôts, les pipelines et les organisations.
- Abus du pipeline CI/CD et de l'écosystème des packages (T1608.004) : empoisonnement (poisoning) des pipelines de compilation et publication de paquets malveillants pour propager l'accès aux utilisateurs et dépendances en aval.
- Diffusion automatisée par le biais de la propagation (worming) de dépendances logicielles (T1210 / T1105) : déploiement à grande échelle de malwares se propageant seuls (par exemple, CanisterWorm) pour se diffuser via npm et les flux de travail des développeurs.
Réponse de Sophos
Sophos a suivi activement cet incident depuis sa première divulgation publique. En interne, nous avons réalisé les actions suivantes :
- Recherche interne effectuée sur l’ensemble du parc : le proxy réseau, le pare-feu sur site (on-prem), les événements de données centralisés, le DNS, ZTNA et les logs d'audit GitHub ont tous été analysés en fonction des informations fournies jusqu'à présent. Aucune preuve de compromission n'a été trouvée. Un petit nombre de requêtes ont été résolues en ciblant des robots externes non authentifiés explorant le chemin d'URL /git-service et ont été écartées comme étant sans rapport.
- Examen du log d'audit GitHub : les actions anormales relatives aux jetons, aux secrets, à OAuth, aux webhooks et aux téléchargements au cours des 30 derniers jours ont été examinées ; tous les événements étaient conformes à une activité de routine.
- Recherche d'extensions pour VS Code : une liste des extensions VS Code présentes dans l'environnement Sophos a été collectée et est en cours d'évaluation au regard de la réputation de l'éditeur et de l’étendue des autorisations. La chasse est en cours et progresse.
- Surveillance continue : Sophos X-Ops continue de surveiller cet incident.
Recommandations
Les SophosLabs surveillent cet incident et investigueront les possibilités de détection et de mitigation liées à l'activité en matière d'exploitation. Sophos X-Ops recommande ce qui suit :
- Audit des extensions VS Code installées : extensions d'inventaire sur les systèmes endpoint de développement et les images VDI. Signalez tout élément en dehors d'un ensemble approuvé, en particulier : les éditeurs nouveaux ou rares, les typosquats, les extensions d'autorisation très récentes et les extensions permettant l'intégration de shell ou l'exécution de tâches sur des dépôts de confiance.
- Recherchez les anomalies liées à l'IDE : sur les endpoints pour développeurs, recherchez : processus enfants de VS Code lançant Git ou des outils d'authentification en dehors des heures de travail des développeurs ; téléchargement d'archive immédiatement suivi de l'exécution de l'interpréteur ; connexions sortantes vers des domaines récents ou rares depuis les hôtes des développeurs.
- Renforcez l'identité du développeur : imposez des jetons à durée de vie limitée, un accès restreint et l'authentification unique (SSO) pour le contrôle de source. Faites tourner tous les jetons d'accès développeur à longue durée de vie qui résidaient sur des hôtes potentiellement affectés. Examinez les logs d'audit pour détecter les comportements de clonage massif ou les schémas de lecture inhabituels du référentiel.
Sophos X-Ops recommande les actions suivantes aux organisations dont les développeurs ont pu installer la version compromise de l'extension Nx Console :
- Supprimez l'extension compromise : identifiez et désinstallez les versions affectées de Nx Console sur les postes de travail des développeurs et les images VDI. Veuillez vous référer à l'avis du projet Nx pour connaître la plage de versions spécifique.
- Considérez les secrets des développeurs comme étant divulgués : sur tout hôte où l'extension compromise a été installée, considérez que les identifiants résidents, les jetons, les clés SSH et les secrets CI/CD sont compromis. Faites-les pivoter. Portez une attention particulière aux jetons GitHub, npm, AWS et Vault à longue durée de vie, ainsi qu'aux identifiants publiés utilisés par les pipelines de build.
- Recherchez la backdoor Python sur macOS : recherchez l'artefact cat.py au chemin documenté et tout processus effectuant des requêtes sortantes vers api.github.com/search/commits à intervalles horaires réguliers à partir de processus autres que ceux liés aux outils de développement. Les requêtes de l’API GitHub Search lancées toutes les heures à partir d'un interpréteur Python est un indicateur très fiable.
- Publication de l’audit récent des packages : lorsque les développeurs disposaient de droits de publication sur des registres de paquets internes ou publics, examinez l'historique des paquets pour la période concernée afin de détecter toute publication inattendue signée avec des jetons volés.
Protections
Les protections suivantes sont liées à cette campagne :
- JS/Agent-BMBA
- JS/Agent-BMBB
- JS/Steal-EAT
- Troj/PyAgent-CN
- JS/Steal-EBA
IoC
- main.js (extension payload): b0cefb66b953e5184b6adb3035e9e267335ac5eabfe1848e07834777b9397b74
- index.js (orphan-commit payload): e7347d90653efc565f03733a95e9209d78f9cfa81e31ff2b2dd9d48d75a4b8b1
- cat.py (Python backdoor): fb5c97557230a27460fdab01fafcfabeaa49590bafd5b6ef30501aa9e0a51142
Billet inspiré de GitHub internal repositories breached, sur le Blog Sophos.

