
Unauthenticated arbitrary file read in Flowise (< 2.2.4) via path traversal in getFileFromStorage (storageUtils.ts). Caused by un-sanitized file path combined with mass-assignment in PUT /api/v1/document-store/store/:id. Allows full compromise via /root/.flowise/encryption.key read. Distinct from CVE-2025-71338 (fixed in 2.2.4).
getFileFromStorage) — vorgeschlagene NEUE CVEEine von CVE-2025-71338 separate Schwachstelle (bei der es sich um den Write-Sink handelt). Dies ist ein nicht authentifiziertes beliebiges Datei-Lesen im „Rehydrate“-Pfad des Flowise-Document-Store-Loaders, betroffen 1.7.1 – 2.2.3, behoben in 2.2.4. Das Lesen von /root/.flowise/encryption.key liefert den Schlüssel, der alle gespeicherten Anbieter-Zugangsdaten entschlüsselt → vollständige Kompromittierung der Zugangsdaten.
| Datei | Zweck |
|---|---|
report.md | Die Einreichung der neuen CVE: Grundursache, Schwachstellenpfad, CVSS, Auswirkungen, betroffene Versionen, Lösung, PoC, Abgrenzung zu bestehenden CVEs |
poc.py | Selbstverifizierender PoC (nur Stdlib) – fälscht Loader per Massenzuweisung, löst den FILE-STORAGE::-Rehydrate-Lesevorgang aus, gibt die Dateiinhalte in-band aus |
docker/Dockerfile | Versionsparametrisiertes Labor-Image (FROM das echte Anbieter-Image; kein Overlay) |
setup.sh | Baut/startet das Labor (FLOWISE_VERSION, Standard 2.1.0); klassifiziert betroffen vs. behoben |
evidence.txt | Live-Verifikation: bytegenaue Exfiltration von encryption.key auf 2.1.0 & 2.2.3; NICHT AUSNUTZBAR auf 2.2.4 |
# start an affected lab (default 2.1.0):
bash setup.sh
# exfiltrate the credential-decryption key (self-proving; no listener):
python3 poc.py http://127.0.0.1:3510 --read-path /root/.flowise/encryption.key
# ground truth:
docker exec <container> cat /root/.flowise/encryption.key
getFileFromStorage(file, ...paths) führt path.join(getStoragePath(), ...paths, file) + fs.readFileSync mit nicht bereinigtem file aus (roh ≤ 2.2.3, _sanitizeFilename in 2.2.4 hinzugefügt); file wird vom Angreifer über den Loader-Wert FILE-STORAGE:: bereitgestellt, und der maßgebliche Eintrag loaders[].files[]
wird durch die Massenzuweisung PUT /store/:id (Object.assign(entity, req.body)) gefälscht.