
Proof-of-Concept-Exploit für CVE-2026-5029, das nicht authentifizierte Remote-Code-Ausführung über das run-code-MCP-Tool auf exponierten HTTP-Endpunkten ermöglicht. Enthält interaktive Shell, Sprach-Enumeration und Ziel-Erkundung.
run-code MCP-ToolProof-of-Concept-Exploit für CVE-2026-5029 — eine kritische, nicht authentifizierte Remote-Codeausführungs-Schwachstelle im Code Runner MCP Server, ausgelöst über das
run-codeMCP-Tool, wenn der Server mit--transport httpausgeführt wird.
| Property | Detail |
|---|---|
| CVE-Kennung | CVE-2026-5029 |
| CVSS-Score | 8.7 / 10 — Hoch |
| CWE | CWE-306 — Fehlende Authentifizierung für kritische Funktion |
| Betroffenes Produkt | Code Runner MCP Server |
| Betroffene Versionen | (Ohne Patch) Alle Versionen, die das run-code-Tool über --transport http bereitstellen |
| Authentifizierung | Keine erforderlich (nicht authentifiziert) |
| Patch-Status | Nicht behoben |
| Entdeckt von | Phantom Hat |
Code Runner MCP Server legt bei Start mit dem Flag --transport http einen JSON-RPC-Endpunkt /mcp auf Port 3088 offen. Dieser Endpunkt ist ohne jegliche Authentifizierung erreichbar — kein API-Schlüssel, kein Sitzungstoken, keine Origin-Prüfung.
Jeder nicht authentifizierte Angreifer, der den Port erreichen kann, kann direkt das run-code-MCP-Tool aufrufen, das beliebigen Quellcode und eine Sprachkennung akzeptiert, in eine temporäre Datei schreibt und ihn über child_process.exec() mit dem entsprechenden Interpreter (bash, python, powershell und 30+ weitere) ausführt.
Da in keiner Phase eine Bereinigung des Parameters code erfolgt, führt dies zu vollständiger, nicht authentifizierter Remote-Codeausführung mit den Rechten des Prozesses, der den MCP-Server ausführt.
┌──────────┐ JSON-RPC tools/call ┌───────────────────────┐ exec() ┌──────────┐
│ Attacker │ ──── run-code tool ─────▶│ /mcp (port 3088) │ ─────────▶ │ RCE │
│ │ (no auth needed) │ Code Runner MCP │ │ on Host │
└──────────┘ └───────────────────────┘ └──────────┘
/mcp-Endpunkt verbinden und verfügbare MCP-Tools aufzählenrun-code-Tools (code, languageId) abrufentools/call-JSON-RPC-Anfrage mit Angreifer-kontrolliertem code sendencode in eine temporäre Datei und führt ihn über den ausgewählten Interpreter aus.
├── exploit.py # 🎯 Interaktive RCE-Exploit-Shell (Rich-basierte Terminal-UI)
└── README.md # 📖 Du bist hier
exploit.py — Interaktiver ExploitDas primäre Exploit-Skript, entwickelt für den professionellen Einsatz in Sicherheitsbewertungen und Fallstudien. Es verbindet sich mit dem Ziel-MCP-Server und wechselt in eine interaktive Shell, in der jeder Befehl live über das verwundbare run-code-Tool ausgeführt wird.
Zu den Funktionen gehören:
-l (Standard: shellscript)pip-Paketmanager# Repository klonen
git clone https://github.com/0x00phantom-hat/CVE-2026-5029-Exploit.git
cd CVE-2026-5029-RCE-Exploit
# Abhängigkeiten installieren
pip install fastmcp rich
# In eine interaktive RCE-Shell wechseln (Standard: shellscript)
python3 exploit.py -u http://TARGET:3088/mcp
# Einen bestimmten Sprachinterpreter verwenden
python3 exploit.py -u http://TARGET:3088/mcp -l python
# Alle Sprachen auflisten, für die der MCP-Server Unterstützung bewirbt
python3 exploit.py -u http://TARGET:3088/mcp --available
# Prüfen, welche Sprachlaufzeiten tatsächlich auf dem Ziel installiert sind
python3 exploit.py -u http://TARGET:3088/mcp --installed -v
# Hilfemenü anzeigen
python3 exploit.py -h
Nach der Verbindung wechselt der Exploit in eine interaktive Eingabeaufforderung:
PhantomHat-MCP@Exploit-CVE-2026-5029 $ id
Gib exit ein, um die Sitzung zu beenden.
| Flag | Beschreibung | Standard |
|---|---|---|
-u, --url | (Erforderlich) MCP-Server-URL | — |
-l, --language | Sprache für die Codeausführung | shellscript |
-a, --available | Alle unterstützten Sprachen auflisten | Flag |
-i, --installed | Installierte Sprachlaufzeiten auf dem Ziel prüfen | Flag |
-v, --verbose | Ausführlicher Ausgabemodus | Flag |
-h, --help | Hilfemenü anzeigen | — |
| Phase | Name | Beschreibung |
|---|---|---|
| 1 | 🔍 Enumeration | Mit /mcp verbinden und verfügbare MCP-Tools aufzählen |
| 2 | 🧪 Schemaerkennung | Das Eingabeschema von run-code (code, languageId) bestätigen |
| 3 | 💣 Exploit-Zustellung | Eine manipulierte tools/call-Anfrage mit Angreifer-kontrolliertem Code senden |
| 4 | 🚀 Interaktive Ausführung | In eine Live-Shell wechseln — jeder Befehl läuft auf dem Zielsystem |