Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach exposed CSV/Airtable Agent chatflow
-
DeliveryInject homoglyph Python via prompt/config
-
ExploitBypass ASCII regex validator
-
ExecutionPython NFKC-normalizes dunders
-
PersistEscape Pyodide via js __import__ bridge
-
ImpactexecSync arbitrary OS commands on host
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation completeness
|
| Exploitation Conditions | Exploitation requires a Flowise deployment (<= 3.1.2) that has a CSV Agent or Airtable Agent node configured and reachable, and the attacker must be able to get crafted Python into that node - either by controlling the CSV Agent's customReadCSV node configuration or by manipulating the LLM (prompt injection through the flow's input) so it emits Python containing NFKC-normalizable homoglyph identifiers (e.g. __cl𝐚ss__, __subcl𝐚sses__, __b𝐚se__, __b𝐮iltins__) plus chr()-assembled dict keys for '__import__'. Limiting factors: the vulnerable code paths are the deprecated CSV/Airtable Agent nodes (not present in every deployment), successful attacks depend on reliably steering the LLM or config into the exact homoglyph payload (hence CVSS AC:H), and the host must run Flowise on Node.js where the Pyodide js bridge exposes process.mainModule.require. Whether authentication is actually needed depends on whether the chatflow endpoint is exposed unauthenticated (the vendor vector assumes PR:N). |
| Impact | This regression reopens the RCE paths previously patched as GHSA-3hjv-c53m-58jj (CSV Agent) and GHSA-v38x-c887-992f (Airtable Agent), and the impact is maximal: full host command execution with sandbox escape (CVSS 4.0 9.5, VC/VI/VA:H and subsequent-system SC/SI/SA:H). The vendor vector marks AC:H, PR:N, UI:N, AT:N - network-reachable and unauthenticated in principle, but the AC:H honestly reflects that an attacker must reliably get homoglyph-laden Python to the runPythonAsync call, either by controlling the CSV Agent's customReadCSV node configuration or by steering the LLM (prompt injection) into emitting the crafted code. No EPSS score and no KEV entry were provided, and no explicit POC flag is set, so I cannot claim active exploitation; however, the advisory's step-by-step bypass materially lowers the barrier and this should be treated as a real, high-priority patch item wherever CSV/Airtable Agent nodes are exposed. Note the tension to verify: PR:N assumes a publicly reachable chatflow prediction endpoint - if your Flowise instance requires authentication to invoke flows, effective privilege requirements are higher than the raw vector implies. |
| Exploit ScenarioDerived | An attacker sends a query to a network-exposed Flowise chatflow that uses the CSV or Airtable Agent, using prompt injection (or a poisoned customReadCSV config) to make the generated Python contain homoglyph dunders like __cl𝐚ss__ and __b𝐮iltins__. The validator's ASCII \b regex fails to match, Python NFKC-normalizes the identifiers, and __builtins__['__import__']('js') reaches the Node host bridge, invoking child_process.execSync to run commands as the Flowise process. No public exploit is identified yet, but the advisory provides a full working bypass technique. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 04, 2026
Remote code execution in Flowise before 3.1.3 arises because its Pyodide Python-code validator (validatePythonCodeForDataFrame) can be defeated with Unicode homoglyph identifiers, letting an attacker run arbitrary Python that escapes the Pyodide sandbox and executes OS commands on the Flowise host with the process's privileges. The affected CSV Agent and Airtable Agent nodes gate LLM-generated (and config-supplied) Python through an ASCII word-boundary regex blacklist, which Python's NFKC identifier normalization silently rewrites back into the forbidden dunders. There is no public exploit identified at time of analysis and it is not in CISA KEV, but the GitHub advisory documents a complete, reproducible bypass technique, so weaponization is straightforward; the vendor rates it 9.5 (CVSS 4.0).
RemediationAI
Vendor-released patch: 3.1.3 - upgrade both flowise and flowise-components to 3.1.3 or later (release: https://github.com/FlowiseAI/Flowise/releases/tag/flowise@3.1.3; fix PR https://github.com/FlowiseAI/Flowise/pull/6499 and commit f4e2794f6a576b94578f2fdafbf49c2fb304626c). If you cannot upgrade immediately, the concrete compensating control is to remove or disable the CSV Agent and Airtable Agent nodes (both are flagged DEPRECATING and the fix effectively retires the Airtable Agent) and migrate to the AgentFlow Agent - the trade-off is loss of those specific CSV/Airtable query workflows. Additionally, place the Flowise prediction/chatflow endpoints behind authentication and network restrictions so untrusted users cannot invoke flows that reach pyodide.runPythonAsync, and run the Flowise process as a least-privileged, containerized user so a successful escape yields minimal host access - the trade-off is added operational overhead but it caps blast radius. Do not rely on the ASCII regex validator as a control, since NFKC normalization defeats it.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The vulnerability class is CWE-184 (Incomplete List of Disallowed Inputs): a denylist that fails to account for equivalent encodings. Flowise runs untrusted/LLM-authored Python inside Pyodide (CPython compiled to WebAssembly) embedded in the Node.js host, and gates every pyodide.runPythonAsync call in packages/components/nodes/agents/CSVAgent/CSVAgent.ts (lines 147, 198/209) and AirtableAgent/AirtableAgent.ts (lines 186/197) with a regex blacklist in packages/components/src/pythonCodeValidator.ts. Two behaviors collide: JavaScript regex \b word boundaries are computed only against the ASCII class [A-Za-z0-9_], so a character like U+1D41A (mathematical bold small a) is treated as a non-word character and \b__class__\b never matches __cl𝐚ss__; meanwhile Python 3 (PEP 3131) NFKC-normalizes identifiers at parse time, so __cl𝐚ss__, __subcl𝐚sses__, __b𝐚se__, and __b𝐮iltins__ all resolve to their ASCII dunder equivalents. Dict string keys such as bi['__import__'] aren't normalized but can be assembled with chr() to dodge literal patterns. The classic escape __builtins__['__import__']('js') yields the JS host bridge, and process.mainModule.require('child_process').execSync then runs native commands on the host. The affected CPE is cpe:2.3:a:flowiseai:flowise (npm packages flowise and flowise-components).
Know when Flowise gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
CVSS:4.0/AV:N/AC:H/AT:N/PR:N/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H
Network-reachable but AC:H because a reliable homoglyph payload must be forced through the LLM/config; S:C for Pyodide-to-host escape; full C/I/A on the compromised host.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Flowise is a drag & drop user interface to build a customized large language model flow. Prior to 3.1.3, Flowise validatePythonCodeForDataFrame in packages/components/src/pythonCodeValidator.ts can be bypassed with Unicode homoglyph identifiers, allowing arbitrary Python execution inside Pyodide and full OS command execution on the Flowise host via Pyodide js module interop. The validator gates pyodide.runPythonAsync in packages/components/nodes/agents/CSVAgent/CSVAgent.ts and packages/components/nodes/agents/AirtableAgent/AirtableAgent.ts with an ASCII word-boundary blacklist. JavaScript regex word boundaries are ASCII-only, while Python 3 NFKC-normalizes identifiers at parse time, so homoglyph forms such as __cl𝐚ss__, __subcl𝐚sses__, __b𝐚se__, and __b𝐮iltins__ bypass the blacklist and are parsed as their ASCII equivalents. This issue is fixed in version 3.1.3.
Articles & Coverage 1
Executive ViewAI
Flowise before version 3.1.3 contains a critical remote code execution vulnerability in its CSV Agent and Airtable Agent components, enabling attackers to execute arbitrary operating system commands on affected servers. Organizations running Flowise in production environments face immediate risk of complete infrastructure compromise, including unauthorized data access and lateral network movement. With no vendor patch currently available, urgent access controls and component disablement are required.
No vendor-released patch identified at time of analysis. Interim mitigations: (1) Disable CSV Agent and Airtable Agent nodes entirely if business operations permit; if required, restrict to authenticated internal users only via network segmentation. (2) Deploy Flowise within containerized or virtualized environments to isolate OS command execution scope. (3) Monitor and log all process execution from Flowise to detect exploitation attempts. (4) Implement network segmentation to prevent lateral movement from compromised Flowise instances to sensitive systems. (5) Apply egress filtering to restrict data exfiltration and attacker communication.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
OS command injection occurs when an application passes unsanitized user input directly into system shell commands.
Flowise version 3.0.5 contains a remote code execution vulnerability in the CustomMCP node. The mcpServerConfig paramete
Flowise versions before 3.0.1 allow unauthenticated access to the Custom MCPs feature, which is designed to execute OS c
FlowiseAI Flowise version 2.2.6 contains an arbitrary file upload vulnerability in the /api/v1/attachments endpoint. Una
Arbitrary file read and write in Flowise versions prior to 3.0.8 allows an authenticated attacker with access to the flo
Remote code execution in Flowise before 3.1.2 allows any authenticated user (or API caller with chatflow view/update per
Flowise is a drag & drop user interface to build a customized large language model flow. Rated critical severity (CVSS 9
Authenticated users can upload arbitrary files to Flowise 3.0.7 due to missing validation, enabling persistent storage o
Unrestricted file upload in Flowise LLM workflow builder before 3.0.13 via /api/v1/attachments endpoint allows unauthent
Missing authentication on NVD data endpoint in Flowise before 3.0.13 allows unauthenticated access to internal vulnerabi
Authenticated remote code execution in FlowiseAI Flowise (v3.0.1 up to but not including 3.0.8, and later versions when
Remote code execution in FlowiseAI Flowise before 3.1.3 lets an attacker execute arbitrary OS commands as the Flowise pr
Remote command execution in Flowise <= 3.1.2 lets an authenticated user break out of the vm2/@flowiseai/nodevm JavaScrip
EUVD-2026-52811
GHSA-52fh-8v99-63c2
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB