Skip to content
Heist/ feed
Back to feed
Medium

RAGFlow < 0.26.3 - Stored Cross-Site Scripting via Agent Pipeline Node Name

Type: advisorySources: OSV

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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-58579
Confirmed fixed CVEs
Not specified
Updated in this feed
3 Nov 2026, 17:25 UTC · Revision 1

Source evidence

RAGFlow < 0.26.3 - Stored Cross-Site Scripting via Agent Pipeline Node Name

core-osv · Original source

Published 2 Jul 2026, 19:38 UTC

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.

osv:CVE-2026-58579
Complete source record
{
  "id": "21daf2920143a80902cc4e97012d86ed0feccbb91ae27fe8fb88c447f7673681",
  "url": "https://osv.dev/vulnerability/CVE-2026-58579",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "RAGFlow < 0.26.3 - Stored Cross-Site Scripting via Agent Pipeline Node Name",
    "summary": "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.",
    "evidence": "osv:CVE-2026-58579",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-58579",
      "aliases": [
        "CVE-2026-58579"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "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"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/infiniflow/ragflow",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "32c5cb16e9bada543542e5941230fd9481d36e7d"
                },
                {
                  "fixed": "572f1ea9f4eba6a60e64f7437dee60aa1c0913f1"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "fixed": "0.26.3"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StandardRange"
                  },
                  {
                    "range": [
                      {
                        "fixed": "32c5cb16e9bada543542e5941230fd9481d36e7d"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v0.26.3"
                  },
                  {
                    "range": [
                      {
                        "fixed": "572f1ea9f4eba6a60e64f7437dee60aa1c0913f1"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "dev-20260701",
            "dev-20260630",
            "v0.26.2",
            "dev-20260626",
            "dev-20260625",
            "dev-20260624",
            "dev-20260623",
            "dev-20260622",
            "v0.26.1",
            "v0.26.0",
            "v0.25.6",
            "v0.25.5",
            "v0.25.4",
            "v0.25.3",
            "v0.25.2",
            "v0.25.1",
            "v0.25.0",
            "v0.24.0",
            "nightly",
            "v0.23.1",
            "v0.23.0",
            "v0.22.1",
            "v0.22.0",
            "v0.21.1",
            "v0.21.0",
            "v0.20.5",
            "v0.20.4",
            "v0.20.3",
            "v0.20.2",
            "v0.20.1",
            "v0.20.0",
            "v0.19.1",
            "v0.19.x",
            "v0.18.0",
            "v0.17.2",
            "v0.17.1",
            "v0.17.0",
            "v0.16.0",
            "v0.15.1",
            "v0.15.0",
            "v0.14.1",
            "v0.14.0",
            "v0.13.0",
            "v0.12.0",
            "v0.11.0",
            "v0.10.0",
            "v0.9.0",
            "v0.8.0",
            "v0.7.0",
            "v0.6.0",
            "v0.5.0",
            "v0.4.0",
            "v0.3.2",
            "v0.3.1",
            "v0.3.0",
            "v0.2.0",
            "v0.1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-58579.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:30.755287015Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/58xxx/CVE-2026-58579.json",
        "https://github.com/infiniflow/ragflow/releases/tag/v0.26.3",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-58579",
        "https://www.vulncheck.com/advisories/ragflow-stored-cross-site-scripting-via-agent-pipeline-node-name",
        "https://github.com/infiniflow/ragflow/pull/16516",
        "https://github.com/infiniflow/ragflow/commit/572f1ea9f4eba6a60e64f7437dee60aa1c0913f1",
        "https://github.com/infiniflow/ragflow",
        "https://github.com/infiniflow/ragflow/issues/16507"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-79"
        ],
        "cna_assigner": "VulnCheck",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/58xxx/CVE-2026-58579.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-58579",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 497811,
  "published_at": "2026-07-02T19:38:51.314+00:00"
}