CVE-2026-70475 Overview
CVE-2026-70475 is a missing authorization vulnerability [CWE-862] in Flowise, a drag-and-drop user interface for building customized large language model (LLM) workflows. The flaw resides in the PUT /api/v1/executions/:id endpoint defined in packages/server/src/routes/executions/index.ts. Prior to version 3.1.3, this route lacks the checkAnyPermission() middleware that protects other execution endpoints. Any authenticated user in a workspace can modify execution state, data, and metadata regardless of their assigned permissions. The issue enables privilege escalation and manipulation of workflow execution results within the affected workspace.
Critical Impact
Authenticated users with minimal privileges can tamper with any execution record in their workspace, corrupting workflow results and escalating effective permissions.
Affected Products
- FlowiseAI Flowise versions prior to 3.1.3
- Component: packages/server/src/routes/executions/index.ts
- Component: packages/server/src/enterprise/rbac/Permissions.ts
Discovery Timeline
- 2026-08-04 - CVE CVE-2026-70475 published to NVD
- 2026-08-04 - Last updated in NVD database
Technical Details for CVE-2026-70475
Vulnerability Analysis
The vulnerability is a broken access control issue in the Flowise executions API. Flowise implements role-based access control (RBAC) through a checkAnyPermission() middleware that gates execution-related routes such as view and delete. The PUT handler responsible for updating executions was registered without this middleware, leaving the endpoint reachable by any authenticated session token. As a result, workspace tenants can overwrite execution state, output data, and metadata for records they should not modify. This breaks the integrity guarantees of the workflow engine and can be used to escalate effective privileges within a shared workspace.
Root Cause
The root cause is a missing authorization check on a single Express route. The RBAC framework defined executions:view and executions:delete permissions but omitted an executions:update permission. Even after adding the permission, the PUT route did not invoke checkAnyPermission(), so the server accepted update requests from any authenticated principal.
Attack Vector
An attacker requires a valid low-privileged account in a Flowise workspace. Using an authenticated HTTP session, the attacker sends a PUT request to /api/v1/executions/:id with a modified JSON body. The server applies the changes without evaluating the caller's role, allowing tampering with any execution in the workspace.
// Security patch in packages/server/src/routes/executions/index.ts
router.get(['/', '/:id'], checkAnyPermission('executions:view'), executionController.getExecutionById)
// PUT
-router.put(['/', '/:id'], executionController.updateExecution)
+router.put(['/', '/:id'], checkAnyPermission('executions:update'), executionController.updateExecution)
// DELETE - single execution or multiple executions
router.delete('/:id', checkAnyPermission('executions:delete'), executionController.deleteExecutions)
Source: FlowiseAI/Flowise commit 96a9b23
The patch also introduces the missing executions:update permission definition:
// packages/server/src/enterprise/rbac/Permissions.ts
const executionsCategory = new PermissionCategory('executions')
executionsCategory.addPermission(new Permission('executions:view', 'View', true, true, true))
+executionsCategory.addPermission(new Permission('executions:update', 'Update', true, true, true))
executionsCategory.addPermission(new Permission('executions:delete', 'Delete', true, true, true))
this.categories.push(executionsCategory)
Source: FlowiseAI/Flowise commit 96a9b23
Detection Methods for CVE-2026-70475
Indicators of Compromise
- Unexpected PUT /api/v1/executions/:id requests originating from low-privileged workspace accounts.
- Execution records whose state, data, or metadata fields change without a corresponding user action in the audit trail.
- HTTP 200 responses to PUT requests from clients that do not have an assigned executions:update role.
Detection Strategies
- Enable Flowise access logging and alert on PUT requests to /api/v1/executions/ from accounts lacking administrative roles.
- Correlate execution update timestamps with the identity of the caller to detect out-of-band modifications.
- Compare running Flowise versions against 3.1.3 to identify vulnerable deployments.
Monitoring Recommendations
- Forward Flowise application logs to a centralized logging platform and retain them for post-incident review.
- Baseline normal execution update volumes per user and alert on deviations.
- Monitor workspace membership changes so that newly added low-privileged accounts are audited for API activity.
How to Mitigate CVE-2026-70475
Immediate Actions Required
- Upgrade Flowise to version 3.1.3 or later, which introduces the executions:update permission and applies checkAnyPermission() to the PUT route.
- Review workspace membership and revoke access for accounts that no longer require it.
- Audit existing execution records for unauthorized modifications made prior to patching.
Patch Information
The fix is delivered in Flowise release 3.1.3 via pull request #6409 and commit 96a9b23. Full disclosure is available in GitHub Security Advisory GHSA-fm2f-4339-4p2f.
Workarounds
- Restrict network access to the Flowise API using an upstream reverse proxy that blocks PUT /api/v1/executions/:id for non-administrator sessions.
- Limit workspace membership to trusted users until the upgrade to 3.1.3 is completed.
- Rotate API keys and session tokens after patching to invalidate any credentials that may have been used for tampering.
# Upgrade Flowise to the patched release
npm install -g flowise@3.1.3
# Or with Docker
docker pull flowiseai/flowise:3.1.3
docker stop flowise && docker rm flowise
docker run -d --name flowise -p 3000:3000 flowiseai/flowise:3.1.3
Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

