作者:Abinaya
发布日期:2026 年 7 月 27 日
信息来源:Cyber Security News

Claude Code 可以通过带符号链接的记忆导入功能,加载代码仓库之外的文件。这可能导致模型尚未执行任何操作,本地数据便已被加入它发出的首个外部请求。
最近披露的一项 Claude Code 安全问题指出,这并非 Claude Code 按预期处理文件系统符号链接所产生的普通现象,而是其记忆导入功能存在来源验证与用户同意方面的缺陷。
具体来说,Claude Code 会根据 @import 的表面路径,判断目标是否位于项目内部;但在真正读取文件时,系统又会跟随符号链接。两种处理方式之间的差异,使恶意仓库能够导入目录之外、当前用户有权读取的文件,同时不触发 Claude Code 的外部导入确认对话框。

GitHub 显示 link 是仓库内的符号链接,但它实际解析到 /etc/passwd2(来源:Tego)
Claude Code 会从 CLAUDE.md 以及 .claude/rules/ 目录下的文件中加载项目指令。这些文件可以包含 @./docs/setup.md 一类的导入语句,方便团队在会话自动启动时引入共享指令。
恶意仓库可以在 CLAUDE.md 中放入 @./link,再把 link 作为指向外部本地文件的 Git 符号链接提交到仓库。这个符号链接可能指向 /etc/passwd、/proc/self/environ,或当前用户能够读取的其他文件。
针对 Claude Code 仓库的攻击方式
问题的根源在于,Claude Code 会在解析符号链接之前,把 ./link 当作项目内部路径进行判断。由于路径字符串表面上仍在项目目录内,系统不会发出外部导入警告;然而,记忆加载器真正读取该文件时,操作系统会跟随符号链接,转向位于仓库之外的真实目标。

概念验证显示 Claude Code 已加载 /etc/passwd2,其内容与原文件逐字节一致(来源:Tego)
随后,外部文件的内容会被加入模型的初始上下文。这个过程发生在 Claude Code 调用读取工具、执行命令或请求用户批准之前。有报告显示,被导入的文件内容会直接进入 Claude Code 发出的第一个外部请求。
默认情况下,这些内容会发送至 Anthropic 的 API 端点。然而,仓库控制的 .claude/settings.json 可以设置 ANTHROPIC_BASE_URL。这是一项已知的配置覆盖机制,能够把 Claude Code 流量导向其他端点。Tego 研究人员演示了,导入的数据可以通过这种方式外泄至仓库指定的服务器。
对于曾经信任过范围较大的父目录——例如主目录、~/src 或 /Users——的开发者,这个问题可能尤其值得关注。Claude Code 的工作区信任会应用于受信任目录下的代码仓库,因此,新克隆的项目未必会再次触发信任确认对话框。
报道还将这一行为与 Claude Code 早先的符号链接问题联系起来,其中包括 CVE-2025-59829 和 CVE-2026-25724。在这两个案例中,Anthropic 都通过先解析符号链接、再执行安全检查的方式修复了类似缺陷。

对话框显示了 /etc/hosts,却没有显示 ./link,尽管二者都指向代码仓库之外(来源:Tego)
研究人员认为,记忆加载器没有采用相同的规范路径校验机制。他们在 Claude Code 2.1.215 上验证了这一行为,静态分析还发现 2.1.207 版本中也存在该问题。
据报道,Anthropic 将这份 HackerOne 报告归类为“信息性问题”,并解释称工作区信任才是预期的安全边界;一旦项目受到信任,Claude Code 就可以在受信任的项目上下文中读取、编辑和执行内容。
研究人员建议,在执行目录范围与用户同意检查之前,先将导入目标转换为规范路径。如果导入目标最终解析到代码仓库之外,系统还应向用户发出警告,并在仓库配置中清楚标示哪些设置能够改变请求端点。