GHSA-FM2F-4339-4P2F
Vulnerability from github – Published: 2026-08-04 19:18 – Updated: 2026-08-04 19:18Flowise Security Audit Report
Date: 2026-03-17 Researcher: Dimpal Jadhav (jadhavdimpy@gmail.com) GitHub: https://github.com/Dimpyj1604 Target: FlowiseAI/Flowise (latest main branch) Version: flowise-components@3.1.0
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"}'
{
"affected": [
{
"database_specific": {
"last_known_affected_version_range": "\u003c= 3.1.2"
},
"package": {
"ecosystem": "npm",
"name": "flowise"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "3.1.3"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-70475"
],
"database_specific": {
"cwe_ids": [
"CWE-862"
],
"github_reviewed": true,
"github_reviewed_at": "2026-08-04T19:18:47Z",
"nvd_published_at": null,
"severity": "HIGH"
},
"details": "# Flowise Security Audit Report\n**Date**: 2026-03-17\n**Researcher**: Dimpal Jadhav (jadhavdimpy@gmail.com)\n**GitHub**: https://github.com/Dimpyj1604\n**Target**: FlowiseAI/Flowise (latest main branch)\n**Version**: flowise-components@3.1.0\n\n### FINDING 1: Missing Authorization on Execution Update Endpoint\n**Severity**: HIGH (CVSS ~7.5)\n**Type**: CWE-862 (Missing Authorization)\n**File**: `packages/server/src/routes/executions/index.ts:11`\n\n**Description**: The `PUT /api/v1/executions/:id` endpoint lacks the `checkAnyPermission()` middleware that protects all other execution endpoints (GET, DELETE). Any authenticated user \u2014 regardless of their assigned permissions \u2014 can modify any execution record.\n\n**Evidence**:\n```typescript\n// Line 7 - GET has permission check\nrouter.get(\u0027/\u0027, checkAnyPermission(\u0027executions:view\u0027), executionController.getAllExecutions)\n\n// Line 11 - PUT has NO permission check\nrouter.put([\u0027/\u0027, \u0027/:id\u0027], executionController.updateExecution) // \u003c-- MISSING checkAnyPermission\n\n// Line 14 - DELETE has permission checkadvisory_1_execution_auth_bypass\nrouter.delete(\u0027/:id\u0027, checkAnyPermission(\u0027executions:delete\u0027), executionController.deleteExecutions)\n```\n\n**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.\n\n**Reproduction**:\n```bash\ncurl -X PUT https://TARGET/api/v1/executions/EXECUTION_ID \\\n -H \"Authorization: Bearer LOW_PRIV_API_KEY\" \\\n -H \"Content-Type: application/json\" \\\n -d \u0027{\"state\": \"FINISHED\", \"data\": \"MANIPULATED\"}\u0027\n```",
"id": "GHSA-fm2f-4339-4p2f",
"modified": "2026-08-04T19:18:47Z",
"published": "2026-08-04T19:18:47Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/FlowiseAI/Flowise/security/advisories/GHSA-fm2f-4339-4p2f"
},
{
"type": "WEB",
"url": "https://github.com/FlowiseAI/Flowise/pull/6409"
},
{
"type": "WEB",
"url": "https://github.com/FlowiseAI/Flowise/commit/96a9b23b5a103b362a0ee1368d04636755be1bed"
},
{
"type": "PACKAGE",
"url": "https://github.com/FlowiseAI/Flowise"
},
{
"type": "WEB",
"url": "https://github.com/FlowiseAI/Flowise/releases/tag/flowise@3.1.3"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N",
"type": "CVSS_V4"
}
],
"summary": "Flowise: Missing Authorization on Execution Update Endpoint"
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.