CVE-2026-87008: Code Graph RAG structural tools follow out-of-root symlinks

Published Nov 5, 2026
·
Updated

Code Graph RAG is an AI-powered knowledge graph and retrieval system for querying, understanding, and editing multi-language codebases. Prior to 0.0.589, AstGrepService in codebaserag/tools/astgrepservice.py enumerates files beneath projectroot and relies on shouldskippath in codebaserag/utils/pathutils.py to classify them, but the containment check operates on unresolved lexical paths. A symbolic link planted inside an analyzed repository can therefore reference a file outside the configured root while still appearing in scope. The structuralsearch tool follows the link and discloses readable content without an approval gate, while structuralreplace with dryrun=False follows it and overwrites writable content; the MCP path invokes structural replacement without the agent-loop approval control. An attacker who causes a victim to analyze a repository containing such a link can read credentials, keys, environment files, or sibling source and can modify files accessible to the code-graph-rag process. This issue is fixed in version 0.0.589.

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade Code Graph RAG to a version that resolves this vulnerability.

    Fixed in 0.0.589

Event History

Sep 3, 2026
Exploit Published
via GitHub·07:47 AM
Nov 5, 2026
CVE Published
via MITRE·08:13 PM
Data Sourced
via MITRE·08:13 PM
DescriptionSeverityWeakness
Data Sourced
via NVD·09:18 PM
DescriptionSeverityWeakness

Frequently Asked Questions

1

Who is exposed to this issue?

Users running versions prior to 0.0.589 are exposed when they analyze a repository that contains a symbolic link pointing outside the configured project root. The impact is limited to files readable or writable by the code-graph-rag process.

2

What does an attacker need to exploit it?

The attacker needs to cause a victim to analyze a repository containing a planted out-of-root symbolic link. Exploitation also requires user interaction because a victim must analyze that repository.

3

Can this be used to modify files as well as read them?

Yes. structural_search can disclose readable content through the link, and structural_replace with dry_run=False can overwrite writable target files. The MCP path can invoke structural replacement without the agent-loop approval control.

4

What should be done if immediate patching is not possible?

Avoid analyzing untrusted repositories that may contain symbolic links, and ensure the code-graph-rag process cannot read or write sensitive files outside the intended project directory. Upgrading to version 0.0.589 fixes the issue.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203