PT-2026-67928 · Npm · Flowise
Published
2026-08-04
·
Updated
2026-08-04
CVSS v4.0
7.1
High
| Vector | AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N |
summary:
In Flowise,
DELETE /api/v1/chatflows/:id authorizes requests with checkAnyPermission('chatflows:delete,agentflows:delete'). Possession of either permission is sufficient to reach the delete path. The delete logic does not validate the target resource type, allowing a caller with only agentflows:delete to delete a CHATFLOW, and a caller with only chatflows:delete to delete an AGENTFLOW.details:
The delete route accepts either
chatflows:delete or agentflows:delete. The subsequent logic only resolves the target record by id and workspaceId, then deletes by id without checking whether the target resource type matches the granted permission domain.As a result, there is no binding between permission scope and flow type:
agentflows:deletecan be used to deleteCHATFLOWchatflows:deletecan be used to deleteAGENTFLOW
This breaks the intended RBAC separation between Chatflows and Agentflows.
impact:
Users authorized to manage only one flow type can delete the other flow type within the same workspace, resulting in unauthorized deletion and configuration loss.
reproduction steps:
- Log in as a user who can create API keys.
- Create a normal
CHATFLOWand record itsid. - Create an API key with only
agentflows:delete. - Use that API key to send:
bash
curl -i -X DELETE
-H 'Authorization: Bearer <agentflows delete only key>'
http://localhost:8080/api/v1/chatflows/<chatflow id>- Observe a
200 OKresponse, for example:
json
{"raw":[],"affected":1}- Read the same
idagain and observe404 Not Found.
Fix
Incorrect Authorization
Found an issue in the description? Have something to add? Feel free to write us 👾
Weakness Enumeration
Related Identifiers
Affected Products
Flowise