Un chercheur en sécurité a publié le code d’exploitation d’une vulnérabilité zero-day qui touche Visual Studio Code. Cette faille permet à des attaquants de dérober les jetons d’authentification GitHub en dupant les utilisateurs pour qu’ils cliquent sur un lien.
Selon les explications du chercheur Ammar Askar dans un article de blog publié mardi, cette vulnérabilité de VS Code permet l’installation d’extensions malveillantes. Ces extensions volent les jetons OAuth de GitHub lorsqu’ils sont transmis à github.dev, la version de l’éditeur de code qui fonctionne dans le navigateur. L’attaque exploite le système de passage de messages des webviews sandboxées de VS Code.
Le code d’exploitation de démonstration qu’il a également publié abuse de ce système. Il exécute du code JavaScript malveillant à l’intérieur d’une webview pour simuler des frappes de touches dans l’éditeur principal. Cela installe une extension qui extrait le jeton OAuth GitHub envoyé à github.dev et interroge l’API de GitHub pour lister tous les dépôts privés auxquels la victime a accès.
« Cette fonctionnalité est possible parce que github.com envoie par POST un jeton OAuth à github.dev, ce qui lui permet d’interagir avec GitHub en votre nom », a déclaré Askar. « Le jeton n’est pas limité au dépôt spécifique avec lequel vous avez interagi, ce qui signifie qu’il a un accès complet à tous les autres dépôts auxquels vous avez accès. »
La vulnérabilité n’est pas encore corrigée et n’a pas encore reçu d’identifiant CVE. Les utilisateurs de VS Code peuvent se protéger en effaçant les cookies et les données locales du site pour github.dev dans leur navigateur. Pour cela, ils doivent cliquer sur l’icône des paramètres dans la barre d’adresse, puis se rendre dans Cookies et données des sites > Gérer les données des sites sur l’appareil.
Cette action garantit qu’ils verront un avertissement « L’extension ‘GitHub Repositories’ souhaite se connecter avec GitHub. » lorsqu’ils cliqueront sur des liens qui tentent d’exploiter cette faille.
Askar a indiqué avoir averti GitHub une heure avant de rendre publique la faille. Il a expliqué avoir choisi une divulgation publique immédiate en raison d’une expérience négative antérieure avec le processus de réponse de sécurité de Microsoft. Une faille de VS Code précédemment signalée avait été corrigée en silence, sans attribution ni reconnaissance de l’impact sur la sécurité.
« C’était surtout une courtoisie envers GitHub, l’intention ici était une divulgation publique totale. Dans mon expérience passée de signalement de bugs de github.dev à leurs équipes, elles vous disent que c’est hors de portée et vous renvoient vers le MSRC. Et comme je l’ai expliqué dans l’article, je ne veux vraiment pas traiter avec le MSRC pour les bugs de VSCode », a-t-il ajouté.
« Pour résumer ma dernière interaction avec le MSRC concernant le signalement d’un bug de VSCode, ce fut une expérience horrible où ils ont silencieusement corrigé le bug que j’avais pointé sans aucune attribution. Ils l’ont également marqué comme n’ayant aucun impact sur la sécurité. Comme je l’ai mentionné dans ce post, à l’avenir, je ferais une divulgation publique complète pour tous les bugs de sécurité que je trouverais dans VSCode. »
Cette affaire fait suite à une série d’autres zero-day dans divers produits de Microsoft divulgués par un chercheur anonyme utilisant le pseudonyme Nightmare Eclipse. Ce dernier avait également exprimé son mécontentement quant à la façon dont le Microsoft Security Response Center gérait le processus de divulgation.
Ces derniers mois, Nightmare Eclipse a divulgué les failles zero-day d’élévation de privilèges nommées BlueHammer, RedSun, GreenPlasma et MiniPlasma. Les deux premières sont maintenant exploitées dans des attaques. Il a aussi révélé YellowKey, un zero-day de Windows BitLocker qui donne accès aux lecteurs protégés, et UnDefend, un autre zero-day qui peut bloquer les mises à jour des définitions de Microsoft Defender.
Initialement, Microsoft a réagi aux fuites de zero-day de Nightmare Eclipse par des menaces d’action en justice. La société a ensuite publié un tweet indiquant qu’elle « travaillerait avec les forces de l’ordre si nécessaire » lorsque « un individu enfreint la loi et s’engage dans des activités malveillantes causant un préjudice réel à nos clients. »
