Skip to main content

RAGFlow CVE-2026-119337

| EUVDEUVD-2026-114444 HIGH
Missing Authorization (CWE-862)
2026-10-30 security-advisories@github.com
7.1
CVSS 3.1 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Authenticate with valid account or API key
  2. Delivery
    Obtain victim's private agent UUID
  3. Exploit
    Send openai-compatible chat/completions request
  4. Execution
    Branch returns before accessible() check
  5. Impact
    Execute 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

ragflow 0.25.2, < 0.27.3

Affected Packages

euvd ragflow fix: 0.27.3

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

Vendor (github) PRIMARY 7.1 HIGH
AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
vuln.today AI 7.1 HIGH

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:H/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
High
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch available
Oct 30, 2026 - 22:03 EUVD
CVE Published
Oct 30, 2026 - 20:17 cve.org
HIGH 7.1

DescriptionCVE.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

Why It Matters

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.

Business Impact: High
Compensating Controls

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

EPSS Score
0.3%
Top 73% exploitable
Prevalence
Low
niche self-hosted open-source RAG engine, limited enterprise production footprint
Data Quality
3 sources
Confidence: Low

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

36
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +36
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy