FlowiseAI Account-Takeover via Forgot-Password Token Leak (CVE-2025-58434)
by 00lucasm · 2026-07-06
- Severity
- Critical
- CVE
- CVE-2025-58434
- Category
- web
- Affected product
- FlowiseAI (/api/v1/account/forgot-password and /api/v1/account/reset-password endpoints)
- Affected versions
- Per source repository — unpatched FlowiseAI deployments exposing the account API
- Disclosed
- 2026-07-06
- Patch status
- unpatched
Tags
Archive entry
intelseclab/poc-archiveMetadata
| Field | Value |
|---|---|
| Date Added | 2026-07-06 |
| Last Updated | 2026-07-06 |
| Author / Researcher | 00lucasm |
| CVE / Advisory | CVE-2025-58434 |
| Category | web |
| Severity | Critical |
| CVSS Score | 9.8 (per NVD) |
| Status | Weaponized |
| Tags | flowiseai, auth-bypass, account-takeover, forgot-password, reset-password, api, python, cwe-640 |
| Related | N/A |
Affected Target
| Field | Value |
|---|---|
| Software / System | FlowiseAI (/api/v1/account/forgot-password and /api/v1/account/reset-password endpoints) |
| Versions Affected | Per source repository — unpatched FlowiseAI deployments exposing the account API |
| Language / Platform | Python 3 (requests) targeting FlowiseAI’s Node.js/Express-based REST API |
| Authentication Required | No |
| Network Access Required | Yes (HTTP/HTTPS access to the FlowiseAI API) |
Summary
CVE-2025-58434 is an authentication-bypass vulnerability in FlowiseAI’s password-reset flow: the forgot-password endpoint returns the password-reset tempToken directly in its JSON response body instead of only delivering it out-of-band (e.g., via email), and the reset-password endpoint accepts that token to set a new password for any account with no further verification of ownership. An attacker who merely knows a victim’s email address can call forgot-password to obtain the reset token straight from the API response, then immediately submit it to reset-password to overwrite the victim’s password, fully hijacking the account without ever needing access to their inbox. The PoC is a small, self-contained Python script (exploit.py) that chains these two calls end-to-end and prints the newly-set credentials.
Root Cause
The forgot-password endpoint’s response leaks the sensitive tempToken value that is meant to be a secret delivered only to the account owner (typically via email):
| |
Because the token is returned synchronously to whoever called the endpoint (not just sent via email), any unauthenticated party who submits an email address receives the exact token needed to complete the reset — collapsing the intended “possession of inbox” verification into “knowledge of email address.”
Attack Vector
- Attacker sends
POST /api/v1/account/forgot-passwordwith{"user": {"email": "<victim-email>"}}for any known or guessed account email. - The API responds with a JSON body containing
user.tempToken— the password-reset token — directly to the caller, rather than only emailing it to the account owner. - Attacker immediately sends
POST /api/v1/account/reset-passwordwith{"user": {"email": "<victim-email>", "password": "<attacker-chosen>", "tempToken": "<leaked-token>"}}. - The server accepts the attacker-supplied token as valid proof of ownership and resets the victim’s password to the attacker-chosen value.
- Attacker now logs in as the victim with the new password, achieving full account takeover with no interaction from the victim.
Impact
Full account takeover of any FlowiseAI user (including administrators) by an unauthenticated remote attacker who only needs to know the target’s email address — no phishing, no inbox access, and no credential guessing required.
Environment / Lab Setup
Target: FlowiseAI instance exposing /api/v1/account/forgot-password and /api/v1/account/reset-password
Attacker: Python 3, pip package: requests
Proof of Concept
PoC Script
See
exploit.pyin this folder.
| |
The script calls forgot-password for the given email, extracts the leaked tempToken from the JSON response, then calls reset-password with that token and a hardcoded PoC password (Fl0w1s3PoC), printing the victim’s email and new password on success.
Detection & Indicators of Compromise
- POST requests to /api/v1/account/forgot-password immediately followed (within seconds) by
POST requests to /api/v1/account/reset-password for the same target email, from the same
source IP, with no intervening email-click/redirect flow
- Password-reset events with no corresponding "reset link clicked" or email-open telemetry
- Multiple forgot-password/reset-password sequences for different victim emails from one source
Signs of compromise:
- Unexpected password changes on user accounts with no user-initiated reset request
- Login events immediately following an unsolicited password reset
- Server logs showing
tempTokenvalues present inforgot-passwordAPI responses (indicates the vulnerable code path is active)
Remediation
| Action | Detail |
|---|---|
| Primary fix | No official patch identified at time of mirroring — see references; remove tempToken from the forgot-password HTTP response body and deliver it exclusively via a verified out-of-band channel (email) |
| Interim mitigation | Restrict/monitor access to the account API, rate-limit forgot-password/reset-password calls per source IP and per target email, and alert on reset-password calls that follow a forgot-password call within an implausibly short time window |
References
Notes
Mirrored from https://github.com/00lucasm/CVE-2025-58434-Flowiseai-Auth-Bypass-PoC on 2026-07-06. The repository’s README is minimal, but exploit.py is a working script chaining the forgot-password and reset-password endpoints to hijack any account by leaking the reset token from the API response itself.
| |