
RAGFlow Drei-Schwachstellen-Audit-Tool (CVE-2026-28797 / CVE-2026-24770 / CVE-2025-69286)
RAGFlow-Drei-Lücken-Audit-Tool (CVE-2026-28797 / CVE-2026-24770 / CVE-2025-69286)
Reine Python-Standardbibliothek, keine Drittanbieter-Abhängigkeiten, direkt mit Python 3.8+ ausführbar.
python3 ragflow-audit.py [-h] {ssti,zipslip,apikey} ...
python3 ragflow-audit.py ssti --url http://TARGET:9380 --auth "AUTH_HEADER" [--component StringTransform|Message] [--newline]
--url: RAGFlow-Webadresse--auth: Vollständiger Wert des Authorization-Headers aus der Login-Antwort--component: Zielkomponente, Standard ist StringTransform--newline: Verwendet einen Zeilenumbruch zum Umgehen des Payloads (umgeht die _is_jinjia2-Regex-Erkennung)Ablauf: Schadhaftes Canvas-DSL erstellen -> POST /v1/canvas/set zum Erstellen des Canvas -> POST /v1/canvas/completion zum Auslösen der Ausführung -> Übereinstimmung mit uid= in der Ausgabe zur Bestätigung des RCE-Erfolgs.
python3 ragflow-audit.py zipslip --zip evil.zip [--extract-dir /tmp/out]
Offline-Prüfung von Zip-Einträgen, kennzeichnet drei Gefahrenkategorien: Pfad-Traversierung (..), absolute Pfade, symbolische Links.
python3 ragflow-audit.py apikey --beta "Freigabe-Link-Token" --node "letzte 12 Zeichen der Angreifer-user_id"
Stellt aus dem Beta-Token eines öffentlichen Freigabe-Links den uuid1-Host wieder her, enumeriert time_low und gibt Kandidaten-Token aus. Bei echter Ausnutzung wird für jedes Kandidaten-Token einzeln eine authentifizierungspflichtige API aufgerufen (200 Treffer / 401 weiter).
Die Anmeldeinformationen von RAGFlow befinden sich im Authorization-Header der Login-Antwort, nicht im access_token im Body. Der access_token im Body ist nur eine UUID; API-Aufrufe führen zu 401.
curl -i -X POST http://TARGET:9380/v1/user/login \
-H 'Content-Type: application/json' \
-d '{"email":"[email protected]","password":"<RSA-verschlüsseltes Passwort>"}'
Den Wert aus dem Antwort-Header authorization: als --auth-Parameter verwenden.
Hinweis: Das Passwort für Registrierung/Login muss zuerst RSA-verschlüsselt werden (öffentlicher Schlüssel unter /ragflow/conf/public.pem, PKCS1_v1_5, Verschlüsselungsobjekt ist der base64-codierte Klartext). Die direkte Übergabe des Klartext-Passworts führt zu einem Fehler.
| CVE | Typ | Betroffene Versionen | Behobene Version |
|---|---|---|---|
| CVE-2026-28797 | SSTI (StringTransform/Message-Komponenten) | < 0.25.0 (NVD: 0.24.0 and prior) | 0.25.0 (Sandbox-Fix, eingeführt am 2026-03-02) |
| CVE-2026-24770 | MinerU-Parser Zip Slip | < 0.23.1 | 0.23.1 |
| CVE-2025-69286 | API-Key ableitbar (uuid1 + tenant_id-Schlüssel) | < 0.22.0 | 0.22.0 |
Dieses Tool dient ausschließlich autorisierten Sicherheitstests und der Schwachstellenforschung. Die Folgen der unbefugten Nutzung dieses Tools gegen fremde Systeme liegen in der alleinigen Verantwortung des Nutzers.