Un chercheur en sécurité vient de publier un exploit fonctionnel contre GitHub.dev, l’éditeur VS Code en ligne de GitHub. Un attaquant vole le jeton OAuth d’un développeur dès qu’il clique sur un lien malveillant et accède en lecture et en écriture à tous ses dépôts privés. Microsoft a reconnu la faille le lendemain.

Quand un développeur passe de github.com à github.dev sur n'importe quel dépôt, GitHub lui transmet automatiquement un jeton OAuth. GitHub ne restreint pas ce jeton au seul dépôt ouvert - ©PJ McDonnell / Shutterstock
Quand un développeur passe de github.com à github.dev sur n'importe quel dépôt, GitHub lui transmet automatiquement un jeton OAuth. GitHub ne restreint pas ce jeton au seul dépôt ouvert - ©PJ McDonnell / Shutterstock

Le chercheur en sécurité indépendant Ammar Askar a mis en ligne avant-hier une preuve de concept complète visant GitHub.dev. Il suffit que la victime clique sur un lien pour que VS Code charge un notebook Jupyter malveillant, installe une extension piégée sans avertissement visible, puis transmette le jeton OAuth de session à l’attaquant.Microsoft a appliqué un correctif provisoire hier. GitHub n’a attribué aucun identifiant CVE à ce jour. VS Code Desktop n’est pas concerné, selon Alexandru Dima, responsable ingénierie chez Microsoft.

Cinq comportements VS Code enchaînés pour exfiltrer le jeton OAuth

Quand un développeur passe de github.com à github.dev sur n’importe quel dépôt, GitHub lui transmet automatiquement un jeton OAuth. GitHub ne restreint pas ce jeton au seul dépôt ouvert. L’utilisateur peut ainsi lire et écrire sur tous ses dépôts, publics et privés.

Le chercheur a exploité le système de webviews de VS Code, ces iframes isolées qui servent à afficher des prévisualisations Markdown ou des notebooks Jupyter. Une webview peut transmettre des événements clavier à la fenêtre principale via l’API postMessage, un comportement documenté et voulu par Microsoft pour que les raccourcis restent fonctionnels à l’intérieur de l’iframe. Mais rien n’empêche un script malveillant de simuler les mêmes événements.

Le notebook placé dans le dépôt piégé contient une balise HTML avec un gestionnaire onerror qui exécute du JavaScript dès l’ouverture. Dix secondes plus tard, dans ce script, le VS Code affiche une notification de recommandation d’extension. Il suffit alors de simuler la combinaison Ctrl+Shift+A. Ce raccourci correspond à la commande « Accepter l'action principale de la notification ». VS Code installe l’extension recommandée sans dialogue supplémentaire, car elle provient du dossier .vscode/extensions du dépôt, traité comme extension de workspace locale.

Et c’est ainsi que le hacker vient de contourner la vérification de confiance éditeur normalement obligatoire. Il récupère ensuite la liste complète des dépôts privés accessibles et le jeton OAuth via une seconde extension installée par raccourci injecté.

GitHub
  • Outil disponible gratuitement.
  • Création de dépôts illimitée.
  • Collaboration simplifiée.

L’absence de protection CSRF expose tous les utilisateurs ayant déjà ouvert github.dev

Microsoft a déposé un correctif partiel ce 3 juin. Github.dev affiche désormais une confirmation avant d’ouvrir un notebook, et la commande skipPublisherTrust ne peut plus être appelée par une autre commande.

Ceci dit, Microsoft n’a pas résolu le problème de fond pour autant.

On ne trouve aucun mécanisme CSRF sur github.dev. Un attaquant peut donc rediriger n’importe qui vers le flux d’attaque depuis n'importe quel lien sur Internet, sans préparation préalable, à condition que la victime ait déjà utilisé github.dev sans vider les données locales de son navigateur. Si un utilisateur n'a pas supprimé le stockage local de github.dev, il n'a aucun moyen de détecter l’attaque à temps.

Avec GitHub Codespaces, GitHub émet un jeton OAuth distinct pour chaque session et chaque dépôt, alors que github.dev n’en émet qu’un seul pour tous. Si un attaquant volait un jeton Codespaces, il n’aurait accès qu’au dépôt concerné. Github.dev n’applique pas ce modèle. Pour Ammar Askar, ce choix de conception, indépendant de tout bug, est le vrai facteur de risque.

En mai dernier, le groupe TeamPCP avait exfiltré quelque 3 800 dépôts internes de GitHub via une extension VS Code malveillante installée sur le poste d’un employé. On ne trouve aucun lien technique direct entre les deux affaires. Toutes deux passent pourtant par le même vecteur, l’écosystème des extensions VS Code.

Le chercheur a écarté la divulgation coordonnée avec Microsoft. Il cite une expérience antérieure avec le Security Response Center de la firme, où celle-ci avait corrigé silencieusement une faille VS Code qu’il avait signalée sans lui accorder le moindre crédit. Il a prévenu un contact sécurité chez GitHub environ une heure avant de tout rendre public.

En attendant un correctif définitif, les développeurs ont intérêt à supprimer les données locales de github.dev dans leur navigateur et à vérifier le dossier .vscode/extensions avant d'ouvrir un dépôt inconnu dans l’éditeur en ligne. Il vaut aussi la peine d’auditer les autorisations des jetons d’accès personnels dans les paramètres GitHub.

Source : TheNextWeb

À découvrir
Meilleur antivirus : le comparatif en 2026
Comparatifs services