
GitHub piraté via une extension VS Code (mai 2026) : le plan d'action d'urgence en 60 minutes que chaque développeur devrait exécuter ce soir
Le 20 mai 2026, GitHub a confirmé que 3 800 de ses dépôts de code source internes ont été exfiltrés via une extension VS Code malveillante installée sur le poste de travail d'un employé. Si vous avez utilisé un PAT GitHub ou un jeton npm dans VS Code au cours des 14 derniers jours, les 60 prochaines minutes comptent. Voici le plan : ce qui s'est réellement passé, si vous êtes concerné, et quelle credential faire tourner en premier.
Points clés
- Ce qui s'est passé : l'infrastructure de production de GitHub.com n'a pas été compromise — un employé avait installé une extension empoisonnée (très probablement Nx Console v18.95.0) qui a exfiltré des PAT et vidé environ 3 800 dépôts internes.
- Données clients : non affectées. Les données compromises sont le code source interne de GitHub, pas le code ou les comptes des clients.
- Qui est concerné : tout développeur ayant installé une extension VS Code entre environ le 18 mai à 12 h 36 UTC et 12 h 47 UTC (la fenêtre de 11 minutes), ou toute personne utilisant des PAT GitHub à longue durée de vie depuis VS Code.
- Que faire maintenant : faire tourner les PAT GitHub en premier, les jetons npm en deuxième, les clés AWS/cloud en troisième — plan complet dans la section « Ce que les développeurs doivent faire » ci-dessous.
TL;DR : les 6 actions à accomplir dans l'heure
Le moyen le plus rapide de limiter le rayon d'explosion de l'affaire github pirate extension vscode est de faire tourner les identifiants qu'une extension empoisonnée peut atteindre, d'auditer ce qui est installé sur votre machine et de vérifier votre journal d'audit GitHub pour la fenêtre du 18 au 20 mai UTC. Six actions, classées par impact, dans l'ordre.
- Révoquer chaque Personal Access Token GitHub créé ou utilisé dans VS Code au cours des 30 derniers jours.
- Faire tourner les jetons npm via
npm token revokeet les réémettre avec 2FA + publication de confiance. - Scanner votre machine pour détecter les IoC de GHSA-c9j4-9m59-847w (chemins de fichiers, processus ; commandes ci-dessous).
- Auditer
code --list-extensions --show-versionset désinstaller tout ce que vous ne pouvez pas justifier. - Épingler les versions d'extensions dans
devcontainer.jsonet appliquer une liste d'autorisations au niveau de l'organisation. - Vérifier le journal d'audit de votre organisation GitHub pour des pushs inhabituels entre le 18 et le 20 mai UTC.
Si vous n'avez le temps que pour deux actions, faites le #1 et le #3. Le reste peut attendre une heure.
GitHub a-t-il vraiment été piraté ? Mettons les choses au clair
Non, l'infrastructure de production de GitHub.com n'a pas été compromise le 20 mai 2026. Le poste de travail d'un seul employé de GitHub a été compromis après l'installation d'une extension VS Code malveillante (très probablement Nx Console v18.95.0). L'attaquant, se faisant appeler TeamPCP (référencé sous UNC6780), a exfiltré environ 3 800 dépôts de code source internes de GitHub. Le code client, les comptes clients et les services de production de GitHub ne sont pas affectés.
Voici la version claire de ce qui s'est passé et de ce qui ne s'est pas passé.
| Ce qui s'est passé | Ce qui ne s'est PAS passé |
|---|---|
| Le poste d'un employé a été compromis via une extension VS Code empoisonnée | L'infrastructure de production de GitHub.com a été compromise |
| ~3 800 dépôts de code source internes ont été exfiltrés | Des dépôts ou comptes clients ont été touchés |
| Des identifiants de l'employé GitHub sur ce poste ont été volés | Des PAT clients, jetons npm ou autorisations OAuth ont été volés depuis les systèmes de GitHub |
| TeamPCP a exigé une rançon (selon Tom's Hardware) | GitHub a payé (aucune preuve de paiement) |
Pourquoi ce cadrage importe-t-il ? Parce que la leçon à retenir n'est pas « github piraté ». C'est que les postes de travail des développeurs sont désormais le ventre mou de chaque organisation d'ingénierie. Chaque secret que possède votre équipe (PAT GitHub, jetons npm, clés AWS, sessions Vault, clés de fournisseurs d'IA) se trouve sur un laptop avec une couverture EDR quasi nulle. Une seule extension empoisonnée exécutée dans votre IDE hérite de tout ça.
Le porte-parole de GitHub, cité par Bleeping Computer, a confirmé le cadrage « poste employé » et la ligne « pas de données clients ». Help Net Security a ajouté l'attribution TeamPCP. La chaîne de preuves technique pour l'extension se trouve dans l'advisory GHSA-c9j4-9m59-847w.
GitHub.com n'a pas été piraté. Un employé de GitHub l'a été. Gardez ce cadre à l'esprit en lisant la suite.
Ce qui s'est réellement passé : chronologie de la compromission de mai 2026
L'histoire de la compromission GitHub 2026 s'est déroulée en quatre étapes sur une quarantaine d'heures. Une extension empoisonnée a été publiée le 18 mai à 12 h 36 UTC, retirée 11 minutes plus tard, détectée par GitHub le lendemain, et divulguée publiquement le 20 mai. La chronologie condensée, avec les sources :
| Heure (UTC) | Événement | Source |
|---|---|---|
| 18 mai, 12 h 36 | Nx Console v18.95.0 publié sur OpenVSX / Visual Studio Marketplace (très probablement) | StepSecurity / GHSA-c9j4-9m59-847w |
| 18 mai, 12 h 47 | Version malveillante retirée — fenêtre de 11 minutes | StepSecurity |
| 19 mai | GitHub détecte la compromission du poste de l'employé ; contient l'incident | Porte-parole GitHub via Bleeping Computer |
| 20 mai | Divulgation publique ; TeamPCP / UNC6780 revendique publiquement l'attribution | Help Net Security, Hackread |
Cette fenêtre de 11 minutes est le détail le plus étrange. Elle suggère que l'attaquant a fait tourner des extensions pour échapper à la détection du marketplace, le même schéma que Koi Security a documenté avec le ver GlassWorm sur OpenVSX en octobre 2025. TeamPCP / UNC6780 a précédemment revendiqué des compromissions en 2026 contre Trivy, KICS, LiteLLM, TanStack et MistralAI. Même groupe, même mode opératoire, cibles différentes.
Le mois dernier, c'étaient les variables d'environnement de Vercel. Aujourd'hui, ce sont les dépôts de GitHub. Le schéma que nous observons depuis 9 mois continue d'élargir son rayon de dégâts. Voir notre analyse de la réponse à la compromission Vercel pour l'incident jumeau.
L'extension probablement en cause : Nx Console v18.95.0 (et pourquoi GitHub ne confirme pas)
GitHub n'a pas officiellement nommé l'extension impliquée dans la compromission du poste de l'employé. Les preuves forensiques pointent fortement vers Nx Console v18.95.0, mais cela reste très probablement, non confirmé. Nous mettrons à jour cet article si GitHub nomme publiquement une autre extension. Considérez le reste de cette section comme la meilleure attribution disponible, pas comme un fait établi.
Quatre éléments de preuves circonstancielles associent Nx Console à la divulgation GitHub :
- Correspondance temporelle : la fenêtre de l'advisory GHSA-c9j4-9m59-847w (18 mai, 12 h 36-12 h 47 UTC) s'inscrit dans la fenêtre de compromission du poste employé selon la divulgation propre de GitHub.
- Chevauchement d'IoC forensiques : l'analyse de la charge utile Nx Console publiée par StepSecurity (chemins de fichiers, processus comme
__DAEMONIZED, points de terminaison réseau) correspond aux artefacts observés sur le poste compromis selon le rapport de Wiz. - Schéma d'attribution TeamPCP : TeamPCP / UNC6780 est actif dans l'espace supply chain VS Code et npm (Trivy, KICS, LiteLLM, TanStack, MistralAI en 2026) avec une structure de charge utile cohérente.
- La fenêtre de retrait de 11 minutes : caractéristique des attaques supply chain où l'attaquant contrôle le moment de publication mais le marketplace le détecte rapidement.
Si vous n'avez pas installé Nx Console, vous n'êtes pas pour autant hors de danger. Le schéma d'attaque plus large (processus __DAEMONIZED, abus IMDS, exfil de ~/.claude/settings.json) se généralise à n'importe quelle extension empoisonnée. Le triage de la section suivante s'applique quelle que soit l'extension suspectée.

Êtes-vous affecté ? Le triage en 5 minutes
Trois tests rapides. (1) Avez-vous installé ou mis à jour automatiquement une extension VS Code entre le 18 mai à 12 h 36 et 12 h 47 UTC ? (2) Des fichiers IoC de GHSA-c9j4-9m59-847w sont-ils présents sur votre machine ? (3) Avez-vous utilisé un PAT GitHub dans VS Code au cours des 14 derniers jours ? Effectuez les trois en moins de cinq minutes.
Test 1 — Audit des extensions
# Lister toutes les extensions installées avec leurs versions
code --list-extensions --show-versions
# Vérifier spécifiquement Nx Console v18.95.0
code --list-extensions --show-versions | grep -i "nrwl.angular-console\|nx-console"Toute extension mise à jour automatiquement entre le 17 et le 18 mai mérite un second regard. Si vous voyez Nx Console exactement à 18.95.0, vous êtes un cas probable. La version corrigée est 18.100.0. Désinstallez ou passez directement au plan ci-dessous.
Test 2 — Scan des IoC
# Vérifier les artefacts du processus de collecte d'identifiants daemonisé (GHSA-c9j4-9m59-847w)
ps aux | grep -i "__DAEMONIZED" | grep -v grep
ls -la ~/.local/share/kitty/ 2>/dev/null
find ~ -name "*.daemonized*" 2>/dev/null
# Indicateur d'abus IMDS (collecte d'identifiants AWS)
# Vérifier l'historique du shell pour un curl inattendu vers 169.254.169.254
grep -E "169\.254\.169\.254|metadata\.google\.internal" ~/.zsh_history ~/.bash_history 2>/dev/nullUne machine propre ne devrait rien retourner pour le grep __DAEMONIZED, aucun fichier .daemonized et aucun appel IMDS dans l'historique du shell. Si l'un de ces tests est positif, considérez le laptop comme compromis et traitez chaque identifiant qu'il a touché au cours des 30 derniers jours comme brûlé.
Test 3 — Exposition des PAT
Si vous avez utilisé un PAT GitHub (classique ou à granularité fine) dans n'importe quel terminal VS Code, git intégré ou extension appelant l'API GitHub au cours des 14 derniers jours, considérez-le comme compromis et passez au plan de rotation ci-dessous. C'est la valeur par défaut conservatrice — vous ne pouvez pas auditer « le jeton était-il en mémoire pendant que l'extension était active ? ». Faites-le tourner.
Si vous utilisez Claude Code, la liste des IoC inclut spécifiquement ~/.claude/settings.json. Consultez notre guide Claude Code hooks pour savoir ce qui est stocké dans ce fichier et quelles clés faire tourner en premier.
Verdict. Si l'un de ces trois tests est positif, arrêtez de lire la narration. Passez directement au plan de la section suivante. Les 55 prochaines minutes comptent plus que l'analyse rétrospective.
Ce que les développeurs doivent faire : le plan d'action d'urgence en 60 minutes
Faites tourner les identifiants par ordre de priorité. Niveau 0 (30 prochaines minutes) : PAT GitHub et jetons npm. Niveau 1 (aujourd'hui) : clés AWS / cloud, 1Password / Vault, secrets GitHub Actions. Niveau 2 (cette semaine) : SaaS tiers, autorisations OAuth, clés SSH. Niveau 3 (dès que possible) : clés en lecture seule et publiques. Chaque niveau correspond à une réduction spécifique du rayon d'explosion.

MAINTENANT : si vous pensez être touché
Si votre triage est revenu positif, faites ces trois choses dans l'ordre avant tout le reste.
- Tuer le daemon et désinstaller l'extension suspecte :
# Tuer la charge utile malveillante (GHSA-c9j4-9m59-847w)
pkill -f __DAEMONIZED
pkill -f "nx-console.*18.95.0"
# Désinstaller l'extension suspecte immédiatement
code --uninstall-extension nrwl.angular-console- Débrancher le câble réseau si vous avez des preuves d'exfiltration active. Ça paraît extrême. Ça l'est. Faites-le quand même. Vous pouvez réinvestiguer hors ligne.
- Appeler votre équipe sécurité ou poster dans
#securitySlack avant d'exécuter quoi que ce soit d'autre. Si vous travaillez seul, passez directement au Niveau 0 ci-dessous.
Niveau 0 (30 prochaines minutes) : GitHub + npm
Révocation de PAT GitHub via le CLI gh et l'interface web :
# Confirmer sous quel compte vous êtes authentifié
gh auth status
# Lister les installations d'applications auxquelles le jeton a accès (aide à inventorier le rayon d'explosion)
gh api -H "Accept: application/vnd.github+json" /user/installations
# Le CLI gh ne peut pas révoquer directement les PAT classiques — utiliser l'interface web :
# https://github.com/settings/tokens
# Cliquer sur "Revoke" pour CHAQUE jeton. Ne pas sélectivement garder "celui qui est probablement ok".
# Réémettre avec des PAT à granularité fine + expiration ≤90 jours :
# https://github.com/settings/personal-access-tokens/new
# Un dépôt à la fois, jamais tout le compte.
# Pour les PAT et installations appartenant à l'organisation :
gh api /orgs/{ORG}/installationsRotation des jetons npm :
# Lister et révoquer chaque jeton npm
npm token list
npm token revoke <token-id-1>
npm token revoke <token-id-2>
# Forcer la 2FA sur l'authentification et les écritures
npm profile enable-2fa auth-and-writes
# Pour la CI : migrer vers la publication de confiance OIDC — plus de jetons à longue durée
# Docs : https://docs.npmjs.com/trusted-publishersSi vous maintenez des packages publiés, votre jeton npm est l'identifiant le plus dangereux que vous possédez. Faites-le tourner avant AWS.
Niveau 1 (aujourd'hui) : Cloud + Vaults + Secrets CI
Les clés d'accès AWS viennent ensuite. Les IoC montrent un abus IMDS, donc tout utilisateur IAM ayant touché le poste compromis est suspect :
# Lister les clés d'accès pour l'utilisateur IAM actuel
aws iam list-access-keys --user-name $(aws sts get-caller-identity --query 'Arn' --output text | cut -d/ -f2)
# Désactiver l'ancienne clé (ne pas supprimer encore — laisser les workloads échouer bruyamment d'abord)
aws iam update-access-key --access-key-id AKIA... --status Inactive --user-name <user>
# Créer une nouvelle clé
aws iam create-access-key --user-name <user>
# Une fois déployée et vérifiée, supprimer l'ancienne clé
aws iam delete-access-key --access-key-id AKIA... --user-name <user>
# Si une instance EC2 utilisait IMDSv1, forcer IMDSv2 immédiatement
aws ec2 modify-instance-metadata-options --instance-id i-... --http-tokens requiredCLI 1Password : se déconnecter de chaque appareil (op signout --all), régénérer les jetons de session et auditer les accès récents au vault via le journal d'audit web de 1Password pour tout ce qui a été exécuté depuis le poste compromis.
HashiCorp Vault : révoquer votre jeton utilisateur (vault token revoke -self) et demander à un administrateur d'en émettre un nouveau avec un TTL plus court.
Secrets GitHub Actions : si un identifiant qui a tourné se trouve aussi dans Actions, mettez-le à jour. Utilisez gh secret set GITHUB_PAT --body <new-pat> par dépôt, ou l'interface org-level pour les secrets d'organisation.
Clés API Anthropic et OpenAI : la liste des IoC de GHSA-c9j4-9m59-847w cible spécifiquement ~/.claude/settings.json comme cible de collecte. Révoquez et réémetez votre clé API Anthropic et toute clé OpenAI que vous avez déjà stockée dans ce fichier.
Niveau 2 (cette semaine) : SSH + OAuth + Gestionnaires de mots de passe
Les clés SSH évoluent plus lentement mais restent dans le périmètre. L'extension avait un accès en lecture au système de fichiers sur ~/.ssh/ :
# Auditer les clés SSH existantes (quand ont-elles été générées ?)
for key in ~/.ssh/id_*; do
if [ -f "$key" ]; then
echo "Key: $key"
stat -c '%y' "$key" 2>/dev/null || stat -f '%Sm' "$key"
fi
done
# Générer une nouvelle clé Ed25519
ssh-keygen -t ed25519 -C "rotated-$(date +%Y%m%d)" -f ~/.ssh/id_ed25519_new
# Téléverser la clé publique vers GitHub
gh ssh-key add ~/.ssh/id_ed25519_new.pub --title "rotated-$(date +%Y%m%d)"
# Supprimer l'ancienne clé depuis l'interface web GitHub, puis vérifier que SSH fonctionne toujours
ssh -T [email protected]Gestionnaire de mots de passe du navigateur et trousseau OS : faire tourner tout mot de passe que l'extension aurait pu voir via le presse-papiers. L'exposition réaliste concerne les mots de passe copiés dans le presse-papiers pendant que l'extension était active.
Niveau 3 (dès que possible) : Audit + Vérification
Auditer le journal de votre organisation GitHub pour la fenêtre de compromission. Cela nécessite les droits d'administrateur org :
# Récupérer les événements push pour la fenêtre du 18 au 20 mai
gh api -X GET /orgs/{ORG}/audit-log \
--paginate \
-f phrase='action:repo.push created:2026-05-18..2026-05-20' | jq '.[] | {actor, created_at, repo}'
# Vérifier les commits suspects (auteurs inattendus, grandes diffs)
gh api -X GET /repos/{ORG}/{REPO}/commits \
-f since=2026-05-18T00:00:00Z \
-f until=2026-05-20T23:59:59Z | jq '.[] | {sha, author: .commit.author, message: .commit.message}'
# Actualiser les autorisations OAuth
gh auth refresh -s admin:org -s admin:public_keySi le journal d'audit montre des pushs de la fenêtre de compromission que vous n'avez pas effectués, escaladez vers votre équipe sécurité et préservez le JSON du journal. Ne tentez pas d'« annuler » quoi que ce soit dans le dépôt. Préservez d'abord les preuves.
Nous avons couvert la même logique de rotation par niveaux pour la compromission des variables d'environnement Vercel en avril : même structure, couche différente.
Le cadre d'audit en 5 questions (à utiliser en permanence)
Avant d'installer ou de faire confiance à une extension VS Code, soumettez-la à cinq tests : ancienneté du domaine de l'éditeur, vélocité des versions, événements d'activation dans package.json, périmètre des permissions par rapport au comportement attendu et audit du dépôt open source. Nx Console v18.95.0 aurait échoué au test #2 : un saut de version soudain après une cadence de publication stable est le signal classique des attaques supply chain.
- Ancienneté du domaine de l'éditeur. Le domaine de l'éditeur a-t-il plus d'un an ? Les nouveaux éditeurs sur des domaines fraîchement enregistrés présentent plus de risques. Vérifiez via la page éditeur du Visual Studio Marketplace ou
whoissur le domaine de l'e-mail de l'éditeur. - Vélocité des versions. L'historique des versions montre-t-il une cadence normale (une release toutes les 1-4 semaines) ou un pic soudain (trois releases en 24 heures) ? Une vélocité soudaine est un signal. Nx Console v18.95.0 était une anomalie de vélocité.
- Événements d'activation dans
package.json. Ouvrez le fichier.vsix(c'est un zip) et lisezactivationEvents. Les extensions qui s'activent sur*(toujours actives) ont la plus grande surface d'attaque. Préférez les extensions qui s'activent sur un langage ou un nom de fichier spécifique. - Permissions requises par rapport au comportement attendu. Un « thème » demande-t-il un accès réseau ? Un « snippet » a-t-il besoin d'accès en écriture au système de fichiers ? Les incohérences sont des signaux d'alarme. Croisez avec la documentation officielle sur la sécurité d'exécution des extensions de Microsoft.
- Audit du dépôt open source. Le code source est-il sur GitHub ? Lisez les cinq derniers commits pour repérer des changements suspects : hooks post-install, blobs encodés en base64, appels réseau vers des domaines inconnus.
Une extension qui s'active sur * et demande un accès réseau est fonctionnellement un shell distant avec VS Code en façade.
Le même cadre d'audit s'applique aux serveurs MCP, la prochaine surface d'attaque supply chain de la classe des extensions. Voir notre analyse des meilleurs serveurs MCP 2026 pour savoir lesquels nous approuvons et pourquoi.
Pourquoi ça continue : la vague supply chain 2025-2026
La compromission GitHub du 20 mai est un nœud dans un arc de 9 mois : ver npm Shai-Hulud (sept. 2025), ver GlassWorm OpenVSX (oct.-nov. 2025), Shai-Hulud 2.0 (nov. 2025, plus de 25 000 dépôts affectés), Mini Shai-Hulud (début 2026), Nx Console (18 mai 2026), compromission du poste GitHub (20 mai 2026). Les postes de travail des développeurs sont devenus le nouveau ventre mou.
- Sept. 2025, ver npm Shai-Hulud. Malware auto-propageable dans des packages npm populaires. La CISA a émis une alerte sur la compromission généralisée.
- Oct.-nov. 2025, GlassWorm. Le premier ver auto-propageable ciblant les extensions VS Code sur OpenVSX. Divulgation de Koi Security.
- Nov. 2025, Shai-Hulud 2.0. Plus de 25 000 dépôts exfiltrés. Microsoft Security Blog a publié des recommandations de confinement.
- Début 2026, Mini Shai-Hulud. Variante TeamPCP. Répétitions à plus petite échelle contre Trivy, KICS, LiteLLM, TanStack et MistralAI.
- 18 mai 2026, Nx Console v18.95.0. Vecteur très probable de la compromission du poste GitHub.
- 20 mai 2026, GitHub divulgue. ~3 800 dépôts internes exfiltrés. Selon la série forensique Shai-Hulud de Wiz, le schéma d'abus IMDS est une évolution directe.
Le schéma est clair : les laptops des développeurs contiennent chaque secret de l'organisation (PAT GitHub, clés AWS, jetons vault, clés de fournisseurs d'IA) et ont une couverture EDR quasi nulle. Tant que ce déséquilibre ne s'inverse pas, cette vague continue.
L'IA défensive est une partie de la réponse. Nous avons couvert cet angle dans notre analyse sur comment l'IA prévient les violations de données plus tôt cette année.
La réponse plus large de GitHub : publication de confiance, 2FA FIDO, jetons de 90 jours
GitHub déployait déjà quatre contrôles supply chain avant le 20 mai : 2FA obligatoire pour les éditeurs npm, un plafond de 90 jours sur les jetons d'écriture à granularité fine, la dépréciation TOTP au profit de FIDO et des passkeys, et la publication de confiance OIDC pour GitHub Actions et GitLab CI. La compromission de mai accélère une migration déjà en cours ; elle n'introduit pas de nouvelle politique.
| Contrôle | Statut | Action pour vous |
|---|---|---|
| 2FA npm obligatoire | Actif | Activer maintenant : npm profile enable-2fa auth-and-writes |
| Plafond de 90 jours pour les jetons d'écriture à granularité fine | En déploiement (les jetons existants sont forcés à expirer) | Migrer vers des PAT à granularité fine avec TTL ≤90 jours |
| Dépréciation TOTP, FIDO / passkeys | Déploiement progressif 2026 | Enregistrer une passkey sur chaque compte GitHub dès aujourd'hui |
| Publication de confiance OIDC | Actif pour GitHub Actions + GitLab CI | Migrer la CI des jetons npm à longue durée vers OIDC |
Le plan plus large de GitHub pour une supply chain npm plus sécurisée précède cet incident de plusieurs mois. Plus vite vous vous y alignez, plus petit sera votre rayon d'explosion la prochaine fois.
Renforcement : comment survivre au prochain incident
Six mesures préventives : épingler les versions d'extensions dans devcontainer.json, appliquer une liste d'autorisations d'extensions au niveau de l'organisation, déployer un EDR avec visibilité sur les processus d'extensions, scanner les secrets à chaque push, limiter les PAT à un dépôt, et adopter la publication de confiance OIDC au lieu de jetons à longue durée. Aucune de ces mesures n'aurait empêché chaque incident — ensemble, elles réduisent le rayon d'explosion de « tout ce qui est sur le laptop » à « un seul dépôt ».
{
"name": "secure-dev",
"extensions": [
"[email protected]",
"[email protected]",
"[email protected]"
],
"settings": {
"extensions.autoUpdate": false,
"extensions.autoCheckUpdates": false
},
"containerEnv": {
"VSCODE_GALLERY_SERVICE_URL": "https://your-internal-allow-list.example.com"
}
}En résumé :
- Épingler chaque version d'extension dans
devcontainer.jsonpour bloquer les mises à jour automatiques. - Liste d'autorisations au niveau org en pointant
VSCODE_GALLERY_SERVICE_URLvers un miroir interne. - EDR avec visibilité sur les processus IDE : Crowdstrike, SentinelOne ou Microsoft Defender for Endpoint avec VS Code dans le périmètre.
- Scanner les secrets à chaque push : en pré-commit et au moment du push, côté serveur.
- Limiter chaque PAT à un dépôt : aucun scope
*, jamais. - Publication de confiance OIDC : plus de jetons npm ou de registry à longue durée dans la CI.
La CVE copy_file_range Linux de la semaine dernière est une histoire parallèle : couche différente, même leçon. La frontière de confiance que vous avez oubliée est celle qui vous mord.
Si vous envisagez des agents de code IA ensuite, appliquez le même cadre d'audit. Ils ont le même profil de confiance que les extensions. Notre analyse des meilleurs agents de code IA 2026 passe en revue quels agents méritent cette confiance.
Questions fréquemment posées
GitHub a-t-il été piraté ?
Non, pas au sens que la plupart des titres laissent entendre. L'infrastructure de production de GitHub.com n'a pas été compromise. Un employé de GitHub a installé une extension VS Code malveillante sur son poste de travail, ce qui a exfiltré environ 3 800 dépôts de code source internes de GitHub. Le code client, les comptes clients et les services de production de GitHub ne sont pas affectés.
Quelle extension VS Code était réellement impliquée ?
GitHub n'a pas officiellement confirmé le nom de l'extension. Les preuves forensiques de StepSecurity, Wiz et GHSA-c9j4-9m59-847w pointent très probablement vers Nx Console v18.95.0, publié le 18 mai à 12 h 36 UTC et retiré 11 minutes plus tard. Nous traitons cela comme « très probablement, non confirmé » jusqu'à ce que GitHub le nomme.
Nx Console est-elle sûre à utiliser maintenant ?
La version corrigée est 18.100.0. Si vous avez une ancienne v18.95.0 installée, désinstallez-la immédiatement, exécutez le scan des IoC dans notre section de triage, et réinstallez uniquement depuis l'éditeur officiel Nrwl à la version 18.100.0 ou ultérieure. Vérifiez le domaine de l'éditeur avant de réinstaller et épinglez la version dans devcontainer.json.
Les données clients ont-elles été affectées par la compromission GitHub ?
Non. Selon la déclaration officielle de GitHub via Bleeping Computer, le code source client, les comptes clients, les jetons OAuth et les données de production hébergées par GitHub n'ont pas été accédés. Les données compromises sont le code source interne de GitHub depuis le poste de l'employé. Traitez cela comme un incident de laptop d'employé, pas comme une compromission de plateforme.
Comment savoir si mon PAT GitHub a été volé ?
Vous ne pouvez pas en avoir la certitude. L'hypothèse conservatrice : si vous avez utilisé un PAT GitHub dans VS Code au cours des 14 derniers jours, considérez-le comme compromis et faites-le tourner. Vérifiez votre journal d'audit GitHub via gh api /orgs/{ORG}/audit-log pour des événements push inhabituels entre le 18 et le 20 mai UTC, puis révoquez et rééméttez le jeton.
Qu'est-ce que TeamPCP et UNC6780 ?
TeamPCP est un groupe d'acteurs malveillants ; UNC6780 est l'identifiant de suivi attribué par les éditeurs de réponse aux incidents. Ils ont publiquement revendiqué l'attribution de la compromission GitHub. Le même groupe a revendiqué des compromissions en 2026 contre Trivy, KICS, LiteLLM, TanStack et MistralAI — un schéma de ciblage cohérent de la supply chain VS Code et npm.
Les extensions VS Code sont-elles isolées dans un sandbox ?
Non, pas de manière significative. Les extensions VS Code s'exécutent dans le processus Node.js de l'IDE avec les pleins privilèges filesystem et réseau de l'utilisateur. Elles peuvent lire chaque fichier de votre répertoire personnel, y compris les clés SSH, ~/.aws/credentials, ~/.claude/settings.json et la mémoire des processus via /proc/*/mem sous Linux. Microsoft documente le modèle de sécurité d'exécution et ses limites dans la documentation officielle des extensions.
Cela a-t-il affecté GitHub Codespaces ou les runners CI ?
Aucune preuve pour l'instant. La compromission concernait un poste de travail d'employé, pas l'infrastructure hébergée par GitHub. Codespaces, les runners GitHub Actions et l'infrastructure CI exposée aux clients ne sont pas signalés comme affectés. Nous mettrons à jour cet article si de nouveaux IoC changent ce tableau.
Conclusion
Trois points à retenir :
- GitHub.com n'a pas été piraté. Le poste VS Code d'un employé l'a été. La leçon se généralise à chaque développeur.
- Rotation maintenant, cadre d'audit en permanence. Le plan de 60 minutes est le correctif ; le cadre d'audit en 5 questions est le système immunitaire.
- Ce n'est pas un incident isolé. C'est le nœud #6 d'une vague supply chain de 9 mois qui ne ralentit pas.
Dernière mise à jour : 20 mai 2026. Nous balayerons cet article le 27 mai 2026 avec de nouveaux IoC, des avis de fournisseurs et toute attribution d'extension confirmée par GitHub.
Si votre équipe a besoin d'aide pour auditer la surface d'extension VS Code, l'hygiène des PAT et jetons, ou pour mettre en place une politique de liste d'autorisations au niveau de l'organisation, obtenez une consultation gratuite. Nous sommes concentrés sur la sécurité des postes développeurs depuis la compromission Vercel en avril, et le plan ci-dessus est ce que nous appliquons avec les clients dès le premier jour.