CVE-2026-70475: Flowise: Missing Authorization on Execution Update Endpoint
In Flowise 3.1.2 and earlier, `PUT /api/v1/executions/:id` has no permission check, while the GET and DELETE routes for executions do. Any authenticated user or API key can change the state and data of executions in their workspace. Upgrade flowise to 3.1.3.
Published Aug 4, 2026 · Analysis Oct 25, 2026
What an attacker can do
In packages/server/src/routes/executions/index.ts, GET / is wrapped in checkAnyPermission('executions:view') and DELETE /:id in checkAnyPermission('executions:delete'). The update route, router.put(['/', '/:id'], executionController.updateExecution), has no such middleware. The only requirement is a valid login or API key.
The reporter's example sends PUT /api/v1/executions/EXECUTION_ID with a low-privilege API key and a body of {"state": "FINISHED", "data": "MANIPULATED"}. The advisory says a low-privileged user can modify the state, data and metadata of any execution in their workspace. That could falsify workflow results or inject data into records that other people or systems rely on. For example, an execution that failed could be marked FINISHED, or its stored output replaced.
The vector rates integrity impact high and confidentiality and availability none. The report was a manual code audit of the main branch (flowise-components 3.1.0) and does not describe a tested exploit chain beyond the request above. The attacker also needs a valid execution ID in the workspace.
Who is affected
The flowise npm package, version 3.1.2 and earlier. Deployments with RBAC and API keys of differing privilege are the ones where the missing check matters. Check the version:
npm ls flowiseflowise
- Ecosystem
- npm
- Affected
- <= 3.1.2
- Fixed in
- 3.1.3
- Check
npm ls flowise
How to fix it
Upgrade flowise to 3.1.3.
npm install -g [email protected]The fix is in pull request 6409. The advisory names no workaround. Until you upgrade, limit API key distribution, and block PUT requests to /api/v1/executions at your reverse proxy if nothing legitimate uses them.
How to tell if you were hit
Check access logs for PUT /api/v1/executions/ calls, especially from API keys that lack executions:view or other execution permissions. Compare execution records with their original runs: an execution whose state moved to FINISHED or whose data changed after completion, or whose updatedDate does not match the run time, may have been tampered with. List API keys and their permission sets and check for keys that were created recently.
Original advisory
From the GitHub Advisory Database (CC BY 4.0).
Flowise Security Audit Report
Date: 2026-03-17 Researcher: Dimpal Jadhav ([email protected]) GitHub: https://github.com/Dimpyj1604 Target: FlowiseAI/Flowise (latest main branch) Version: [email protected]
FINDING 1: Missing Authorization on Execution Update Endpoint
Severity: HIGH (CVSS ~7.5) Type: CWE-862 (Missing Authorization) File: packages/server/src/routes/executions/index.ts:11
Description: The PUT /api/v1/executions/:id endpoint lacks the checkAnyPermission() middleware that protects all other execution endpoints (GET, DELETE). Any authenticated user — regardless of their assigned permissions — can modify any execution record.
Evidence:
// Line 7 - GET has permission check
router.get('/', checkAnyPermission('executions:view'), executionController.getAllExecutions)
// Line 11 - PUT has NO permission check
router.put(['/', '/:id'], executionController.updateExecution) // <-- MISSING checkAnyPermission
// Line 14 - DELETE has permission checkadvisory_1_execution_auth_bypass
router.delete('/:id', checkAnyPermission('executions:delete'), executionController.deleteExecutions)Impact: Privilege escalation. A low-privileged user with any valid API key can modify execution state, data, and metadata of any execution in their workspace. Could be used to manipulate workflow execution results or inject data.
Reproduction:
curl -X PUT https://TARGET/api/v1/executions/EXECUTION_ID \
-H "Authorization: Bearer LOW_PRIV_API_KEY" \
-H "Content-Type: application/json" \
-d '{"state": "FINISHED", "data": "MANIPULATED"}'Credited to Dimpyj1604.
Questions
- Why is CVE-2026-70475 an authorization flaw, not just a missing feature?
The other execution routes require
executions:vieworexecutions:delete. The update route skips the middleware, so a key with no execution permission can still change records.- Does the attacker need to be logged in?
Yes. They need any valid user session or API key. The route checks that the caller is authenticated, and nothing more.
- Does it cross workspaces?
The advisory describes modifying executions in the attacker's own workspace. It does not claim access to other workspaces.
References
Read for this analysis:
How this page is made: the data panel comes from the GitHub Advisory Database, CISA’s KEV catalog, the NVD and FIRST EPSS, and updates twice a day. The analysis is written by an AI model from the sources listed above and checked by automated rules before it is published. Check versions against the vendor's advisory before you act. Methodology
More Flowise vulnerabilities
All Flowise entriesCVE-2026-73483
Flowise NodeVM sandbox escape via puppeteer allowlist - authenticated RCE and arbitrary file read via Chromium
critical9.4Oct 7, 2026CVE-2026-73487
Flowise Prompt Injection to RCE and SSRF via CSV/Airtable Agent Python Validator Bypass
critical9.0Oct 7, 2026CVE-2026-69250
Flowise: Unauthenticated OAuth2 Refresh Enables Non-Blind SSRF and Secret Exfiltration
high8.5Aug 4, 2026CVE-2026-69251
Flowise RCE via TypeORM DataSource
critical9.0Aug 4, 2026CVE-2026-69252
Flowise: Missing authorization on `/api/v1/files` allows low-privileged API keys to list and delete files across workspaces within the same organization
high7.2Aug 4, 2026CVE-2026-69253
Flowise Sandbox Escape to RCE
critical9.0Aug 4, 2026
