ZeroHour

CVE-2026-69255

PoC moderate

Authenticated Code Injection to Root RCE in Flowise CSVAgent before 3.1.3

CVSS 4.0
9.2 critical
EPSS
<1%p47
Published
()
Modified
AI analysis

Flowise, an open-source drag-and-drop tool for building LLM workflows, contained a critical Python code injection (CWE-94) in its CSVAgent component in all versions prior to 3.1.3. The agent parsed attacker-controlled CSV content with file.split(',').pop() and interpolated the result directly into a Python code block executed by the Pyodide runtime, bypassing the validatePythonCodeForDataFrame() denylist, which only inspected later LLM-generated code. By injecting a closing quote plus arbitrary Python, an attacker (described in the advisory as authenticated, though the CVSS 4.0 vector scores privileges as not required) could reach Pyodide's JavaScript bridge, load Node.js's child_process module, and run arbitrary operating-system commands as root inside the Flowise container. Anyone running a self-hosted Flowise instance below 3.1.3 that exposes the CSVAgent to users uploading CSV files is affected. The flaw is fixed in version 3.1.3; a technical write-up of the attack chain is public via the GitHub advisory, EPSS is low (0.6%), and there is no evidence of in-the-wild exploitation.

What to do: Upgrade Flowise to version 3.1.3 or later, which validates the injected CSVAgent code block. If immediate upgrade is not possible, restrict access to chatflows using the CSVAgent, avoid exposing Flowise directly to the internet, and require authentication so untrusted users cannot upload CSV input. Review container logs and process history for unexpected child_process/shell activity and consider running Flowise as a non-root user with network egress restrictions.

Affected
flowiseai flowiseall versions prior to 3.1.3 (< 3.1.3)
Estimated exposure
moderatelikely on the order of a few thousand to tens of thousands of self-hosted deployments; exact count unknown — Flowise is a self-hosted open-source project (tens of thousands of GitHub stars, typically deployed via Docker) with no telemetry on active installs, so exposure is inferred from project popularity and the subset of internet-facing or…

Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.

Description

Flowise is a drag & drop user interface to build a customized large language model flow. Prior to 3.1.3, the CSVAgent in packages/components/nodes/agents/CSVAgent/CSVAgent.ts extracted attacker-controlled CSV data with file.split(',').pop() and interpolated it directly into executable Python as base64_string = "${base64String}" before calling Pyodide. The validatePythonCodeForDataFrame() denylist only checked later LLM-generated code and did not validate this initial code block. An authenticated attacker could inject a closing quote followed by Python code, use Pyodide's js bridge to load Node.js child_process, and execute arbitrary operating system commands as root in the Flowise container. This issue is fixed in version 3.1.3.

Vendors
flowiseai
Products
flowise
Weakness
CWE-94
Vector
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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X

In the news

No ingested article mentions this CVE yet.