highAgent ThreatPrivilege Abuse

Flowise RBAC Bypass: Cross-Type Flow Deletion via Unvalidated Resource Type

First seen Aug 4, 2026 · Updated Aug 4, 2026

flowiserbac-bypassbroken-access-controlapi-key-abuseagentflowchatflowprivilege-escalationidorASI08 · Cascading FailuresSurface: Tool LayerPropagation: None

Flowise's DELETE endpoint for chatflows fails to verify that the resource being deleted actually matches the caller's granted permission scope, letting a user or API key with only 'agentflows:delete' permission delete Chatflows (and vice versa). This breaks the intended separation between agent workflow management roles and can result in unauthorized destruction of AI agent configurations within a workspace.

Technical Analysis

The DELETE /api/v1/chatflows/:id route uses checkAnyPermission('chatflows:delete,agentflows:delete'), meaning possession of either scoped permission is sufficient to pass the authorization check. After authorization, the handler resolves the target record solely by id and workspaceId and performs the delete without re-validating that the record's actual type (CHATFLOW vs AGENTFLOW) corresponds to the permission the caller holds. This is a classic confused-deputy / missing object-level authorization flaw (similar to IDOR) that crosses the RBAC boundary between two distinct resource classes managed by the same underlying data model, allowing a narrowly-scoped API key to cause unauthorized deletion and configuration loss outside its intended domain.

Affected Systems

Flowise

Detection Signatures

  • DELETE /api/v1/chatflows/:id requests from API keys or users holding only agentflows:delete or only chatflows:delete permission
  • Unexpected 200 OK with {"affected":1} response on delete of a resource type outside the caller's granted permission
  • Subsequent 404 on previously-existing chatflow/agentflow id after a cross-type delete
  • Audit logs showing deletion events where actor's permission set does not match deleted resource type

Remediation Steps

  1. 1

    Upgrade Flowise

    Update to a patched Flowise release beyond 3.1.2 once available that enforces resource-type validation on delete.

  2. 2

    Validate resource type before deletion

    Modify the delete handler to fetch the record first, check its type field, and confirm the caller's permission matches that specific type before executing the delete.

  3. 3

    Split permission checks per type

    Replace checkAnyPermission with type-specific enforcement (e.g., require chatflows:delete only for CHATFLOW records and agentflows:delete only for AGENTFLOW records) rather than accepting either permission for the shared endpoint.

  4. 4

    Audit API key scopes

    Review existing API keys and roles to identify accounts with only one of the two delete permissions and monitor their recent delete activity for cross-type deletions.

  5. 5

    Add integration tests for RBAC boundaries

    Implement automated tests verifying that scoped permissions cannot act on out-of-scope resource types across all shared endpoints, not just delete.

CVE / Advisory IDs

CVE-2026-69262GHSA-p5w8-m249-4r4v

Industries Most Exposed

TechnologyAI/ML platform providersSaaSEnterprise software development

Sources

Respond to this threat

Pro subscribers get a full AI-generated incident-response playbook for this threat — detection, containment, eradication, and recovery steps — plus an unlimited AI Threat Advisor for questions about your environment.