Un chercheur en sécurité a publié le code d'exploitation d'une vulnérabilité zero-day affectant Visual Studio Code (VS Code), l'éditeur de code développé par Microsoft. La faille permet à un attaquant de dérober les jetons OAuth de GitHub d'un utilisateur en l'incitant à cliquer sur un lien, donnant ainsi un accès total aux dépôts publics et privés de la victime.

Le chercheur, Ammar Askar, a détaillé le fonctionnement de la vulnérabilité dans une analyse publiée en ligne. Il explique que la plateforme github.dev, qui offre une version allégée de VS Code accessible depuis un navigateur, reçoit un jeton OAuth depuis github.com. Ce jeton n'est pas limité au dépôt consulté par l'utilisateur : il octroie un accès complet à l'ensemble des dépôts auxquels l'utilisateur a accès.

Un problème de sécurité dans les webviews

Pour garantir la sécurité, VS Code isole les contenus exécutés dans ses webviews (par exemple, les aperçus Markdown ou les notebooks Jupyter) en les plaçant dans une iframe avec une origine différente de celle de la fenêtre principale. Cette approche empêche normalement tout code malveillant d'accéder aux API Node.js ou aux fonctionnalités internes de l'éditeur.

Toutefois, pour que des fonctionnalités comme les raccourcis clavier fonctionnent même lorsque l'utilisateur clique dans une webview, VS Code met en place un mécanisme de communication inter-origine via l'API Window.postMessage(). Le chercheur a découvert que cette passerelle pouvait être détournée. En concevant un lien piégé, un attaquant peut injecter du code qui, via les messages postMessage, parvient à exfiltrer le jeton OAuth stocké par github.dev.

Un jeton aux droits étendus

Le jeton volé permet non seulement de lire mais aussi d'écrire dans tous les dépôts accessibles par l'utilisateur, y compris les dépôts privés. Les conséquences potentielles sont graves : un attaquant pourrait dérober du code source, introduire des modifications malveillantes, ou encore usurper l'identité du développeur pour des actions malveillantes sur GitHub.

Ammar Askar a choisi de divulguer publiquement l'exploit (full disclosure) après avoir informé Microsoft. Il justifie cette décision par la nécessité d'alerter la communauté des développeurs sur les risques et d'inciter à une correction rapide. La chronologie de la divulgation n'est pas précisée, mais le chercheur indique avoir suivi une procédure de notification préalable.

Protection et réactions

En attendant un correctif officiel de Microsoft, les utilisateurs sont invités à ne pas cliquer sur des liens suspects, en particulier ceux redirigeant vers github.dev. Il est également conseillé de révoquer et de régénérer ses jetons GitHub existants, bien que cette mesure puisse être contraignante. Les experts recommandent aussi d'être vigilant quant aux permissions accordées aux tokens OAuth et de vérifier régulièrement les accès autorisés sur son compte GitHub.

Microsoft n'a pas encore publié de mise à jour de sécurité pour VS Code ni pour github.dev. L'entreprise n'a pas officiellement commenté cette vulnérabilité au moment de la rédaction de cet article.

Une faille qui rappelle l'importance de la sécurité des tokens

Cet incident met en lumière les risques liés à la gestion des jetons d'authentification dans les environnements de développement intégrés (IDE) en ligne. Le cas de github.dev est particulièrement sensible car il offre une version quasi complète de VS Code dans le navigateur, exposant une large surface d'attaque. La complexité du code de VS Code, qui repose sur des millions de lignes de TypeScript, rend la recherche de vulnérabilités ardue mais les conséquences d'une faille peuvent être catastrophiques.

Les développeurs sont invités à suivre les canaux officiels de sécurité de Microsoft pour être informés des correctifs dès leur disponibilité. D'ici là, la prudence reste de mise face à tout lien non sollicité.