Datenschutz & Sicherheit

Angriff auf GitHub.dev stiehlt das OAuth-Token für alle Repos


Die Web-Version des Editors VS Code auf GitHub.dev hatte eine Sicherheitslücke, die es Angreifern erlaubt hat, sämtliche Repos eines Opfers zu übernehmen – auch private. Sie hätten hier Lieferkettenangriffe mit weiterem Schadcode initiieren oder einen Maintainer gezielt attackieren können.

Weiterlesen nach der Anzeige

Jeder GitHub-Anwender hätte über einen bösartigen Link schnell Opfer werden können. Durch eine Kombination aus eingebetteten Vorschaufenstern mit von JavaScript erzeugten Tastenschlägen hätten Angreifer unbemerkt eine Extension installieren können, die das Zugangs-Token für sämtliche Repos klaut, auf die das Opfer Zugriff hat. Auch die Desktop-Version war prinzipiell betroffen, jedoch mit höheren Hürden. Microsoft hat inzwischen Gegenmaßnahmen ergriffen und verhindert nun, dass Angreifer die Warnung vor einer nicht vertrauenswürdigen Umgebung ausschalten können.

Der Sicherheitsforscher Ammar Askar hat den Angriff in seinem Blog im Detail beschrieben: GitHub bietet eine Version von VS Code im Web unter github.dev. (Genauer genommen ist VS Code ursprünglich eine Webanwendung, die via Electron im Desktop läuft.) Jeder GitHub-Anwender kann seine Repos mit github.dev/user/repo statt github.com/user/repo unmittelbar in einer VS-Code-Umgebung im Browser öffnen, bearbeiten und verwalten.

Dadurch, dass die Web-App „fast die gesamte Ladung der Millionen Zeilen der TypeScript-Codebasis ausführt, eignet sie sich hervorragend als Ziel für jeden, der Bugs in VS Code sucht“, hebt Askar hervor. Im Prinzip schützt der Editor die Anwenderinnen und Anwender durch verschiedene Sandbox-Mechanismen jedoch vor der Übermacht der JavaScript-Funktionen.

Der Angriff nutzt die Funktion Webview, die externe Inhalte in einer Sandbox in einem Iframe ausführt, zum Beispiel um Markdown zu rendern oder Jupyter-Notebooks zu bearbeiten. Intern haben Webviews eine andere Code-Quelle: vscode-webview://... statt vscode-file://... und damit keinen Zugriff auf die Node.js-APIs, auf denen VS Code basiert. Aber es gibt einen Informationsaustausch über Messages mit der übergeordneten Hauptseite. So nimmt Webview Tasten-Events (keydown) für das Hauptfenster entgegen, beispielsweise Strg-Shift-P, um die Befehlspalette von VS Code zu öffnen. Über diese wiederum lassen sich Extensions installieren. Um dann die Installation der Extension zu bestätigen, dient Strg-Shift-A, was immer den Default-Button einer Meldung wählt, hier „Install“ für Erweiterungen.

Ein Angreifer kann nun Tastatureingaben einfach mit JavaScript-Code emulieren, um die Installation einer Extension anzustoßen. Askar zeigt, wie sich weitere Sicherheitsmechanismen einfach aushebeln ließen, darunter die Warnung an das Opfer, dass ein neuer Extension-Herausgeber etwas installieren will. Diese Überprüfung konnte Askar über das Vorspielen einer vertrauenswürdigen Local Workspace Extension umgehen – eine Schwachstelle, die Microsoft laut Askar inzwischen bereinigt hat.

Weiterlesen nach der Anzeige

Der Forscher demonstriert den Angriff mit einem Jupyter-Notebook, das über einen github.dev-Link wie oder über eine Umleitung darauf lädt. Die bösartige Extension tritt dann unbemerkt in Aktion und klaut das Token, mit dem sie Zugriff auf alle Repos bekommt, auf die auch das Opfer Zugriff hat – GitHub vergibt nur ein Token für alle Verzeichnisse.

Nur Anwender, die github.dev noch nicht oder länger nicht mehr benutzt haben, bekommen einmal die Warnung „The extension ‚GitHub Repository‘ wants to sign in using GitHub“. Im Blog von Askar findet sich ein Demo-Link, den die heise-developer-Redaktion jedoch nicht auf Sicherheit überprüft hat.

Lesen Sie auch


(who)



Source link

Beliebt

Die mobile Version verlassen