事件经过
AstGrep服务的包含检查使用未解析的词法路径,因此仓库内指向根目录外的符号链接被视为在范围内。MCP结构工具随后跟随该链接以读取或覆盖项目根目录之外的文件,绕过预期的批准门控。
影响分析
能够使受害者分析仓库的攻击者可以植入一个符号链接,代码图谱RAG代理会跟随该链接读取凭据/密钥/环境文件或修改同级源代码——这是代理代码分析工具中的工作区逃逸原语。
攻击途径
AstGrepService枚举project_root下的文件并依赖should_skip_path进行包含检查,但检查在未解析的词法路径上操作。植入分析仓库内的符号链接可以引用配置根目录之外的文件,同时看起来在范围内;structural_search披露其内容,而dry_run=False的structural_replace跟随链接并在没有代理循环批准控制的情况下覆盖可写内容。
受影响系统
code-graph-rag < 0.0.589
缓解措施
升级到code-graph-rag 0.0.589。公告:https://github.com/vitali87/code-graph-rag/security/advisories/GHSA-85gg-2gfq-q95m