Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with valid account or API key
-
DeliveryObtain victim's private agent UUID
-
ExploitSend openai-compatible chat/completions request
-
ExecutionBranch returns before accessible() check
-
ImpactExecute private workflow and read output
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK
1 technique across 1 tactic: Privilege Escalation The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The attacker must (1) hold a valid, authenticated RAGFlow account or API key (PR:L) and (2) know the target's private agent UUID. The malicious request must use the OpenAI-compatible branch ("openai-compatible": true in the body) and be sessionless (no session_id / id present), because that is the code path that returns via completion_openai before UserCanvasService.accessible() executes; the normal sessionless path and the negative-control request without openai-compatible mode are correctly rejected with code 103. No special victim-side configuration is needed since RAGFlow agents default to 'Only me' permission. Limiting factors that reduce realistic risk: authentication is mandatory (no anonymous access), the agent UUID is a non-sequential identifier that is not readily enumerable, and the affected code is only present in versions 0.25.2 through 0.27.2 (fixed in 0.27.3). Demonstrated impact is unauthorized private-workflow execution and output disclosure; retrieval of private data or tool side effects depends on the victim workflow's configured tools and was not demonstrated. |
| Impact | This is a genuine but conditional priority, not an inflated high-CVSS issue. The supplied CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N, base 7.1 High) correctly reflects that exploitation is network-based, low-complexity, requires no user interaction, but DOES require privileges (PR:L) - i.e. the attacker must hold a valid RAGFlow account or API key. No EPSS score and no SSVC exploitation/automatable/technical-impact fields were provided in the input, so probabilistic and decision-framework signals are MISSING and cannot be weighed. The vulnerability is NOT in CISA KEV (no confirmed active exploitation), but a public PoC reference exists (a YouTube video plus detailed step-by-step Burp reproduction against v0.27.2), so the exploitation primitive is well understood and reproducible. The vuln.today decision label is 'this_week', consistent with a confirmed, documented, authenticated authorization bypass rather than an internet-wide unauthenticated emergency. The principal factor dampening real-world risk is the dual requirement of (a) an authenticated account/API key and (b) knowledge of the victim's private agent UUID, which is a non-sequential identifier that is not trivially enumerable - meaning realistic exploitation leans toward insiders or multi-tenant scenarios where UUIDs leak, rather than mass untargeted attack. One data conflict to flag: the package-feed line states 'not yet patched' while the CVE description, the GHSA advisory, and the v0.27.3 release tag all state the fix shipped in 0.27.3 - treat 0.27.3 as the fixed version and the 'not yet patched' metadata as stale. |
| Exploit ScenarioDerived | An authenticated RAGFlow user (user2) who has learned the UUID of another user's private 'Only me' agent sends POST /api/v1/agents/chat/completions with "openai-compatible": true and the victim's agent_id; because the OpenAI-compatible branch invokes completion_openai and returns before UserCanvasService.accessible() runs, the server executes the victim's private workflow and returns its output (HTTP 200) to the attacker, as demonstrated in the public PoC where the control request is correctly rejected but the openai-compatible request returns the private marker 'CROSS_TENANT_POC_7F31C9'. With AV:N/AC:L the request is a single crafted HTTP call requiring no special timing or interaction, only a valid account/API key and the target UUID. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Missing authorization in RAGFlow 0.25.2 through 0.27.2 allows any authenticated user who knows another user's private agent UUID to execute that 'Only me' workflow and read its output by posting to /api/v1/agents/chat/completions with "openai-compatible": true, a branch that returns before the UserCanvasService.accessible() check is reached. The attacker needs a valid account or API key (PR:L) plus the non-sequential agent UUID, and no victim-side configuration change is required because agents default to 'Only me'. Demonstrated impact is unauthorized private-workflow execution and output disclosure; retrieval of private data or side effects from configured tools depends on the victim workflow and was not demonstrated, and a public proof-of-concept walkthrough of the bypass exists, with no confirmed active exploitation reported. Version 0.27.3 contains the fix and this is prioritized for remediation this week.
RemediationAI
Upgrade RAGFlow to version 0.27.3, which is the vendor-released fix per https://github.com/infiniflow/ragflow/releases/tag/v0.27.3; the correction is the patch commit 20180790e1a8c55553a2f3e75718f3d65178ae6d (PR https://github.com/infiniflow/ragflow/pull/19817), which relocates the UserCanvasService.accessible() check to run before the OpenAI-compatible branch returns. Deployments that build from source rather than a release must confirm they contain that commit, since the advisory states the bug was still present on main at commit 15b6668dd8f7. If upgrading is not immediately possible, the effective interim control is to block or reject requests to POST /api/v1/agents/chat/completions that carry an "openai-compatible" body field at the reverse proxy or API gateway, with the trade-off that legitimate OpenAI-compatible client integrations using that endpoint will stop working; alternatively restrict that route to a trusted set of accounts/API keys or disable external agent chat exposure entirely, accepting the same functional loss. Because exploitation requires knowing the victim's private agent UUID, avoiding exposure of agent IDs in logs, shared URLs or client-side code reduces but does not remove exposure, and rotating API keys does not mitigate a valid-account attacker. Full remediation requires the 0.27.3 upgrade.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
RAGFlow is an open-source Retrieval-Augmented Generation engine whose agent canvases are Python/Flask-served REST resources under api/apps/restful_apis/agent_api.py. The flaw is CWE-862 (Missing Authorization): the route agent_chat_completion performs its ownership check with UserCanvasService.accessible(agent_id, tenant_id) only on the normal sessionless path late in the handler. When the request body carries "openai-compatible": true, the handler instead calls completion_openai() (streaming via SSE or a direct jsonify) and returns immediately, so the accessible() check never executes. Underneath, completion_openai reaches the standard completion service, which loads the canvas through UserCanvasService.get_agent_dsl_with_release(agent_id, ...); that helper resolves the canvas with cls.get_by_id(agent_id) by raw ID and ignores its tenant_id argument, so no second tenancy gate catches the mismatch. The result is a cross-user/cross-tenant authorization bypass where the victim workflow's DSL is loaded and executed under the victim's context and the output returned to the caller. The negative control confirms the intended behavior: the same request without openai-compatible mode is rejected with code 103 ('Make sure you have permission to access the agent'). The flaw exists only in the 0.25.2-0.27.2 window; the fix moves the accessible() check ahead of the OpenAI-compatible branch in the upstream commit.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
Authenticated network call with no interaction so AV:N/AC:L/PR:L/UI:N; cross-tenant private output disclosure gives C:H, possible tool side effects give I:L, no availability impact so A:N.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine. From 0.25.2 until 0.27.3, POST /api/v1/agents/chat/completions invokes completion_openai and returns through the openai-compatible branch before UserCanvasService.accessible() checks whether the caller may access the requested agent. An authenticated user who knows another user's private agent UUID can execute that Only me workflow and read its output across the user or tenant boundary; configured tools may also cause side effects, but stronger impacts were not demonstrated. This issue is fixed in version 0.27.3.
Technical POC Analysis
CWE-862 (Missing Authorization) in RAGFlow's agent chat completions route, POST /api/v1/agents/chat/completions.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A missing authorization flaw in RAGFlow versions 0.25.2 through 0.27.2 allows any authenticated user to execute another user's private AI workflow and read its output if they know the workflow's UUID. This exposes potentially sensitive business logic and data embedded in private agents, requiring immediate remediation to prevent internal data leakage and maintain customer trust.
No vendor-released patch identified at time of analysis. Interim mitigations include restricting network access to the RAGFlow API, disabling the openai-compatible endpoint if not needed, and monitoring for unauthorized agent execution attempts.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.
EUVD-2026-114444
NVD
CVE.org
EPSS
GitHub
Exploit-DB