{"id":"GHSA-q2xp-j85q-883h","kind":"vulnerability","aliases":["GHSA-q2xp-j85q-883h"],"related":[],"title":"Duplicate Advisory: Flowise has unsandboxed remote code execution via Custom MCP","description":"### Duplicate Advisory\nThis advisory has been withdrawn because it is a duplicate of GHSA-6933-jpx5-q87q. This link is maintained to preserve external references.\n\n### Original Description\n\nFlowise before 3.0.6 (affected versions 2.2.7-patch.1 and earlier) contains an unsandboxed remote code execution vulnerability in the Custom MCP feature, which is designed to execute OS commands such as launching local MCP servers. Because Flowise's authentication and authorization model is minimal and lacks role-based access control, and the default installation runs without authentication unless FLOWISE_USERNAME and FLOWISE_PASSWORD are set, an attacker can send a crafted JSON payload with the header 'x-request-from: internal' to the /api/v1/node-load-method/customMCP endpoint to execute arbitrary OS commands, resulting in complete compromise of the platform container or server.","summary":"Flowise's Custom MCP feature launches local processes from user-supplied JSON without sandboxing. A crafted request to the node-load-method endpoint with a special header lets an attacker run arbitrary OS commands on the server or container.","severity":"critical","cvss":9.8,"epss":null,"exploited":false,"exploited_at":null,"products":[{"name":"flowise","fixed":["3.0.6"],"affected":">= 2.2.7-patch.1, < 3.0.6","ecosystem":"npm"}],"ecosystems":["npm"],"tags":["ai-tooling","cwe-78","flowise","mcp","self-hosted"],"not_affected_if":["auth-required","flowise-3.0.6-or-later","not-internet-exposed"],"how_to_check":"- Check the installed version with `npm ls flowise` or the image tag, and compare it to the affected range `>= 2.2.7-patch.1, < 3.0.6`.\n- Check whether `FLOWISE_USERNAME` and `FLOWISE_PASSWORD` are set in the environment; unset means no login is required.\n- Check whether the instance is reachable from the internet.","fix":"- `flowise` moves to `3.0.6` or later.","status":"withdrawn","published_at":"2026-06-26T00:32:05+00:00","first_seen_at":"2026-11-03T17:36:46+00:00","triaged_at":"2026-11-03T17:38:31+00:00","updated_at":"2026-11-03T17:38:31+00:00","category":"ai-tooling","confidence":0.8,"triage":{"at":"2026-11-03T17:38:31Z","model":"claude-haiku-5-5","output":{"fix":"- `flowise` moves to `3.0.6` or later.","reach":"internet","title":"Flowise: Custom MCP feature lets unauthenticated requests run OS commands","impact":"high","summary":"Flowise's Custom MCP feature launches local processes from user-supplied JSON without sandboxing. A crafted request to the node-load-method endpoint with a special header lets an attacker run arbitrary OS commands on the server or container.","audience":"businesses","category":"ai-tooling","nicknames":[],"who_cares":["flowise","self-hosted","ai-tooling","mcp"],"confidence":0.8,"fix_status":"available","needs_auth":"no","worst_case":"Attacker runs arbitrary OS commands on the server or container","analyst_note":"","how_to_check":"- Check the installed version with `npm ls flowise` or the image tag, and compare it to the affected range `>= 2.2.7-patch.1, < 3.0.6`.\n- Check whether `FLOWISE_USERNAME` and `FLOWISE_PASSWORD` are set in the environment; unset means no login is required.\n- Check whether the instance is reachable from the internet.","plain_action":"","needs_analyst":false,"not_affected_if":["flowise-3.0.6-or-later","auth-required","not-internet-exposed"],"who_is_affected":"Teams running self-hosted Flowise at version 2.2.7-patch.1 or earlier, or any 3.x below 3.0.6, are exposed. The default installation has no authentication unless the username and password variables are set, so an internet-reachable instance is the main risk. Instances behind login with the variables set and not exposed publicly carry less risk.","user_interaction":"no","needs_special_setup":"no","severity_if_unknown":"critical"},"cost_usd":0.000746,"input_tokens":4386,"output_tokens":614,"severity_before":"critical"},"analyst_status":null,"analyst_note":null,"search":"'-6933':88C '-78':27B '/api/v1/node-load-method/custommcp':185C '2.2.7':107C '3.0.6':104C '883h':16A,21A 'access':150C 'advisori':2A,75C,77C 'affect':105C 'ai':24B 'ai-tool':23B 'arbitrari':66B,189C 'attack':64B,168C 'authent':139C,158C 'author':141C 'base':149C 'code':7A,115C 'command':68B,129C,191C 'complet':194C 'compromis':195C 'contain':73B,111C,199C 'control':151C 'craft':49B,172C 'custom':10A,35B,120C 'cwe':26B 'default':154C 'descript':101C 'design':125C 'duplic':1A,74C,85C 'earlier':110C 'endpoint':57B,186C 'execut':8A,116C,127C,188C 'extern':98C 'featur':37B,122C 'flowis':3A,28B,33B,102C,137C,160C,163C 'flowise':22A 'ghsa':13A,18A,87C 'ghsa-q2xp-j85q-883h':12A,17A 'header':61B,177C 'host':32B 'instal':155C 'intern':182C 'j85q':15A,20A 'jpx5':90C 'jpx5-q87q':89C 'json':45B,173C 'lack':146C 'launch':38B,132C 'let':62B 'link':93C 'load':55B 'local':39B,133C 'maintain':95C 'mcp':11A,29B,36B,121C,134C 'method':56B 'minim':144C 'model':142C 'node':54B 'node-load-method':53B 'origin':100C 'os':67B,128C,190C 'password':164C 'patch.1':108C 'payload':174C 'platform':198C 'preserv':97C 'process':40B 'q2xp':14A,19A 'q87q':91C 'refer':99C 'remot':6A,114C 'request':50B,180C 'result':192C 'role':148C 'role-bas':147C 'run':65B,156C 'sandbox':47B 'self':31B 'self-host':30B 'send':170C 'server':71B,135C,201C 'set':166C 'special':60B 'suppli':44B 'tool':25B 'unless':159C 'unsandbox':5A,113C 'user':43B 'user-suppli':42B 'usernam':161C 'version':106C 'via':9A 'vulner':117C 'withdrawn':80C 'without':46B,157C 'x':179C 'x-request-from':178C","nicknames":[],"mitigations":[],"who_affected":"Teams running self-hosted Flowise at version 2.2.7-patch.1 or earlier, or any 3.x below 3.0.6, are exposed. The default installation has no authentication unless the username and password variables are set, so an internet-reachable instance is the main risk. Instances behind login with the variables set and not exposed publicly carry less risk.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"businesses","plain_action":null,"pkeys":["flowise"],"ptokens":["flowise"],"labels":["aitooling","critical","cwe78","flowise","mcp","npm","selfhosted"],"campaign_type":null,"first_public_at":"2026-06-26T00:32:05+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","cvss_by":"GitHub","poc_count":0,"sources":[{"source":"ghsa","external_id":"GHSA-q2xp-j85q-883h","url":"https://github.com/advisories/GHSA-q2xp-j85q-883h","severity":"critical","published_at":"2026-06-26T00:32:05+00:00","modified_at":"2026-11-03T17:36:24+00:00","first_seen_at":"2026-11-03T17:36:46+00:00","fetched_at":"2026-11-03T17:36:46+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}