Introduction

Il est possible pour un attaquant de voler un token GitHub qui peut lire et écrire dans vos dépôts, y compris les dépôts privés, en cliquant simplement sur un lien. Cette faille de sécurité est liée à une vulnérabilité dans l'application VSCode qui s'exécute dans le navigateur.

Contexte Technique

GitHub propose une fonctionnalité appelée github.dev qui permet d'accéder à une version légère de VSCode directement dans le navigateur. Cette fonctionnalité est rendue possible par l'envoi d'un token OAuth à github.dev, qui permet à l'application de s'exécuter sur votre compte GitHub. Cependant, ce token n'est pas limité à un dépôt spécifique et peut accéder à tous les dépôts auxquels vous avez accès.

VSCode utilise un modèle de sécurité basé sur des webviews pour isoler les contenus provenant de sources externes. Les webviews utilisent un iframe avec une origine différente de la fenêtre principale de VSCode pour garantir que les scripts exécutés à l'intérieur sont isolés. Cependant, cette isolation peut être contournée en utilisant la méthode postMessage pour envoyer des messages entre les fenêtres.

Analyse et Implications

La faille de sécurité se produit lorsque l'utilisateur clique à l'intérieur d'une webview et appuie sur Ctrl+Shift+P pour afficher la palette de commandes. La webview envoie un événement did-keydown au navigateur principal, qui peut être intercepté par un script malveillant pour simuler des frappes au clavier. Cela peut permettre à l'attaquant d'installer une extension contrôlée par l'attaquant ou d'exécuter d'autres commandes dangereuses.

Cette faille de sécurité a des implications importantes pour la sécurité des dépôts GitHub, car elle permet à un attaquant d'accéder à des dépôts privés et de modifier leur contenu. Il est essentiel de prendre des mesures pour se protéger contre cette faille de sécurité, telles que la mise à jour de VSCode et la désactivation de la fonctionnalité github.dev.

Perspective

Il est important de surveiller les mises à jour de sécurité de VSCode et de GitHub pour garantir que les failles de sécurité sont corrigées rapidement. De plus, il est recommandé de désactiver la fonctionnalité github.dev et de utiliser des méthodes de sécurité alternatives pour protéger les dépôts GitHub. Les utilisateurs doivent également être conscients des risques liés à l'exécution de code dans les webviews et prendre des mesures pour se protéger contre les attaques malveillantes.