{"history":[{"alert":0,"cve":"CVE-2026-87008","id":23453,"kind":"epss","observed_at":1794500401,"payload":"{\"date\": \"2026-11-12\", \"epss\": 0.00264, \"percentile\": 0.18449}"},{"alert":0,"cve":"CVE-2026-87008","id":20931,"kind":"epss","observed_at":1794327601,"payload":"{\"date\": \"2026-11-10\", \"epss\": 0.00264, \"percentile\": 0.18395}"},{"alert":0,"cve":"CVE-2026-87008","id":18972,"kind":"epss","observed_at":1794306001,"payload":"{\"date\": \"2026-11-09\", \"epss\": 0.00264, \"percentile\": 0.18371}"},{"alert":1,"cve":"CVE-2026-87008","id":18912,"kind":"cna","observed_at":1794306001,"payload":"{\"containers\": {\"adp\": [{\"metrics\": [{\"other\": {\"content\": {\"id\": \"CVE-2026-87008\", \"options\": [{\"Exploitation\": \"poc\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"total\"}], \"role\": \"CISA Coordinator\", \"timestamp\": \"2026-11-05T21:03:34.665618Z\", \"version\": \"2.0.3\"}, \"type\": \"ssvc\"}}], \"providerMetadata\": {\"dateUpdated\": \"2026-11-05T21:03:52.501Z\", \"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\"}, \"references\": [{\"tags\": [\"exploit\"], \"url\": \"https://github.com/vitali87/code-graph-rag/security/advisories/GHSA-85gg-2gfq-q95m\"}], \"title\": \"CISA ADP Vulnrichment\"}], \"cna\": {\"affected\": [{\"product\": \"code-graph-rag\", \"vendor\": \"vitali87\", \"versions\": [{\"status\": \"affected\", \"version\": \"< 0.0.589\"}]}], \"descriptions\": [{\"lang\": \"en\", \"value\": \"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 codebase_rag/tools/ast_grep_service.py enumerates files beneath project_root and relies on should_skip_path in codebase_rag/utils/path_utils.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 structural_search tool follows the link and discloses readable content without an approval gate, while structural_replace with dry_run=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.\"}], \"metrics\": [{\"cvssV3_1\": {\"attackComplexity\": \"LOW\", \"attackVector\": \"LOCAL\", \"availabilityImpact\": \"NONE\", \"baseScore\": 7.1, \"baseSeverity\": \"HIGH\", \"confidentialityImpact\": \"HIGH\", \"integrityImpact\": \"HIGH\", \"privilegesRequired\": \"NONE\", \"scope\": \"UNCHANGED\", \"userInteraction\": \"REQUIRED\", \"vectorString\": \"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N\", \"version\": \"3.1\"}}], \"problemTypes\": [{\"descriptions\": [{\"cweId\": \"CWE-22\", \"description\": \"CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')\", \"lang\": \"en\", \"type\": \"CWE\"}]}, {\"descriptions\": [{\"cweId\": \"CWE-59\", \"description\": \"CWE-59: Improper Link Resolution Before File Access ('Link Following')\", \"lang\": \"en\", \"type\": \"CWE\"}]}], \"providerMetadata\": {\"dateUpdated\": \"2026-11-05T20:13:23.276Z\", \"orgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"shortName\": \"GitHub_M\"}, \"references\": [{\"name\": \"https://github.com/vitali87/code-graph-rag/security/advisories/GHSA-85gg-2gfq-q95m\", \"tags\": [\"x_refsource_CONFIRM\"], \"url\": \"https://github.com/vitali87/code-graph-rag/security/advisories/GHSA-85gg-2gfq-q95m\"}, {\"name\": \"https://github.com/vitali87/code-graph-rag/commit/2648c95aa550ce2d9361a8e75ed669d5f4b451b8\", \"tags\": [\"x_refsource_MISC\"], \"url\": \"https://github.com/vitali87/code-graph-rag/commit/2648c95aa550ce2d9361a8e75ed669d5f4b451b8\"}, {\"name\": \"https://github.com/vitali87/code-graph-rag/releases/tag/v0.0.589\", \"tags\": [\"x_refsource_MISC\"], \"url\": \"https://github.com/vitali87/code-graph-rag/releases/tag/v0.0.589\"}], \"source\": {\"advisory\": \"GHSA-85gg-2gfq-q95m\", \"discovery\": \"UNKNOWN\"}, \"title\": \"Code Graph RAG structural tools follow out-of-root symlinks\"}}, \"cveMetadata\": {\"assignerOrgId\": \"a0819718-46f1-4df5-94e2-005712e83aaa\", \"assignerShortName\": \"GitHub_M\", \"cveId\": \"CVE-2026-87008\", \"datePublished\": \"2026-11-05T20:13:23.276Z\", \"dateReserved\": \"2026-09-08T16:44:23.782Z\", \"dateUpdated\": \"2026-11-05T21:03:52.501Z\", \"state\": \"PUBLISHED\"}, \"dataType\": \"CVE_RECORD\", \"dataVersion\": \"5.2\"}"}],"record":{"affected":[{"product":"code-graph-rag","vendor":"vitali87","versions":[{"status":"affected","version":"< 0.0.589"}]}],"cna":{"containers":{"adp":[{"metrics":[{"other":{"content":{"id":"CVE-2026-87008","options":[{"Exploitation":"poc"},{"Automatable":"no"},{"Technical Impact":"total"}],"role":"CISA Coordinator","timestamp":"2026-11-05T21:03:34.665618Z","version":"2.0.3"},"type":"ssvc"}}],"providerMetadata":{"dateUpdated":"2026-11-05T21:03:52.501Z","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","shortName":"CISA-ADP"},"references":[{"tags":["exploit"],"url":"https://github.com/vitali87/code-graph-rag/security/advisories/GHSA-85gg-2gfq-q95m"}],"title":"CISA ADP Vulnrichment"}],"cna":{"affected":[{"product":"code-graph-rag","vendor":"vitali87","versions":[{"status":"affected","version":"< 0.0.589"}]}],"descriptions":[{"lang":"en","value":"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 codebase_rag/tools/ast_grep_service.py enumerates files beneath project_root and relies on should_skip_path in codebase_rag/utils/path_utils.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 structural_search tool follows the link and discloses readable content without an approval gate, while structural_replace with dry_run=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."}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"LOCAL","availabilityImpact":"NONE","baseScore":7.1,"baseSeverity":"HIGH","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"UNCHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-22","description":"CWE-22: Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')","lang":"en","type":"CWE"}]},{"descriptions":[{"cweId":"CWE-59","description":"CWE-59: Improper Link Resolution Before File Access ('Link Following')","lang":"en","type":"CWE"}]}],"providerMetadata":{"dateUpdated":"2026-11-05T20:13:23.276Z","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","shortName":"GitHub_M"},"references":[{"name":"https://github.com/vitali87/code-graph-rag/security/advisories/GHSA-85gg-2gfq-q95m","tags":["x_refsource_CONFIRM"],"url":"https://github.com/vitali87/code-graph-rag/security/advisories/GHSA-85gg-2gfq-q95m"},{"name":"https://github.com/vitali87/code-graph-rag/commit/2648c95aa550ce2d9361a8e75ed669d5f4b451b8","tags":["x_refsource_MISC"],"url":"https://github.com/vitali87/code-graph-rag/commit/2648c95aa550ce2d9361a8e75ed669d5f4b451b8"},{"name":"https://github.com/vitali87/code-graph-rag/releases/tag/v0.0.589","tags":["x_refsource_MISC"],"url":"https://github.com/vitali87/code-graph-rag/releases/tag/v0.0.589"}],"source":{"advisory":"GHSA-85gg-2gfq-q95m","discovery":"UNKNOWN"},"title":"Code Graph RAG structural tools follow out-of-root symlinks"}},"cveMetadata":{"assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","assignerShortName":"GitHub_M","cveId":"CVE-2026-87008","datePublished":"2026-11-05T20:13:23.276Z","dateReserved":"2026-09-08T16:44:23.782Z","dateUpdated":"2026-11-05T21:03:52.501Z","state":"PUBLISHED"},"dataType":"CVE_RECORD","dataVersion":"5.2"},"cna_checked":1794435601,"cve":"CVE-2026-87008","description":"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 codebase_rag/tools/ast_grep_service.py enumerates files beneath project_root and relies on should_skip_path in codebase_rag/utils/path_utils.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 structural_search tool follows the link and discloses readable content without an approval gate, while structural_replace with dry_run=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.","epss":{"date":"2026-11-12","epss":0.00264,"percentile":0.18449},"epss_checked":1794522003,"first_seen":1794290405,"kev":null,"kev_checked":1794522003,"products":"vitali87 code-graph-rag","references":["https://github.com/vitali87/code-graph-rag/security/advisories/GHSA-85gg-2gfq-q95m","https://github.com/vitali87/code-graph-rag/commit/2648c95aa550ce2d9361a8e75ed669d5f4b451b8","https://github.com/vitali87/code-graph-rag/releases/tag/v0.0.589"],"score":{"attackComplexity":"LOW","attackVector":"LOCAL","availabilityImpact":"NONE","baseScore":7.1,"baseSeverity":"HIGH","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"NONE","provider":"GitHub_M","scope":"UNCHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N","version":"3.1"},"solutions":"","state":"PUBLISHED","title":"Code Graph RAG structural tools follow out-of-root symlinks","updated_at":1794500401,"workarounds":""},"sources":[{"canonical_url":"https://github.com/advisories/GHSA-85gg-2gfq-q95m","id":266,"publisher":"GitHub Advisory Database","title":"Code Graph RAG structural tools follow out-of-root symlinks"}]}
