/

CVE-2026-70473

Severity:

HIGH RISK

(8.5)

Excessive Data Exposure (CWE-200) in Flowise API Endpoint

CVE-2026-70473

Analyzed

Vulnerability type

Category:

Broken Access Control and Excessive Data Exposure

CWE:

CWE-200, CWE-202, CWE-862

Impact:

Unauthorized disclosure of sensitive configuration and infrastructure information

Severity:

HIGH RISK

(8.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 server-wide upsert history through an API response that is not adequately scoped to the requesting user, tenant, workspace, or project. An attacker who can access the endpoint may retrieve sensitive integration configuration, including vector-store details and infrastructure identifiers, with the response potentially exceeding 100 MB.

Flowise exposes server-wide upsert history through an API response that is not adequately scoped to the requesting user, tenant, workspace, or project. An attacker who can access the endpoint may retrieve sensitive integration configuration, including vector-store details and infrastructure identifiers, with the response potentially exceeding 100 MB.

Affected context

The issue occurs in Flowise deployments where the /api/v1/upsert-history endpoint is reachable and its results are returned without sufficient authorization or workspace isolation. Risk is increased when upsert history contains integration settings, vector-store connection parameters, collection names, or other operational metadata and when responses are not constrained by pagination or record limits.

The issue occurs in Flowise deployments where the /api/v1/upsert-history endpoint is reachable and its results are returned without sufficient authorization or workspace isolation. Risk is increased when upsert history contains integration settings, vector-store connection parameters, collection names, or other operational metadata and when responses are not constrained by pagination or record limits.

Exploit preconditions

  • Attack surface: Flowise's HTTP API, specifically the upsert-history endpoint
  • Required access: Network access to the endpoint and any access level required by the deployment; the issue does not reliably enforce data ownership after the request is accepted
  • Trigger point: A request to retrieve upsert history
  • Why exploitation is possible: Server-side history is returned without adequate user, tenant, workspace, or project scoping, and the response may lack effective pagination or size limits
  • Attack surface: Flowise's HTTP API, specifically the upsert-history endpoint
  • Required access: Network access to the endpoint and any access level required by the deployment; the issue does not reliably enforce data ownership after the request is accepted
  • Trigger point: A request to retrieve upsert history
  • Why exploitation is possible: Server-side history is returned without adequate user, tenant, workspace, or project scoping, and the response may lack effective pagination or size limits

Why this happens

The underlying flaw is an authorization and data-isolation failure. The endpoint retrieves a broad server-wide dataset without consistently applying the requester's security context, mapping to CWE-862: Missing Authorization and CWE-202: Exposure of Sensitive Information Through Data Queries. Returning the resulting records without strict pagination or minimization further contributes to CWE-200: Exposure of Sensitive Information to an Unauthorized Actor.

The underlying flaw is an authorization and data-isolation failure. The endpoint retrieves a broad server-wide dataset without consistently applying the requester's security context, mapping to CWE-862: Missing Authorization and CWE-202: Exposure of Sensitive Information Through Data Queries. Returning the resulting records without strict pagination or minimization further contributes to CWE-200: Exposure of Sensitive Information to an Unauthorized Actor.

Potential impact

  • Unauthorized users may access configuration data belonging to other users, tenants, or workspaces
  • Exposed Qdrant URLs, collection names, and related parameters could enable targeted follow-on attacks
  • Attackers could learn deployment topology, integration choices, and operational metadata
  • Very large responses could increase memory, bandwidth, or availability pressure
  • Disclosed information could support credential targeting, data access attempts, or broader infrastructure reconnaissance
  • Unauthorized users may access configuration data belonging to other users, tenants, or workspaces
  • Exposed Qdrant URLs, collection names, and related parameters could enable targeted follow-on attacks
  • Attackers could learn deployment topology, integration choices, and operational metadata
  • Very large responses could increase memory, bandwidth, or availability pressure
  • Disclosed information could support credential targeting, data access attempts, or broader infrastructure reconnaissance

General mitigation guidance

Mitigation generally focuses on enforcing authorization and minimizing the data returned by history APIs.

Common defensive patterns include:

  • Apply server-side authorization checks before querying history
  • Scope every query to the authenticated user's tenant, workspace, project, and permitted resources
  • Deny access by default when ownership or tenancy context is missing or ambiguous
  • Return only fields necessary for the requesting feature, excluding secrets and infrastructure-sensitive parameters
  • Enforce pagination, maximum page sizes, response-size limits, and bounded query ranges
  • Use short-lived, least-privileged service credentials and avoid exposing connection details in operational history
  • Log and alert on unusually broad, repeated, or high-volume history requests

Mitigation generally focuses on enforcing authorization and minimizing the data returned by history APIs.

Common defensive patterns include:

  • Apply server-side authorization checks before querying history
  • Scope every query to the authenticated user's tenant, workspace, project, and permitted resources
  • Deny access by default when ownership or tenancy context is missing or ambiguous
  • Return only fields necessary for the requesting feature, excluding secrets and infrastructure-sensitive parameters
  • Enforce pagination, maximum page sizes, response-size limits, and bounded query ranges
  • Use short-lived, least-privileged service credentials and avoid exposing connection details in operational history
  • Log and alert on unusually broad, repeated, or high-volume history requests

How teams detect issues like this

Detection can combine application testing, source review, and policy enforcement:

  • Use static analysis and code review to identify data queries that do not incorporate authenticated tenant, workspace, project, or user context
  • Review route handlers and service-layer methods for missing authorization middleware or post-query ownership checks
  • Test requests across users and tenants to verify that records cannot cross isolation boundaries
  • Check API contracts for pagination, maximum limits, field allowlists, and response-size controls
  • Monitor access logs for unusually large responses, repeated history enumeration, and requests spanning broad time ranges
  • Use automated API security testing or policy-as-code checks to validate authorization and object-level isolation

Detection can combine application testing, source review, and policy enforcement:

  • Use static analysis and code review to identify data queries that do not incorporate authenticated tenant, workspace, project, or user context
  • Review route handlers and service-layer methods for missing authorization middleware or post-query ownership checks
  • Test requests across users and tenants to verify that records cannot cross isolation boundaries
  • Check API contracts for pagination, maximum limits, field allowlists, and response-size controls
  • Monitor access logs for unusually large responses, repeated history enumeration, and requests spanning broad time ranges
  • Use automated API security testing or policy-as-code checks to validate authorization and object-level isolation

Sources

SourceLink
github.comgithub.com/FlowiseAI/Flowise/commit/d81483b70c997ddf981acc9c49fbd9a02fa345cd
github.comgithub.com/FlowiseAI/Flowise/pull/6170
github.comgithub.com/FlowiseAI/Flowise/releases/tag/flowise@3.1.3
github.comgithub.com/FlowiseAI/Flowise/security/advisories/GHSA-fr6g-7cq8-fg82

Frequently asked

questions

It may be exploitable remotely when the Flowise API is network-accessible and an attacker can reach the affected endpoint. The exact scope depends on deployment exposure and authentication controls.

Not necessarily in every deployment. Where authentication is enabled, an attacker may only need a valid account or session because the endpoint can fail to enforce tenant, workspace, or project-level authorization.

Enforce authorization and ownership checks in the server-side query path, scope results to the caller's security context, minimize returned fields, and impose pagination and response-size limits.

Treat every multi-tenant data query as authorization-sensitive, test cross-user and cross-workspace access in CI, use deny-by-default policies, and monitor for unusually broad data retrieval.

It may be exploitable remotely when the Flowise API is network-accessible and an attacker can reach the affected endpoint. The exact scope depends on deployment exposure and authentication controls.

Not necessarily in every deployment. Where authentication is enabled, an attacker may only need a valid account or session because the endpoint can fail to enforce tenant, workspace, or project-level authorization.

Enforce authorization and ownership checks in the server-side query path, scope results to the caller's security context, minimize returned fields, and impose pagination and response-size limits.

Treat every multi-tenant data query as authorization-sensitive, test cross-user and cross-workspace access in CI, use deny-by-default policies, and monitor for unusually broad data retrieval.

Find out what's already
exploitable in your codebase.