/

CVE-2026-100610

Severity:

HIGH RISK

(7.5)

Broken Access Control (CWE-639) in Flowise History

CVE-2026-100610

Deferred

Vulnerability type

Category:

Broken Access Control / Insecure Direct Object Reference

CWE:

CWE-639

Impact:

Unauthorized cross-workspace data disclosure and deletion

Severity:

HIGH RISK

(7.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Flowise exposes upsert-history endpoints without sufficient route-level authorization, and the backing service does not verify workspace or record ownership. An authenticated low-privilege user or valid API key who knows a target chatflow ID or record UUIDs may read or delete document-store upsert history belonging to other users or workspaces.

Affected context

The issue occurs in Flowise deployments through version 3.1.4 when the upsert-history GET and PATCH routes are reachable and authorization is not enforced at both the route and service layers. Risk is greater when publicly shared chatbot links expose chatflow IDs and when an authenticated account or API key has access to these endpoints without corresponding ownership checks.

Exploit preconditions

  • Attack surface: Flowise HTTP API endpoints for upsert-history retrieval and deletion
  • Required access: An authenticated low-privilege user or valid API key
  • Required knowledge: A target chatflow ID or one or more upsert-history record UUIDs
  • Trigger point: GET retrieval or PATCH deletion of upsert-history records
  • Why exploitation is possible: The application selects or deletes records using attacker-supplied identifiers without validating workspace membership or ownership

Why this happens

The underlying flaw is missing object-level authorization. The service trusts client-supplied chatflow and record identifiers as sufficient selectors, rather than confirming that each requested object belongs to a workspace and user that the caller is authorized to access. This behavior maps to CWE-639, Authorization Bypass Through User-Controlled Key, and is commonly associated with insecure direct object references.

Potential impact

  • An attacker may read upsert-history records belonging to other users or workspaces.
  • Retrieved flow data may disclose embedding, record-manager, vector-store, and per-node configuration values.
  • An attacker could delete selected document-store upsert-history records.
  • The incident may expose configuration details useful for further attacks or operational disruption.

General mitigation guidance

Mitigation generally focuses on enforcing object-level authorization at every

data access layer, not only at the HTTP route.

Common defensive patterns include:

  • Require explicit workspace and ownership checks before returning or deleting each record.
  • Derive the authorized workspace from the authenticated principal rather than from client-controlled identifiers.
  • Apply consistent authorization checks to GET, PATCH, bulk, and indirect service calls.
  • Use deny-by-default route policies and narrowly scoped API keys.
  • Minimize sensitive configuration data returned in history responses.
  • Treat publicly exposed chatflow IDs as identifiers, not authorization credentials.
  • Record and review cross-workspace access failures and destructive operations.

How teams detect issues like this

Detection approaches can include:

  • Static analysis for database queries or service methods that use request-provided identifiers without nearby authorization checks.
  • Code review of every endpoint that accepts chatflow IDs, record UUIDs, workspace IDs, or bulk identifier arrays.
  • Tests that attempt same-workspace and cross-workspace reads and deletions using separate principals.
  • API gateway or policy controls that require authenticated identity, workspace context, and operation-specific permissions.
  • Audit monitoring for unusual enumeration of chatflow identifiers, repeated history access, and bulk deletion requests.
  • Neutral automated security review tools may help identify missing object-level authorization patterns.

Sources

SourceLink
github.comgithub.com/FlowiseAI/Flowise/security/advisories/GHSA-jvx3-mjpw-r4gh
vulncheck.comvulncheck.com/advisories/flowise-through-3.1.4-missing-authorization-via-upsert-history

Frequently asked

questions

Any authenticated low-privilege user or holder of a valid API key may be able

to exploit it when the relevant identifiers are known and the deployment does

not add compensating authorization controls.

Yes. A target chatflow ID or upsert-history record UUID is generally needed.

Chatflow IDs may be exposed through publicly shared chatbot links, while

record identifiers could be obtained through other application behavior or

disclosure.

Enforce object-level authorization in the service layer before every read or

deletion, verifying that the authenticated principal has permission for the

target workspace and record. Do not treat client-supplied identifiers as

proof of access.

Use deny-by-default authorization, centralize workspace and ownership checks,

test cross-tenant access scenarios, restrict API-key scope, and monitor

identifier enumeration and bulk destructive operations.

Find out what's already
exploitable in your codebase.