CVE-2026-77604 json
Code Graph RAG: MCP paginated read_file path traversal / arbitrary file read
published 4d ago modified 3h ago also EUVD-2026-117780 , GHSA-vvr2-h2jp-838m
- cvss
- 7.5
- version 3.1, CNA
- cisa kev
- Not listed
- not in CISA's catalog
- epss
- 0.4%
- EPSS 0.4% chance of exploitation in 30 days, percentile 32%
- public exploits
- 0
- none known
Summary
Code Graph RAG is an AI-powered knowledge graph and retrieval system for querying, understanding, and editing multi-language codebases. Prior to 0.0.345, the MCPToolsRegistry.read_file implementation in codebase_rag/mcp/tools.py joins attacker-controlled file_path input to project_root without resolving and verifying containment when offset or limit selects the paginated branch. An absolute path causes pathlib to discard the configured root, while relative traversal can also resolve outside it. The protected non-paginated branch uses validate_project_path, but the paginated branch bypasses that validation before opening the path. An unauthenticated caller of a network-exposed HTTP MCP server can therefore read arbitrary UTF-8-readable files available to the server process, including credentials, environment data, private keys, source, and configuration; local callers through the stdio transport can reach the same vulnerable code path. This issue is fixed in version 0.0.345.
Patch / fix
- pypi code-graph-rag 0.0.345
Is CVE-2026-77604 in your dependencies? Fencer shows which of your repositories are affected as soon as an advisory lands, and opens the fix as a pull request.
Check with FencerCISA SSVC
- Exploitation
- Proof of concept is public
- Automatable
- yes
- Technical impact
- partial
- Assessed
- 3h ago
Exploit prediction
0.38% chance of exploitation in the next 30 days, higher than 32% of all scored CVEs (FIRST EPSS, 2026-11-09).
Exploits and checks
- github.com https://github.com/openemr/openemr/security/advisories/GHSA-5h9g-m7q2-pv45 referenced PoC, tagged "exploit" by a source, unverified
CVSS scores
| assigned by | version | score | vector |
|---|---|---|---|
| CNA | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
| GitHub | 3.1 | 7.5 | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N |
Affected packages
| ecosystem | package | affected | fixed in |
|---|---|---|---|
| pypi | code-graph-rag | <0.0.345 |
0.0.345 |
Affected products
- vitali87 code-graph-rag
Classification
- Weakness
-
- CWE-22 Improper Limitation of a Pathname to a Restricted Directory
References
-
github.com
/vitali87/code-graph-rag/commit/6541e920a27961fa8f3ff49ef38c0e0bd09cd626
web
-
github.com
/openemr/openemr/security/advisories/GHSA-5h9g-m7q2-pv45
exploit
-
github.com
/vitali87/code-graph-rag/security/advisories/GHSA-vvr2-h2jp-838m
web
-
github.com
/vitali87/code-graph-rag/releases/tag/v0.0.345
web
-
nvd.nist.gov
/vuln/detail/CVE-2026-77604
advisory
-
github.com
/vitali87/code-graph-rag
package
Sources
- CVE List CVE-2026-77604
- GitHub Advisory GHSA-vvr2-h2jp-838m
- NVD CVE-2026-77604
Fencer Intel keeps one entry per vulnerability: the CVE id wins, then GHSA, and records that alias each other are merged, except that two CVEs always keep separate entries. The same data is available as JSON.