Skip to main content

RAGFlow CVE-2026-121585

LOW
Improper Authorization (CWE-285)
2026-11-04 cna@vuldb.com
2.1
CVSS 4.0 · Vendor: vuldb
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privilege tenant
  2. Delivery
    Invoke Text-To-SQL retrieval
  3. Exploit
    Manipulate tableName/kbIDs arguments
  4. Execution
    Bypass tenant authorization check
  5. Impact
    Read other tenants' knowledge-base data

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization verification
MITRE ATT&CK

1 technique across 1 tactic: Defense Evasion

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires a valid authenticated low-privilege account on the RAGFlow instance (CVSS PR:L) and that the Text-To-SQL Retrieval feature (the RunSQL / use_sql path) is in use. The attacker then supplies crafted tableName/kbIDs argument values that reference knowledge bases outside their own tenant, defeating the authorization check and enabling cross-tenant read access. Limiting factors that reduce realistic risk: an account is needed (not unauthenticated), the vulnerable retrieval feature must be reachable and in use, impact is read-only disclosure (no integrity/availability effect), and the issue is most consequential only in multi-tenant deployments running affected versions up to 0.27.2/1.0.0-rc2; single-tenant installs have little exposure.

Impact

Multiple signals agree this is a low-urgency issue despite being a genuine security flaw. The CVSS 4.0 base score is only 2.1 with vector AV:N/AC:L/AT:N/PR:L/UI:N and impact limited to VC:L (low confidentiality, no integrity or availability impact), and the vuln.today decision label is 'monitor' - not act_now or emergency. The exploit maturity metric E:P (Proof-of-Concept) is consistent with the public PoC reference (ZSH402/RAGFlow-Cross-Tenant-Read) but indicates no confirmed in-the-wild weaponization. There is no CISA KEV listing and no EPSS score was supplied, so widespread automated exploitation is not evidenced. The real-world concern is contextual rather than severity-driven: this is an authorization bypass (CWE-285) in a multi-tenant RAG product, so in shared/SaaS deployments a low-privilege tenant reading another tenant's knowledge-base data is a meaningful confidentiality breach even though the headline score is low. Net assessment: a real but low-priority issue for most single-tenant installs, elevated to a genuine priority only for multi-tenant deployments. Note a conflict to verify: the description locates the flaw in the Go file internal/engine/infinity/sql.go (RunSQL), yet the supplied fix PR #15124 adds a read-only SQL guard in Python (api/db/services/dialog_service.py) - the exact vulnerable code path should be confirmed with the vendor.

Exploit ScenarioDerived

A registered low-privilege RAGFlow tenant user issues a Text-To-SQL retrieval request and manipulates the tableName/kbIDs arguments so the generated SQL references knowledge bases belonging to other tenants, bypassing the authorization/tenant-isolation check and reading cross-tenant data. The attack is remote over the network with low complexity but requires a valid authenticated account (PR:L). A public PoC reference exists (ZSH402/RAGFlow-Cross-Tenant-Read); it is not verified as working exploit code.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.9).
No patch listed yet

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

Alert me

AnalysisAIv1 – Nov 04, 2026

Cross-tenant read exposure in InfiniFlow RAGFlow (through 0.27.2 and 1.0.0-rc2) lets an authenticated low-privilege user query knowledge bases that belong to other tenants through the Text-To-SQL Retrieval feature. Manipulating the tableName/kbIDs arguments passed to RunSQL in internal/engine/infinity/sql.go defeats the ownership check and returns retrieval data from knowledge bases outside the caller's tenant, with confidentiality-only impact and no integrity or availability effect. A public PoC reference exists (github.com/ZSH402/RAGFlow-Cross-Tenant-Read); it is not verified as working exploit code, there is no CISA KEV listing, and the priority decision is monitor - a genuine but low-urgency flaw whose real exposure is limited to multi-tenant deployments that have the retrieval feature reachable.

RemediationAI

No vendor-tagged fixed release is confirmed: the fix exists as upstream PR https://github.com/infiniflow/ragflow/pull/15124, tracked by issue https://github.com/infiniflow/ragflow/issues/15123, so treat patch status as "upstream fix available (PR/commit); released patched version not independently confirmed" and only deploy a tag after verifying the fix commit is actually contained in it. The PR adds a read-only SQL guard (ensure_read_only_sql in common/sql_guard.py) around the use_sql path in api/db/services/dialog_service.py, rejecting statements outside its allowlist; adopting or cherry-picking that guard is the concrete code-level fix, but the diff also bumps the documented Python version to 3.13, so it needs review before backporting. Until a patched build is verified, reduce exposure by disabling the Text-To-SQL Retrieval feature or restricting it to trusted accounts (removes the attack path, at the cost of losing natural-language table queries), and avoid issuing low-privilege accounts in multi-tenant installs or separate tenants onto distinct RAGFlow instances (removes the boundary the flaw crosses, at the cost of operational overhead). Watch https://vuldb.com/vuln/430429 and https://github.com/ZSH402/RAGFlow-Cross-Tenant-Read for the public exploit material.

Affected ProductsAI

RAGFlow releases up to and including 0.27.2 and 1.0.0-rc2 are affected when the Text-To-SQL Retrieval component is in use against the Infinity engine and the RunSQL path in internal/engine/infinity/sql.go is reachable; because the impact is cross-tenant reads, single-tenant installations have little practical exposure while multi-tenant deployments carry the full risk. Tracking and fix material includes the advisory at https://vuldb.com/vuln/430429, the upstream issue https://github.com/infiniflow/ragflow/issues/15123, the fix pull request https://github.com/infiniflow/ragflow/pull/15124, and a public reproduction repository at https://github.com/ZSH402/RAGFlow-Cross-Tenant-Read. No CPE identifiers were supplied with the record, so inventories must be matched on product name and version range rather than machine-readable CPE strings.

Affects your stack

Find out whether the stacks and servers you run are on an affected version.

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; the affected logic sits in the Text-To-SQL Retrieval component, which converts a natural-language question into SQL executed against the Infinity retrieval backend through RunSQL in internal/engine/infinity/sql.go. The root cause class is CWE-285 (Improper Authorization): the kbIDs/tableName value supplied by the caller is carried into the query without confirming that the referenced knowledge base belongs to the caller's tenant, so the authorization decision rests on unvalidated attacker-controlled input. The upstream code evidence linked from the advisory (PR #15124) introduces a read-only SQL guard - ensure_read_only_sql and ReadOnlySqlViolation in common/sql_guard.py - and wires it into the use_sql path in api/db/services/dialog_service.py so non-read-only statements are rejected and repair paths bail out on violation; that same PR also bumps the documented Python version to 3.13, making it a mixed diff rather than an isolated one-line fix. The exact trigger mechanics beyond the tableName/kbIDs manipulation are not described in the available sources.

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 (vuldb) PRIMARY 2.1 LOW
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N/E:P
vuln.today AI 4.3 MEDIUM

Remote authenticated low-privilege tenant (PR:L) crafts tableName/kbIDs to bypass authorization and read other tenants' data; low confidentiality only, no integrity or availability impact.

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

Primary rating from Vendor (vuldb).

CVSS VectorVendor: vuldb

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
None
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
None
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

A security flaw has been discovered in InfiniFlow RAGFlow up to 0.27.2/1.0.0-rc2. This impacts the function RunSQL of the file internal/engine/infinity/sql.go of the component Text To SQL Retrieval. The manipulation of the argument tableName/kbIDs results in authorization bypass. The attack may be performed from remote. The exploit has been released to the public and may be used for attacks.

Threat Intelligence Overview

Prevalence
Medium
popular open-source RAG engine, moderate self-hosted production adoption
Data Quality
4 sources
Confidence: Medium
NVD CVE.org GitHub VulDB

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 LOW
CISA KEV No
Public POC No
EPSS N/A
Patch available No
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
Low

Priority Score

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

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