
run-codePreuve de concept de l'exploit pour CVE-2026-5029 — une vulnérabilité critique d'exécution de code à distance non authentifiée dans Code Runner MCP Server, déclenchée via l'outil MCP
run-codelorsque le serveur est lancé avec--transport http.
Code Runner MCP Server expose un point de terminaison JSON-RPC /mcp sur le port 3088 lorsqu'il est lancé avec l'option --transport http. Ce point de terminaison est accessible sans aucune authentification — pas de clé API, pas de jeton de session, pas de vérification de l'origine.
Tout attaquant distant non authentifié capable d'atteindre le port peut invoquer directement l'outil MCP run-code, qui accepte du code source arbitraire et un identifiant de langage, l'écrit dans un fichier temporaire, puis l'exécute via child_process.exec() en utilisant l'interpréteur correspondant (bash, python, powershell, et plus de 30 autres).
Étant donné qu'aucune assainissement n'est appliqué au paramètre code à aucun moment, cela aboutit à une exécution de code à distance non authentifiée complète avec les privilèges du processus exécutant le serveur MCP.
┌──────────┐ JSON-RPC tools/call ┌───────────────────────┐ exec() ┌──────────┐
│ Attacker │ ──── run-code tool ─────▶│ /mcp (port 3088) │ ─────────▶ │ RCE │
│ │ (no auth needed) │ Code Runner MCP │ │ on Host │
└──────────┘ └───────────────────────┘ └──────────┘
/mcp exposé et énumérer les outils MCP disponiblesrun-code (code, languageId)tools/call forgée avec un code contrôlé par l'attaquantcode dans un fichier temporaire et l'exécute via l'interpréteur sélectionné.
├── exploit.py # 🎯 Interactive RCE exploit shell (Rich-based terminal UI)
└── README.md # 📖 You are here
exploit.py — Exploit interactifLe script d'exploitation principal, conçu pour un usage professionnel lors d'audits de sécurité et d'études de cas. Il se connecte au serveur MCP cible et ouvre un shell interactif dans lequel chaque commande est exécutée en direct via l'outil vulnérable run-code.
Fonctionnalités incluses :
-l (par défaut 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
Une fois connecté, l'exploit ouvre une invite interactive :
PhantomHat-MCP@Exploit-CVE-2026-5029 $ id
Tapez exit pour fermer la session.
--transport http sur une interface accessible depuis le réseau — utilisez le transport stdio par défaut127.0.0.1 et placez-le derrière un proxy inverse authentifié ou un VPNrun-code et les processus enfants inhabituelsCet outil est fourni à des fins de tests de sécurité autorisés et de formation uniquement.
L'accès non autorisé à des systèmes informatiques est illégal en vertu de lois telles que le Computer Fraud and Abuse Act (CFAA), le Computer Misuse Act, et des législations similaires dans le monde entier. L'auteur décline toute responsabilité en cas d'utilisation abusive de ce logiciel.
N'utilisez cet outil que contre des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite explicite de tester.
Auteur : Phantom Hat
Pour tests d'intrusion autorisés et recherche en sécurité uniquement.
| Propriété | Détail |
|---|
| Identifiant CVE | CVE-2026-5029 |
| Score CVSS | 8,7 / 10 — Élevé |
| CWE | CWE-306 — Absence d'authentification pour une fonction critique |
| Produit concerné | Code Runner MCP Server |
| Versions concernées | (Non corrigé) Toutes les versions exposant l'outil run-code via --transport http |
| Authentification | Aucune requise (non authentifiée) |
| État du correctif | Non corrigé |
| Découvert par | Phantom Hat |
| Option | Description | Défaut |
|---|
-u, --url | (Requis) URL du serveur MCP | — |
-l, --language | Langage à utiliser pour l'exécution du code | shellscript |
-a, --available | Liste tous les langages pris en charge | option |
-i, --installed | Détecte les interpréteurs installés sur la cible | option |
-v, --verbose | Mode de sortie verbeux | option |
-h, --help | Affiche le menu d'aide | — |
| Phase | Nom | Description |
|---|
| 1 | 🔍 Énumération | Se connecter à /mcp et énumérer les outils MCP disponibles |
| 2 | 🧪 Découverte du schéma | Confirmer le schéma d'entrée de run-code (code, languageId) |
| 3 | 💣 Envoi de l'exploit | Envoyer une requête tools/call forgée avec un code contrôlé par l'attaquant |
| 4 | 🚀 Exécution interactive | Obtenir un shell en direct — chaque commande s'exécute sur la machine cible |