CVE-2026-70471: Flowise: broken authZ leaks workspace secrets via sandbox

GHSA-8r8h-6vcc-xhrvUNKNOWN
Published August 4, 2026
CISO Take

A missing permission check in Flowise's code execution sandbox lets any authenticated user or API key call /api/v1/node-custom-function and receive every workspace variable pre-populated in $vars, even when their account is explicitly denied the variables:view permission — the same data the properly-protected Variables API refuses to show them. This matters because those variables commonly hold database passwords, JWT signing secrets, SMTP credentials, and cloud provider keys, either as static values or as live process.env lookups, meaning a low-privilege insider or a compromised low-tier API key can pivot straight to full infrastructure compromise. There's no CISA KEV listing, no public exploit or Nuclei template yet, and EPSS sits at a low 0.28% (top 79th percentile — moderate relative likelihood, not urgent by internet-scanning standards), so this looks like an insider/multi-tenant risk rather than an opportunistic mass-exploitation one. Given zero downstream npm dependents recorded, exposure is concentrated in direct Flowise deployments rather than transitive supply chain. Patch to Flowise 3.1.3 immediately in any multi-user or multi-tenant deployment; until then, audit which accounts/API keys can reach node-custom-function, rotate any secrets stored in workspace Variables, and review logs for anomalous node-custom-function calls from accounts lacking variables:view.

Sources:NVDGitHub AdvisoryEPSSATLAS

What is the risk?

Moderate-to-high severity despite the absence of a published CVSS score. The bug is a textbook broken-access-control flaw (CWE-863): a secondary code path (node-custom-function) fetches and injects the same sensitive data that a properly-permissioned endpoint blocks. Exploitability is low-complexity for anyone who already holds a Flowise account or API key with node-custom-function access but lacks variables:view — no chained exploit, no special tooling required, just a single API call. The main mitigating factor is that it requires an existing authenticated identity (not unauthenticated RCE), which narrows the threat actor pool to insiders, disgruntled restricted users, or attackers who've already obtained a low-privilege credential via phishing or credential stuffing. No KEV listing, no public PoC, and low EPSS confirm this isn't being mass-exploited today, but the impact ceiling (full secret disclosure enabling lateral movement into databases, cloud accounts, and email infrastructure) makes it a priority patch for any organization running Flowise with multiple users or tenants.

How does the attack unfold?

Restricted Access
Attacker holds a valid Flowise account or API key that is explicitly denied the variables:view permission but can still call the custom-function endpoint.
AML.T0012
Authorization Bypass via Tool Invocation
Attacker calls /api/v1/node-custom-function, which populates the code execution sandbox's $vars with all workspace variables without re-checking variables:view.
AML.T0053
Secret Harvesting
The custom function code exfiltrates $vars, capturing static secrets and process.env-resolved runtime secrets such as DB passwords, JWT secrets, SMTP passwords, and cloud keys.
AML.T0055
Lateral Movement / Impact
Attacker reuses harvested credentials to access databases, forge authentication tokens, or send phishing mail via the compromised SMTP relay.
AML.T0091

What systems are affected?

PackageEcosystemVulnerable RangePatched
Flowisenpm<= 3.1.23.1.3

Do you use Flowise? You're affected.

How severe is it?

CVSS 3.1
N/A
EPSS
0.4%
chance of exploitation in 30 days
Higher than 36% of all CVEs
Exploitation Status
No known exploitation
Sophistication
Moderate

What should I do?

1 step
  1. 1) Upgrade to Flowise 3.1.3 or later immediately — this is the definitive fix. 2) Until patched, restrict or disable access to /api/v1/node-custom-function for any user/API key that is not fully trusted with all workspace variables, since permission scoping cannot be relied upon. 3) Rotate all credentials stored in Flowise Workspace Variables (DB passwords, JWT secrets, SMTP passwords, cloud keys) as a precaution, especially in shared/multi-tenant instances. 4) Audit API access logs for calls to node-custom-function from accounts or keys that lack variables:view, which is a strong indicator of exploitation attempts or accidental exposure. 5) Apply least-privilege to workspace Variables going forward — avoid storing high-value secrets (cloud admin keys, root DB credentials) directly in Flowise Variables where feasible; prefer scoped/short-lived credentials or a secrets manager with just-in-time injection.

What does CISA's SSVC say?

DecisionTrack
Exploitationnone
AutomatableNo
Technical Impactpartial

Source: CISA Vulnrichment (SSVC v2.0). Decision based on the CISA Coordinator decision tree.

How is it classified?

Which compliance frameworks are affected?

This CVE is relevant to:

EU AI Act
Article 15-Accuracy, Robustness and Cybersecurity
NIST AI RMF
MEASURE 2.7-AI system security and resilience are evaluated and documented
OWASP LLM Top 10
LLM06:2025-Sensitive Information Disclosure

Frequently Asked Questions

What is CVE-2026-70471?

A missing permission check in Flowise's code execution sandbox lets any authenticated user or API key call /api/v1/node-custom-function and receive every workspace variable pre-populated in $vars, even when their account is explicitly denied the variables:view permission — the same data the properly-protected Variables API refuses to show them. This matters because those variables commonly hold database passwords, JWT signing secrets, SMTP credentials, and cloud provider keys, either as static values or as live process.env lookups, meaning a low-privilege insider or a compromised low-tier API key can pivot straight to full infrastructure compromise. There's no CISA KEV listing, no public exploit or Nuclei template yet, and EPSS sits at a low 0.28% (top 79th percentile — moderate relative likelihood, not urgent by internet-scanning standards), so this looks like an insider/multi-tenant risk rather than an opportunistic mass-exploitation one. Given zero downstream npm dependents recorded, exposure is concentrated in direct Flowise deployments rather than transitive supply chain. Patch to Flowise 3.1.3 immediately in any multi-user or multi-tenant deployment; until then, audit which accounts/API keys can reach node-custom-function, rotate any secrets stored in workspace Variables, and review logs for anomalous node-custom-function calls from accounts lacking variables:view.

Is CVE-2026-70471 actively exploited?

No confirmed active exploitation of CVE-2026-70471 has been reported, but organizations should still patch proactively.

How to fix CVE-2026-70471?

1) Upgrade to Flowise 3.1.3 or later immediately — this is the definitive fix. 2) Until patched, restrict or disable access to /api/v1/node-custom-function for any user/API key that is not fully trusted with all workspace variables, since permission scoping cannot be relied upon. 3) Rotate all credentials stored in Flowise Workspace Variables (DB passwords, JWT secrets, SMTP passwords, cloud keys) as a precaution, especially in shared/multi-tenant instances. 4) Audit API access logs for calls to node-custom-function from accounts or keys that lack variables:view, which is a strong indicator of exploitation attempts or accidental exposure. 5) Apply least-privilege to workspace Variables going forward — avoid storing high-value secrets (cloud admin keys, root DB credentials) directly in Flowise Variables where feasible; prefer scoped/short-lived credentials or a secrets manager with just-in-time injection.

What systems are affected by CVE-2026-70471?

This vulnerability affects the following AI/ML architecture patterns: agent frameworks, low-code/no-code LLM orchestration, code execution sandboxes, multi-tenant SaaS platforms.

What is the CVSS score for CVE-2026-70471?

No CVSS score has been assigned yet.

What is the AI security impact?

Affected AI Architectures

agent frameworkslow-code/no-code LLM orchestrationcode execution sandboxesmulti-tenant SaaS platforms

MITRE ATLAS Techniques

AML.T0012Valid Accounts
AML.T0053AI Agent Tool Invocation
AML.T0055Unsecured Credentials

Compliance Controls Affected

EU AI Act: Article 15
NIST AI RMF: MEASURE 2.7
OWASP LLM Top 10: LLM06:2025

What are the technical details?

Original Advisory

Flowise is a drag-and-drop user interface for building customized large language model (LLM) flows. Prior to 3.1.3, Flowise injects $vars into the code execution sandbox without requiring variables:view, bypassing the permission-protected Variables API. Variables for the active workspace are fetched at packages/components/src/utils.ts and runtime variables are resolved from server environment variables, while the official variables route enforces variables:view. A user or API key that is denied variables:view can call /api/v1/node-custom-function and receive $vars pre-populated with all variables for the workspace, including Variable.name to Variable.value static variables and Variable.name to process.env[Variable.name] runtime variables. This can expose secrets such as database passwords, JWT secrets, SMTP passwords, and cloud keys, depending on the workspace Variables configuration. This issue is fixed in version 3.1.3.

Exploitation Scenario

An organization runs a shared Flowise instance where a marketing team member has an account scoped to build and test LLM flows but is explicitly denied variables:view because the workspace also stores production database and SMTP credentials used by other flows. That user (or an attacker who phished their session/API key) invokes /api/v1/node-custom-function to run what looks like a benign custom JS node. Flowise's utils.ts populates the sandbox's $vars object with the full set of workspace variables regardless of the caller's variables:view permission — both static secrets and process.env-resolved runtime secrets. The attacker's custom function simply returns or exfiltrates $vars (e.g., logs it, POSTs it externally, or renders it in the flow output), harvesting the database password, JWT signing secret, SMTP credentials, and cloud API key in one call. They then use the database password for direct data exfiltration, the JWT secret to forge authentication tokens, and the SMTP credentials to send phishing mail from a trusted domain.

Weaknesses (CWE)

CWE-863 — Incorrect Authorization: The product performs an authorization check when an actor attempts to access a resource or perform an action, but it does not correctly perform the check.

  • [Architecture and Design] Divide the product into anonymous, normal, privileged, and administrative areas. Reduce the attack surface by carefully mapping roles with data and functionality. Use role-based access control (RBAC) [REF-229] to enforce the roles at the appropriate boundaries. Note that this approach may not protect against horizontal authorization, i.e., it will not protect a user from attacking others with the same role.
  • [Architecture and Design] Ensure that access control checks are performed related to the business logic. These checks may be different than the access control checks that are applied to more generic resources such as files, connections, processes, memory, and database records. For example, a database may restrict access for medical records to a specific database user, but each record might only be intended to be accessible to the patient and the patient's doctor [REF-7].

Source: MITRE CWE corpus.

Timeline

Published
August 4, 2026
Last Modified
August 4, 2026
First Seen
August 4, 2026

Related Vulnerabilities