Severity by source
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:H/VA:H/SC:H/SI:H/SA:H/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
Network-reachable API with low-complexity injection needs only low-privileged auth (PR:L, or bypassable), no UI; code escapes the pyodide context to run OS commands, so S:C with full C/I/A impact.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
7DescriptionGitHub Advisory
Flowise is a drag & drop user interface to build a customized large language model flow. Prior to 3.1.0, The CSVAgent allows providing a custom Pandas CSV read code. Due to lack of sanitization, an attacker can provide a command injection payload that will get interpolated and executed by the server. This vulnerability is fixed in 3.1.0.
AnalysisAI
Authenticated remote code execution in FlowiseAI Flowise (and the flowise-components package) prior to 3.1.0 arises from the CSVAgent node, which interpolates a user-supplied 'customReadCSV' Pandas string directly into Python code executed via pyodide. An authenticated attacker (or an unauthenticated one when FLOWISE_USERNAME/FLOWISE_PASSWORD are unset, via the 'x-request-from: internal' header bypass) can inject Python such as 'import os;os.system(...)' to run arbitrary commands on the server. Publicly available exploit code exists (PoC in the GHSA advisory); this is not listed in CISA KEV, and EPSS is modest at 0.62% (70th percentile).
Technical ContextAI
Flowise is a low-code, drag-and-drop builder for LLM/agent workflows built in TypeScript/Node.js. The flaw sits in packages/components CSVAgent.ts (around line 157), where the user-controlled 'customReadCSVFunc' is string-interpolated into a 'code' variable that is then passed to 'pyodide.runPythonAsync(code)'. This is a textbook CWE-94 (Improper Control of Generation of Code / code injection): rather than validating that the input is only a Pandas read expression, the server concatenates attacker text into executable Python, so a payload like 'DataFrame({'foo':['bar!']});import os;os.system('whoami')' is executed. The affected CPEs are cpe:2.3:a:flowiseai:flowise and cpe:2.3:a:flowiseai:flowise-components. Exploitation involves the REST API: POST /api/v1/chatflows to create a flow containing only the CSVAgent node, then POST /api/v1/prediction/[chatflowId] to trigger execution.
RemediationAI
Vendor-released patch: upgrade Flowise and flowise-components to 3.1.0 or later (npm install flowise@3.1.0 / flowise-components@3.1.0), which fixes the CSVAgent interpolation; see the advisory at https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-9wc7-mj3f-74xv. If you cannot patch immediately, set strong FLOWISE_USERNAME and FLOWISE_PASSWORD so the 'x-request-from: internal' header cannot bypass authentication (note this only limits, not eliminates, risk since authenticated users can still exploit it), and avoid deploying or restrict the CSVAgent node in production flows. Additionally place Flowise behind a reverse proxy/VPN or network ACLs so the /api/v1/chatflows and /api/v1/prediction endpoints are not reachable from untrusted networks, and monitor for unexpected chatflow creation or process spawns from the Node.js/pyodide runtime; the trade-off of blocking those endpoints is loss of programmatic flow creation for legitimate automation.
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
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
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
Remote code execution in Flowise before 3.1.3 arises because its Pyodide Python-code validator (validatePythonCodeForDat
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
Arbitrary file read and write in FlowiseAI Flowise (versions 2.2.8 through 3.0.5) lets remote unauthenticated attackers
Authenticated remote code execution in FlowiseAI Flowise prior to 3.1.2 allows any user with a valid session or API key
Same weakness CWE-94 – Code Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-25277
GHSA-9wc7-mj3f-74xv