Flowise CVE-2026-40933
CRITICALSeverity by source
AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:H/A:H
Any authenticated user (PR:L) can remotely (AV:N) and reliably (AC:L, UI:N) break out of the app to run OS commands, a scope change (S:C) with total C/I/A impact.
Primary rating from GitHub Advisory.
CVSS VectorGitHub Advisory
Lifecycle Timeline
5DescriptionGitHub Advisory
Summary
Due to unsafe serialization of stdio commands in the MCP adapter, an authenticated attacker can add an MCP stdio server with an arbitrary command, achieving command execution.
Details
The vulnerability lies in a bug in the input sanitization from the “Custom MCP” configuration in http://localhost:3000/canvas - where any user can add a new MCP, when doing so - adding a new MCP using stdio, the user can add any command, even though your code have input sanitization checks such as validateCommandInjection and validateArgsForLocalFileAccess, and a list of predefined specific safe commands - these commands, for example "npx" can be combined with code execution arguments ("-c touch /tmp/pwn") that enable direct code execution on the underlying OS.
https://github.com/FlowiseAI/Flowise/blob/d848baeb6bd9737a1e7fc912349c45fbdcc7bb38/packages/components/nodes/tools/MCP/core.ts#L223
https://github.com/FlowiseAI/Flowise/blob/d848baeb6bd9737a1e7fc912349c45fbdcc7bb38/packages/components/nodes/tools/MCP/core.ts#L177
https://github.com/FlowiseAI/Flowise/blob/d848baeb6bd9737a1e7fc912349c45fbdcc7bb38/packages/components/nodes/tools/MCP/core.ts#L269
PoC
Create a new Custom MCP and add an "npx -c" command.
{
"command": "npx",
"args": [
"-c",
"touch /tmp/pwn"
]
}<img width="358" height="628" alt="Screenshot 2026-01-12 at 18 32 37" src="https://github.com/user-attachments/assets/d95c1ae2-23a7-4afe-b586-722003baf50e" />
Impact
This is an authenticated arbitrary command execution due to unsanitized input, even though the input is sanitized, more protections should be added in order to close ways for attackers to execute arbitrary commands.
AnalysisAI
Authenticated remote command execution in FlowiseAI Flowise (npm packages flowise and flowise-components) versions <= 3.0.13 allows any logged-in user to run arbitrary OS commands by configuring a Custom MCP stdio server. The MCP adapter's allow-list of 'safe' binaries (e.g. npx) can be abused with code-execution arguments that bypass the validateCommandInjection and validateArgsForLocalFileAccess sanitizers, yielding total host compromise. Publicly available exploit code exists (SSVC exploitation: poc), though EPSS is low at 0.07%; it is not listed in CISA KEV.
Technical ContextAI
Flowise is a low-code visual builder for LLM/agent workflows. The affected component is its Model Context Protocol (MCP) adapter (packages/components/nodes/tools/MCP/core.ts), which lets users attach 'Custom MCP' servers. A stdio-type MCP server is launched by spawning a local process from a user-supplied command and args array. The root cause is CWE-78 (OS Command Injection): the adapter attempts to constrain risk via input sanitization (validateCommandInjection, validateArgsForLocalFileAccess) plus a predefined list of permitted binaries, but this allow-list approach is unsound because permitted interpreters such as npx accept arguments that themselves execute arbitrary code. The sanitizer blocks shell metacharacter injection but does not model the semantics of the allowed binaries, so 'unsafe serialization of stdio commands' passes attacker-controlled arguments straight to process execution.
RemediationAI
Vendor-released patch: upgrade Flowise and flowise-components to 3.1.0 or later, which is the fixed release per GHSA-c9gw-hvqq-f33r (https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-c9gw-hvqq-f33r). Until upgrading, restrict who can create or edit Custom MCP nodes - limit canvas/tool-configuration access to fully trusted operators only and disable self-service account creation, since exploitation requires an authenticated user. Place Flowise behind strong authentication and network controls (VPN or IP allow-listing) rather than exposing it to the internet, and enforce unique non-default credentials, because the allow-list of 'safe' commands cannot be relied on to prevent execution. Where feasible, run the Flowise process as a low-privilege, sandboxed/containerized user with no outbound egress and read-only mounts to blunt the impact of command execution; the trade-off is that legitimate MCP stdio servers needing broader host or network access may break and must be explicitly re-permitted.
Same weakness CWE-78 – OS Command Injection
View allShare
External POC / Exploit Code
Leaving vuln.today
GHSA-c9gw-hvqq-f33r