Severity by source
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:H/VI:N/VA:N/SC:N/SI:H/SA:H/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Network-reachable API, PR:L because workspace authentication is required, S:C for cross-workspace boundary violation, A:L for indirect availability impact via OpenAI quota exhaustion.
Primary rating from Vendor (https://github.com/FlowiseAI/Flowise).
CVSS VectorVendor: https://github.com/FlowiseAI/Flowise
Lifecycle Timeline
3DescriptionCVE.org
Summary
These endpoints accept a client-controlled credential parameter. The server loads credentials by id and uses them directly, without checking whether that credential belongs to the caller’s workspace. If an attacker knows another workspace’s credentialId, they can use that workspace’s OpenAI key.
Details
Route permissions (assistants:*) only check feature access. They do not check credential ownership. The controller passes req.query.credential straight to the service. The service does findOneBy({ id: credentialId }), decrypts the credential, and calls OpenAI APIs. There is no workspaceId check in this flow, so this is an IDOR.
Impact
- Cross-workspace unauthorized use of stored OpenAI keys.
- Unauthorized read/modify/delete of victim vector stores and files.
- Direct billing impact on victim OpenAI account.
- Multi-tenant boundary violation with practical exploitability.
Reproduction steps
- Set up two workspaces: A (attacker) and B (victim), each with an OpenAI credential.
- Log in as a user in workspace A (with assistants-related permissions).
- Call
/api/v1/openai-assistants-vector-storeand setcredentialto B’s credential ID. - Example:
GET /api/v1/openai-assistants-vector-store?credential=<B_credentialId>. - If responses/actions are executed using B’s credential context, the issue is confirmed.
AnalysisAI
Cross-workspace IDOR in Flowise's OpenAI Assistants Vector Store API allows authenticated users of one workspace to access, use, and manipulate another workspace's stored OpenAI credentials. Flowise versions up to and including 3.1.2 pass the client-supplied credential query parameter directly to a database lookup (findOneBy({ id: credentialId })) with no ownership check against the caller's workspaceId, violating the multi-tenant isolation guarantee. An attacker with a valid Flowise account and assistants:* permissions can cause direct financial harm to victim workspaces via unauthorized OpenAI API billing and can read, modify, or delete the victim's vector stores and files. No public exploit code or CISA KEV listing is identified at time of analysis.
Technical ContextAI
Flowise (pkg:npm/flowise) is an open-source low-code platform for building LLM-powered applications; it stores third-party API credentials (e.g., OpenAI keys) per workspace and exposes them through an internal credential service. The affected endpoints - including /api/v1/openai-assistants-vector-store - accept a credential query parameter representing a credential record ID. The route middleware enforces assistants:* permission flags, which verify only that the caller has feature access, not resource ownership. The controller then passes req.query.credential to the service unmodified; the service executes findOneBy({ id: credentialId }) against the credential table without a WHERE workspaceId = ? clause, decrypts the returned credential, and forwards it to the OpenAI API. This is a textbook CWE-285 (Improper Authorization) / Insecure Direct Object Reference (IDOR): authorization enforces the verb (can you use assistants features?) but not the noun (does this credential belong to you?). The fix in commit d81483b adds workspaceId propagation from req.user.activeWorkspaceId into every affected service call, scoping all lookups to the caller's workspace.
RemediationAI
Upgrade Flowise to version 3.1.3 or later; the patch is available at the official release tag https://github.com/FlowiseAI/Flowise/releases/tag/flowise@3.1.3 and was introduced via PR #6170 (https://github.com/FlowiseAI/Flowise/pull/6170) and commit d81483b70c997ddf981acc9c49fbd9a02fa345cd. If an immediate upgrade is not possible, restrict the assistants:* permission to only highly-trusted users within each workspace, reducing the pool of accounts that can supply arbitrary credential IDs - note this is a partial mitigation only, as any legitimate assistant user retains the ability to exploit other workspaces. As an additional compensating control, operators can place a reverse proxy or WAF rule that rejects requests where the credential query parameter value does not match a credentialId pattern associated with the authenticated user's workspace, though this requires workspace-to-credential mapping logic external to Flowise. Audit logs should be reviewed for requests to /api/v1/openai-assistants-* endpoints where the credential ID does not belong to the requesting user's workspace.
Same weakness CWE-285 – Improper Authorization
View allSame technique Authentication Bypass
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-52852
GHSA-chm3-vqcf-52rx