
CVE-Reproduktion: cve-2026-0770-langflow_rce_reproduction
CVSS 9.8 (Kritisch) | ZDI-CAN-27325 | CWE-829: Einbindung von Funktionalität aus einer nicht vertrauenswürdigen Kontrollsphäre
CVE-2026-0770 ist eine kritische, nicht authentifizierte Remote-Codeausführungs-Schwachstelle in Langflow, einem Low-Code-Anwendungsframework zur Entwicklung LLM-gestützter Apps. Der Fehler befindet sich im Endpunkt /api/v1/validate, wo der Parameter exec_globals unsicher an Pythons exec()-Funktion übergeben wird, sodass nicht authentifizierte Angreifer beliebigen Code mit den Rechten des Langflow-Prozesses (in der Regel root) ausführen können.
Entdeckt über die Zero Day Initiative (ZDI-CAN-27325).
Der Validierungs-Endpunkt von Langflow unter /api/v1/validate akzeptiert eine JSON-Nutzlast, die ein Feld enthält. Dieses Wörterbuch ist für die interne Verwendung gedacht, um bei der Validierung benutzerdefinierter Komponenten globale Variablen vorab zu befüllen. Der Endpunkt bereinigt oder beschränkt den Inhalt von jedoch nicht, und die Werte werden direkt an Pythons eingebaute -Funktion übergeben:
exec_globalsexec_globalsexec()exec(user_code, exec_globals)
Ein Angreifer kann beliebigen Python-Code injizieren, indem er ein manipuliertes exec_globals-Wörterbuch bereitstellt, das eingebaute Funktionen überschreibt oder schädliche aufrufbare Objekte einschleust. Wenn Langflow den Benutzercode intern mit diesen Globals auswertet, wird der injizierte Code ausgeführt.
Die Schwachstelle wird als CWE-829 eingestuft, da die Anwendung Funktionalität (über exec_globals) aus einer nicht vertrauenswürdigen Quelle (der Netzwerkanfrage) ohne ausreichende Validierung einbindet, was zu beliebiger Codeausführung führt.
Alle Langflow-Versionen vor dem Patch, der eine ordnungsgemäße Bereinigung von exec_globals im Validierungs-Endpunkt implementiert, sind betroffen. Zu den spezifisch betroffenen Versionen gehören:
/api/v1/validate exec_globals ohne Validierung akzeptiert/api/v1/validate mit einer schädlichen exec_globals-NutzlastVerwenden Sie das enthaltene Skript exploit.py:
python exploit.py --target 192.168.1.100 --port 7860 --command "id > /tmp/pwned"
exec_globals bereinigt.Haftungsausschluss: Diese Informationen dienen ausschließlich zu Bildungszwecken und für autorisierte Sicherheitstests. Die unbefugte Verwendung gegen Systeme, die Ihnen nicht gehören oder für die Sie keine ausdrückliche Erlaubnis zum Testen haben, ist illegal.