Skip to main content

RAGFlow EUVDEUVD-2026-41421

| CVE-2026-58579 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-07-02 VulnCheck GHSA-73vg-2j49-cmcr
5.1
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

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

  1. Recon
    Attacker authenticates as workspace member
  2. Delivery
    Craft agent DSL node name with XSS payload
  3. Exploit
    Save agent via update endpoint (normalize_dsl preserves payload verbatim)
  4. Install
    Victim opens dataflow result view for compromised agent
  5. C2
    Victim clicks 'Rerun from current step'
  6. Execute
    Modal renders payload via dangerouslySetInnerHTML with escapeValue:false
  7. Impact
    Steal session token or perform authenticated actions as victim

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK

2 techniques across 2 tactics: Initial Access, Execution

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 hold a valid RAGFlow account with workspace membership and permission to create or edit agent pipelines - unauthenticated exploitation is not possible. The victim must be a member of the same workspace, navigate to the dataflow result view for the compromised agent, and click the 'Rerun from current step' button to trigger the vulnerable modal. Both the dangerouslySetInnerHTML rendering path and the i18next escapeValue:false configuration must be present, which are confirmed defaults in RAGFlow builds before v0.26.3. Exploitation is strictly intra-workspace; users in separate workspaces are not reachable through this vector. The required victim click action (UI:P) is the primary limiting factor for mass exploitation.

Impact

The CVSS 4.0 score of 5.1 (Medium) appropriately reflects the dual constraints of PR:L (authenticated attacker) and UI:P (victim must interact with the modal), which together limit opportunistic mass exploitation. Impact metrics are correctly scoped to the subsequent system (SC:L/SI:L/SA:N), capturing the cross-user trust-boundary nature: the attacker's own session incurs no risk, but peer workspace members' sessions are targetable. A publicly available proof-of-concept (GitHub issue #16507, tagged 'exploit') lowers the attacker skill threshold materially, yet the absence of a CISA KEV listing indicates no confirmed widespread exploitation at time of analysis. Real-world risk is highest in multi-tenant or collaborative RAGFlow deployments where workspace membership is shared among users of differing trust levels. For single-user or tightly access-controlled deployments, risk is substantially reduced by the authenticated prerequisite. No EPSS data was provided in the source intelligence, so probability-based exploitation likelihood cannot be independently quantified here.

Exploit ScenarioDerived

A malicious RAGFlow workspace member crafts an agent pipeline and sets a DSL node name to a JavaScript payload designed to exfiltrate the victim's session token or API key. When a co-worker opens the dataflow result view for that agent and clicks the 'Rerun from current step' button, the confirmation modal renders the node name unsanitized via dangerouslySetInnerHTML, executing the payload in the victim's browser and transmitting their credentials to the attacker. A public proof-of-concept demonstrating this full flow is available at https://github.com/infiniflow/ragflow/issues/16507.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.2% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Jul 02, 2026

Stored XSS in RAGFlow before 0.26.3 enables cross-user JavaScript execution through unsanitized agent pipeline node names rendered in a confirmation modal. An authenticated workspace member injects a payload into a DSL node name via the agent update endpoint; when a different workspace member opens the dataflow result and clicks 'Rerun from current step,' the payload executes in their browser, enabling session token theft and account takeover across the workspace trust boundary. No CISA KEV listing exists, but a public proof-of-concept is available and a vendor patch has been released as v0.26.3.

RemediationAI

Upgrade RAGFlow to version v0.26.3 or later, which resolves the vulnerability via commit 572f1ea9f4eba6a60e64f7437dee60aa1c0913f1 merged through PR #16516 (https://github.com/infiniflow/ragflow/pull/16516); the release is available at https://github.com/infiniflow/ragflow/releases/tag/v0.26.3. If immediate upgrade is not feasible, restrict agent pipeline create and edit permissions to fully trusted workspace members only, since the attack originates exclusively from a user with those privileges - note this limits collaborative pipeline authoring workflows as a trade-off. Completely disabling the agent pipeline feature for untrusted users eliminates the injection vector entirely but removes RAGFlow's core orchestration functionality for those users.

Affected VersionsENISA

ragflow 0 <0.26.3

Affected Packages

euvd ragflow fix: 0.26.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 pipeline orchestration platform by InfiniFlow (CPE: cpe:2.3:a:infiniflow:ragflow:*:*:*:*:*:*:*:*). The root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation - Stored XSS), arising from two compounding failures. On the backend, the agent update endpoint's normalize_dsl function performs only JSON serialization validation and preserves DSL node names verbatim with no HTML encoding. On the frontend, the React-based dataflow-result UI renders those names directly via React's dangerouslySetInnerHTML API, and the i18next internationalization library is configured with escapeValue:false, disabling its default HTML-escaping safety net. The combination eliminates both the server-side and client-side sanitization layers, creating a complete stored XSS sink triggered through the 'Rerun from current step' confirmation modal.

Know when Ragflow gets its next vulnerability

  • 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 (VulnCheck) PRIMARY 5.1 MEDIUM
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N
vuln.today AI 5.4 MEDIUM

Network-delivered stored XSS requires low-privilege authentication (PR:L) and victim interaction (UI:R); scope change (S:C) reflects cross-user session hijack with no availability impact.

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

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

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

Lifecycle Timeline

1
CVSS changed
Jul 02, 2026 - 20:22 NVD
5.4 (MEDIUM) 5.1 (MEDIUM)

DescriptionCVE.org

RAGFlow before 0.26.3 stores an agent pipeline (DSL) node name without sanitization: the agent update endpoint normalizes the submitted DSL via normalize_dsl, which only performs JSON serialization validation and preserves the node name verbatim. The dataflow-result web UI then renders that name into the "Rerun from current step" confirmation modal via dangerouslySetInnerHTML, and the i18next configuration sets escapeValue:false, so the value is inserted into the DOM without HTML encoding. An authenticated workspace user who can create or edit an agent can inject arbitrary JavaScript that executes in the session of another workspace member who opens the dataflow result and clicks rerun, enabling session/token theft and account takeover across the user trust boundary.

Threat Intelligence Overview

EPSS Score
0.2%
Top 92% exploitable
Prevalence
Low
niche open-source RAG orchestration platform, limited enterprise footprint
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High

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 MEDIUM
CISA KEV No
Public POC Yes
EPSS 0.2%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
Poc
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

CVE-2024-12433 CRITICAL POC
9.8 Mar 20

A vulnerability in infiniflow/ragflow versions v0.12.0 allows for remote code execution. Rated critical severity (CVSS 9

CVE-2026-24770 CRITICAL POC
9.8 Jan 27

Path traversal vulnerability in RAGFlow RAG engine version 0.23.1 allows unauthenticated attackers to read arbitrary fil

CVE-2024-12450 CRITICAL POC
9.8 Mar 20

In infiniflow/ragflow versions 0.12.0, the `web_crawl` function in `document_app.py` contains multiple vulnerabilities.

CVE-2025-27135 HIGH POC
8.9 Feb 25

RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine. Rated high severity (CVSS 8.9), this vulnerabilit

CVE-2025-69286 HIGH POC
8.9 Dec 31

RAGFlow versions prior to 0.22.0 generate API keys and beta assistant/agent share tokens with a predictable scheme, lett

CVE-2024-10131 HIGH POC
8.8 Oct 19

The `add_llm` function in `llm_app.py` in infiniflow/ragflow version 0.11.0 contains a remote code execution (RCE) vulne

CVE-2025-68700 HIGH POC
8.6 Dec 31

Remote code execution in RAGFlow versions prior to 0.23.0 allows a low-privileged authenticated user (a normal login acc

CVE-2025-25282 HIGH POC
8.1 Feb 21

RAGFlow is an open-source RAG (Retrieval-Augmented Generation) engine based on deep document understanding. Rated high s

CVE-2024-12779 HIGH POC
7.5 Mar 20

A Server-Side Request Forgery (SSRF) vulnerability exists in infiniflow/ragflow version 0.12.0. Rated high severity (CVS

CVE-2024-53450 HIGH POC
7.5 Dec 09

RAGFlow 0.13.0 suffers from improper access control in document-hooks.ts, allowing unauthorized access to user documents

CVE-2024-12880 MEDIUM POC
6.5 Mar 20

A vulnerability in infiniflow/ragflow version RAGFlow-0.13.0 allows for partial account takeover via insecure data query

CVE-2026-45312 CRITICAL
9.9 May 29

Server-side template injection in RAGFlow 0.24.0 and earlier allows any authenticated user to execute arbitrary operatin

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