
Exploit de restablecimiento de contraseña no autenticado para Flowise AI ≤ 3.0.5. Abusa del endpoint /api/v1/account/forgot-password para cambiar la contraseña de cualquier usuario sin autenticación previa. Incluye un script de prueba de concepto y pautas de mitigación.
ID de CVE: CVE-2025-58434
Software afectado: Flowise AI
Versiones vulnerables: <= 3.0.5
Versión corregida: 3.0.6 y posteriores
Gravedad: Crítica
Autor: arensballiu
Fecha: 2025
Las versiones de Flowise AI hasta la 3.0.5 inclusive contienen una falla de autenticación rota en el flujo de restablecimiento de contraseña. El endpoint /api/v1/account/forgot-password devuelve un token de restablecimiento temporal (tempToken) directamente en su respuesta de API sin requerir ninguna forma de autenticación previa ni verificación por correo electrónico.
Un atacante no autenticado que conoce (o puede enumerar) una dirección de correo electrónico válida puede:
tempToken directamente de la respuesta de la API.Esta vulnerabilidad omite por completo el flujo de verificación por correo electrónico previsto, ya que el token se filtra en la respuesta HTTP en lugar de enviarse únicamente a la bandeja de entrada del propietario de la cuenta.
| Endpoint | Método | Propósito |
|---|---|---|
/api/v1/auth/login | POST | Se utiliza para verificar si existe una cuenta de correo electrónico |
/api/v1/account/forgot-password | POST | Desencadena el restablecimiento y filtra el tempToken en la respuesta |
/api/v1/account/reset-password | POST | Completa el cambio de contraseña usando el token |
Archivo: CVE-2025-58434_POC.py
requestspip install requests
python3 CVE-2025-58434_POC.py -e <target_email> -u <target_url> [-p <new_password>]
| Flag | Forma larga | Obligatorio | Descripción |
|---|---|---|---|
-e | --email | Sí | Dirección de correo electrónico de la cuenta objetivo |
-u | --url | Sí | URL base de la instancia de Flowise |
-p | --password | No | Nueva contraseña a establecer (por defecto 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!
La API de restablecimiento de contraseña fue diseñada para enviar el tempToken al correo electrónico del usuario, pero el servidor también lo incluía directamente en el cuerpo de la respuesta JSON. Esto significa que cualquier llamador, autenticado o no, recibe el token inmediatamente al realizar la solicitud, lo que hace irrelevante el paso de envío por correo electrónico.
Además, la enumeración de correos electrónicos es posible porque el endpoint de inicio de sesión devuelve un mensaje de error distinto ("Incorrect Email or Password") solo cuando el correo electrónico existe, lo que hace trivial confirmar cuentas válidas antes de lanzar el ataque.
tempToken se transmita exclusivamente a través de la dirección de correo electrónico registrada.Esta prueba de concepto se proporciona únicamente con fines educativos y de investigación de seguridad autorizada. El uso de este script contra sistemas sin permiso escrito explícito es ilegal y poco ético. El autor y los colaboradores no asumen ninguna responsabilidad por el uso indebido.