
run-codeExploit Proof of Concept per CVE-2026-5029 — una vulnerabilità critica di esecuzione remota di codice non autenticata in Code Runner MCP Server, innescata tramite il tool MCP
run-codequando il server viene eseguito con--transport http.
Code Runner MCP Server espone un endpoint JSON-RPC /mcp sulla porta 3088 quando viene avviato con il flag --transport http. Questo endpoint è raggiungibile con zero autenticazione — nessuna API key, nessun token di sessione, nessun controllo dell'origine.
Qualsiasi attaccante remoto non autenticato in grado di raggiungere la porta può invocare direttamente il tool MCP run-code, che accetta codice sorgente arbitrario e un identificatore di linguaggio, lo scrive in un file temporaneo e lo esegue tramite child_process.exec() utilizzando l'interprete corrispondente (bash, python, powershell e altri 30+).
Poiché non viene applicata alcuna sanitizzazione al parametro code in nessuna fase, il risultato è piena esecuzione remota di codice non autenticata con i privilegi del processo che esegue il server MCP.
┌──────────┐ JSON-RPC tools/call ┌───────────────────────┐ exec() ┌──────────┐
│ Attacker │ ──── run-code tool ─────▶│ /mcp (port 3088) │ ─────────▶ │ RCE │
│ │ (no auth needed) │ Code Runner MCP │ │ on Host │
└──────────┘ └───────────────────────┘ └──────────┘
/mcp esposto ed enumerare i tool MCP disponibilirun-code (code, languageId)tools/call modificata con code controllato dall'attaccantecode in un file temporaneo e lo esegue tramite l'interprete selezionato.
├── exploit.py # 🎯 Interactive RCE exploit shell (Rich-based terminal UI)
└── README.md # 📖 You are here
exploit.py — Exploit interattivoLo script exploit principale, pensato per l'uso professionale in valutazioni di sicurezza e case study. Si connette al server MCP target e apre una shell interattiva in cui qualsiasi comando viene eseguito in tempo reale tramite il tool vulnerabile run-code.
Le funzionalità includono:
-l (predefinito: shellscript)pip# Clone the repository
git clone https://github.com/0x00phantom-hat/CVE-2026-5029-Exploit.git
cd CVE-2026-5029-RCE-Exploit
# Install dependencies
pip install fastmcp rich
# Drop into an interactive RCE shell (default: shellscript)
python3 exploit.py -u http://TARGET:3088/mcp
# Use a specific language interpreter
python3 exploit.py -u http://TARGET:3088/mcp -l python
# List all languages the MCP server advertises support for
python3 exploit.py -u http://TARGET:3088/mcp --available
# Probe which language runtimes are actually installed on the target
python3 exploit.py -u http://TARGET:3088/mcp --installed -v
# Show the help menu
python3 exploit.py -h
Una volta connesso, l'exploit apre un prompt interattivo:
PhantomHat-MCP@Exploit-CVE-2026-5029 $ id
Digita exit per chiudere la sessione.
--transport http su alcuna interfaccia raggiungibile dalla rete — attieniti al trasporto stdio predefinito127.0.0.1 e collocalo dietro un reverse proxy autenticato o una VPNrun-code e processi figlio insolitiQuesto strumento è fornito esclusivamente per test di sicurezza autorizzati e scopi educativi.
L'accesso non autorizzato a sistemi informatici è illegale ai sensi di leggi come il Computer Fraud and Abuse Act (CFAA), il Computer Misuse Act e normative simili in tutto il mondo. L'autore non si assume alcuna responsabilità per un uso improprio di questo software.
Utilizza questo strumento solo contro sistemi che possiedi o per i quali hai un'esplicita autorizzazione scritta a eseguire test.
Autore: Phantom Hat
Solo per test di penetrazione autorizzati e ricerca sulla sicurezza.
| Proprietà | Dettaglio |
|---|
| ID CVE | CVE-2026-5029 |
| Punteggio CVSS | 8.7 / 10 — Alto |
| CWE | CWE-306 — Autenticazione mancante per funzioni critiche |
| Prodotto interessato | Code Runner MCP Server |
| Versioni interessate | (Senza patch) Tutte le versioni che espongono il tool run-code tramite --transport http |
| Autenticazione | Non richiesta (Non autenticata) |
| Stato della patch | Non risolta |
| Scoperta da | Phantom Hat |
| Flag | Descrizione | Predefinito |
|---|
-u, --url | (Obbligatorio) URL del server MCP | — |
-l, --language | Linguaggio da usare per l'esecuzione del codice | shellscript |
-a, --available | Elenca tutti i linguaggi supportati | flag |
-i, --installed | Verifica i runtime dei linguaggi installati sul target | flag |
-v, --verbose | Modalità di output verbose | flag |
-h, --help | Mostra il menu di aiuto | — |
| Fase | Nome | Descrizione |
|---|
| 1 | 🔍 Enumerazione | Connettersi a /mcp ed enumerare i tool MCP disponibili |
| 2 | 🧪 Scoperta dello schema | Confermare lo schema di input di run-code (code, languageId) |
| 3 | 💣 Consegna dell'exploit | Inviare una richiesta tools/call modificata con codice controllato dall'attaccante |
| 4 | 🚀 Esecuzione interattiva | Accedere a una shell live — ogni comando viene eseguito sul sistema target |