Wie wir Copilot gerootet haben
(research.eye.security)- Im April 2025 wurde Copilot Enterprise um eine Python-Sandbox in Echtzeit (auf Basis von Jupyter Notebook) erweitert, wodurch die Ausführung von Backend-Code möglich wurde
- Über die %command-Syntax von Jupyter ließ sich leicht beliebiger Code auf dem zugrunde liegenden System ausführen, und auch Linux-Befehle konnten als Benutzer ubuntu (in einer miniconda-Umgebung) ausgeführt werden
- Es bestand eine Sicherheitslücke, da der Pfad /app/miniconda/bin für den Benutzer ubuntu beschreibbar war und im
$PATHvon root ebenfalls priorisiert wurde, sodass sich wichtige Befehle wiepgrepüberschreiben ließen - Dies wurde ausgenutzt, um Root-Rechte zu erlangen, doch das Container-Innere war streng isoliert, sodass kein Container-Escape möglich war und auch keine weiteren Informationen offengelegt wurden
- Die Schwachstelle wurde nach einer Meldung im April im Juli als mittleres Risiko gepatcht; außer einem Eintrag in der Liste der Forschenden gab es keine Vergütung
Analyse der Schwachstelle in der Microsoft Copilot Enterprise Jupyter Sandbox
Überblick über die Copilot Enterprise Jupyter-Umgebung
- Seit April 2025 verfügt Copilot Enterprise über eine Python-Sandbox auf Basis von Jupyter Notebook
- Nutzer können über die %command-Syntax von Jupyter Linux-Systembefehle ausführen
- Die Umgebung läuft auf Basis von miniconda mit den Rechten des Benutzers ubuntu; ein
sudo-Binary ist nicht vorhanden - Umgebungsvariablen, Netzwerk, Dateisystem und Prozessinformationen lassen sich umfassend untersuchen
Verhalten und Struktur innerhalb des Containers
- Copilot ähnelt der ChatGPT-Sandbox, verwendet aber einen neueren Kernel und Python 3.12
- Wichtige Prozesse: Jupyter Notebook, das in Go geschriebene
goclientapp(läuft auf Port 6000),httpproxyusw. - Im Netzwerk sind nur Loopback und eine eingeschränkte Link-Local-Schnittstelle aktiv
- Das Dateisystem basiert auf OverlayFS mit dem Pfad
/legion; unter/appexistieren benutzerdefinierte Skripte
Download und Dateimanipulation
- Textdateien und Ausgabedateien von Befehlen lassen sich normal herunterladen; bei Binärdateien besteht Beschädigungsgefahr, daher ist eine Base64-Kodierung nötig
- Dateien liegen unter
/mnt/data, und externe Download-Links werden in Form von Blob-URLs erzeugt
Struktur von goclientapp/httpproxy
goclientapp: Führt Code aus, der extern über den Endpoint/executehereinkommt (JSON-Format), in der Jupyter-Umgebung aus und gibt das Ergebnis zurückhttpproxy: Proxy für ausgehenden HTTP-Traffic von Jupyter nach außen (derzeit deaktiviert mitENABLE_EGRESS=false)
Schwachstelle im Skript entrypoint.sh
- Im Einstiegsskript des Containers,
entrypoint.sh, werden mehrere Dienste (goclientapp,httpproxyapp) mit den Rechten des Benutzers ubuntu ausgeführt - Nur
keepAliveJupyterSvc.shläuft weiterhin als root - In Zeile 28 wird der Befehl
pgrep -f "jupyter notebook --ip=0.0.0.0 --port=8888"gemäß der Priorität der Verzeichnisse im$PATHausgeführt /app/miniconda/binsteht sowohl bei root als auch beim Benutzer ubuntu imPATHvor/usr/bin→ Befehle wiepgrepkonnten dadurch beliebig ersetzt werden
Weg zu Root-Rechten und seine Grenzen
- Ein Angreifer konnte unter
/app/miniconda/binein bösartigespgrep-Skript anlegen, das vonentrypoint.shperiodisch mit Root-Rechten ausgeführt wurde - Dieses Skript las die Datei
/mnt/data/in, führte ihren Inhalt als Shell-Befehl aus und speicherte das Ergebnis in/mnt/data/out - Auf diesem Weg gelang es zwar, innerhalb des Containers Root-Rechte zu erlangen, doch auf sensible Informationen wie Dateien unter
/rootoder Logs konnte nicht zugegriffen werden, und ein Container-Escape war ebenfalls nicht möglich - Verschiedene Breakout-Szenarien im Container waren bereits gepatcht
Reaktion und Ergebnis bei Microsoft
-
- April 2025: Eye Security meldet den Fehler an das MSRC
-
- Juli 2025: Microsoft stuft die Schwachstelle als mittelschwer (
moderate severity) ein, patcht sie und schließt den Fall; die Forschenden werden in die Liste aufgenommen (keine Bug-Bounty-Auszahlung)
- Juli 2025: Microsoft stuft die Schwachstelle als mittelschwer (
Hinweise und Anhang
-
Eye Security ist ein in Europa ansässiges Cybersecurity-Unternehmen und bietet unter anderem 24/7-Bedrohungsüberwachung, Incident Response und Cyber-Versicherung an
-
Ein Vortrag zu Eindringfällen in interne Microsoft-Dienste (einschließlich Entra OAuth) mit dieser Schwachstelle ist für die BlackHat USA 2025 geplant
-
Zeitachse
-
- April 2025 – An MSRC gemeldet
-
- Juli 2025 – Gepatcht und Fall geschlossen, Blog veröffentlicht
-
1 Kommentare
Hacker-News-Kommentar
keepAliveJupyterSvc.shgefundensudo-Binary als base64 zu geben und ihn dann auf diese Weise zu verwendenrootändern/rootlagen keine Dateien und auch keine brauchbaren Logs. Alle bekannten Escape-Techniken waren bereits gepatcht. Wenn Microsoft jeden einzelnen solchen Umgehungsweg belohnen würde, hätte das kein Ende; deshalb kann ich nachvollziehen, dass man ohne echtes Risiko nicht gesondert vergütet