Claude Code 的 /copy 命令把响应留在了所有人可读的临时文件里
2026 年 6 月的一则公告显示,Claude Code 的 /copy 命令将会话输出写入一个可预测、所有人可读的 /tmp 路径——这是一个经典的不安全临时文件缺陷,还叠加了一个符号链接覆写问题。已在 2.1.128 中修复。
这是什么?
2026 年 6 月 25 日,一则安全公告(GHSA-4vp2-6q8c-pvq2)描述了 Anthropic 命令行编程代理 Claude Code 中的一个本地安全缺陷。/copy 命令——用于把助手的最新响应复制到剪贴板——会先把该响应写入磁盘上的一个固定路径:/tmp/claude/response.md。该文件以所有人可读(0644)的方式创建,位于一个所有人可进入的目录(0755)中,没有按用户隔离,没有随机文件名,也没有针对符号链接的保护。
其后果是一个经典的多用户主机问题,被搬到了 AI 工具里。在共享主机上,任何其他本地用户都能读取该文件——而助手的响应里经常包含粘贴进会话的密钥、API 密钥、令牌或专有代码。该缺陷已在 2.1.128 版本中修复(2026 年 6 月底发布),影响从 2.1.59 到该补丁之间的所有版本。它由一位外部研究者通过 Anthropic 的协同披露计划报告。
工作原理
这里没有任何新颖的漏洞利用,而这恰恰是要点所在。缺陷在于该功能忽略了两条已有数十年历史的文件处理规则。
行为 /copy 做了什么 为什么不安全
---------------------------- ------------------------- -----------------------------
路径选择 硬编码 /tmp/claude/ 可预测——任何本地用户都知道
response.md 去哪里读取 / 放置
文件权限 0644(所有人可读) 其他用户可读取内容
目录权限 0755(可进入) 其他用户可进入并列目录
符号链接处理 无 会跟随攻击者的符号链接
按 UID 隔离 无 所有人共用同一路径
由此产生两种不同的风险。第一种是信息泄露:由于文件所有人可读,一个无特权的本地用户可以直接读取运行了 /copy 的特权用户的最新响应。第二种是符号链接写入:由于路径静态且可预测,本地用户可以预先创建该目录,并在预期的文件名处放置一个指向磁盘上其他文件的符号链接。当特权进程随后写入响应时,会跟随该链接,用响应文本覆写攻击者选定的目标。两者都需要同一台机器上存在第二个无特权用户,以及一个真正调用该命令的特权用户——因此这是一个本地、多租户问题,而非远程问题。相关弱点类别是熟悉的 CWE-377(不安全的临时文件)、CWE-59(链接跟随)和 CWE-200(信息暴露)。
为什么重要
AI 编程助手的普及速度快于其安全记录的积累速度,人们很容易只关注那些奇异的失效模式——提示注入、工具投毒、沙箱逃逸。这个缺陷是一记有益的提醒:AI 出现之前的安全基本功依然适用,而一个运行在开发者笔记本、持续集成 runner、堡垒主机和共享构建服务器上的 CLI,会继承普通 Unix 工具花了三十年才学会规避的每一个经典本地提权陷阱。
影响范围取决于工具在哪里运行。在单用户笔记本上,实际风险较低。但在共享构建服务器、多用户跳板机,或多个服务身份共存的容器镜像中,一个以明文保存助手响应的所有人可读文件,就是一起随时会发生的凭据泄露——而符号链接变体又把读取问题变成了受限的写入原语。它还与本周期更广泛的 Claude Code 本地暴露发现相互叠加,包括此前一个 Read 工具在 CI 中触及 runner 环境的问题。代理写入的临时文件属于攻击面的一部分,正如审批流程中的符号链接处理一直以来那样。
防御措施
首要的修复是升级;其余则是可推广到你所运行的任何 AI CLI 的卫生习惯。
- 将 Claude Code 升级到 2.1.128 或更高版本。 自动更新的用户已经收到;用
claude --version确认,并在受管安装中固定一个最低版本。 - 把共享主机视为对 AI 工具充满敌意。 优先使用按用户分配的机器或按 UID 划分的沙箱。在多用户系统上,除非你能控制 umask 和目录,否则避免运行会把响应落盘的助手命令。
- 在操作系统层加固临时文件处理。 启用
fs.protected_symlinks=1(现代 Linux 默认开启),使进程无法跟随进入其不拥有的目录的符号链接;通过XDG_RUNTIME_DIR或私有TMPDIR使用按用户的临时目录,而不是共享的/tmp子树。 - 对于工具开发者:以安全方式创建临时文件。 使用
mkstemp类 API(随机文件名、O_EXCL、0600模式),写入按 UID 的目录,绝不使用固定的共享路径。优先在内存中传输到剪贴板,而不是先落盘。 - 扫描你的依赖树。 该缺陷在漏洞数据库中针对
@anthropic-ai/claude-codenpm 包进行跟踪;依赖扫描和 SCA 工具现在会标记受影响的版本,因此应把 AI CLI 包纳入与其他一切相同的流水线。 - 轮换任何可能经过该文件的凭据。 如果在安装了脆弱版本的共享机器上运行过
/copy,请将出现在那些响应中的密钥视为可能已暴露并予以轮换。
状态
| 项目 | 参考 | 日期 | 备注 |
|---|---|---|---|
| 安全公告 | GHSA-4vp2-6q8c-pvq2 | 2026-06-25 | /copy 中的不安全临时文件 + 符号链接写入 |
| CVE 记录 | CVE-2026-46406(NVD) | 2026-06 | CVSS 3.1 6.1(中);CWE-377、CWE-59、CWE-200 |
| 受影响版本 | GitLab Advisory DB | — | 2.1.59 起,至 2.1.128(不含) |
| 修复版本 | Claude Code 2.1.128 | 2026-06-29 | 自动更新已部署;手动更新者需升级 |
这里的教训并不是 AI 编程工具格外不安全——而是它们是运行在真实机器上的软件,当工具学会写代码时,软件安全里那些枯燥的部分并没有停止适用。可预测的临时路径、所有人可读的权限、无保护的符号链接,正是一个成熟的 CLI 无论底层用了什么语言模型都绝不应该发布的缺陷。
Sources
- → https://github.com/anthropics/claude-code/security/advisories/GHSA-4vp2-6q8c-pvq2
- → https://nvd.nist.gov/vuln/detail/CVE-2026-46406
- → https://advisories.gitlab.com/npm/@anthropic-ai/claude-code/CVE-2026-46406/
- → https://pulse.adyog.com/insights/claude-code-28-cves-ai-coding-tools-attack-surface-cve-2026-46406