CVE-2026-39861:Claude Code 沙箱逃逸深度分析

CVE ID:CVE-2026-39861
GHSA:GHSA-vp62-r36r-9xqp
严重程度:高危(High)
CWE:CWE-20(输入验证不当)/ CWE-377(不安全的临时文件)
影响版本:Claude Code(@anthropic-ai/claude-code)< 2.1.64
修复版本:≥ 2.1.64
漏洞类型:沙箱逃逸(Sandbox Escape)
披露时间:2026-04-21
报告者:philts(HackerOne)
利用门槛:中等,需通过提示词注入触发沙箱命令执行


一、漏洞概述

Claude Code 是 Anthropic 官方推出的 AI 编程工具,通过自然语言对话帮助开发者完成代码编写、调试、Git 操作等任务。

本次漏洞出在 Claude Code 的双进程沙箱架构上。漏洞的核心逻辑如下:

  1. Claude Code 的沙箱进程允许创建符号链接(symlink),且符号链接可以指向工作区(workspace)以外的路径
  2. Claude Code 在写入文件时,有时由非沙箱进程执行写操作
  3. 当写入路径本身处于符号链接内部时,非沙箱进程会跟随符号链接,将内容写入链接指向的工作区外目标位置

关键在于:沙箱进程本身无法独立写工作区外,非沙箱进程也无法主动写工作区外,但两者组合起来,形成了一个逃逸通道。

最终效果:可绕过沙箱限制,在系统任意位置写入文件,理论上可进一步实现沙箱外代码执行。


二、技术根因分析

2.1 Claude Code 的双进程架构

Claude Code 采用了典型的双进程隔离模型

┌─────────────────────────────────────────────────┐
│           Claude Code 主进程(unsandboxed)       │
│  · 执行文件写入(write operations)               │
│  · 执行 git commit / git push 等高权限操作        │
│  · 与 Claude API 通信                            │
└──────────────────────┬──────────────────────────┘
                       │ 通过沙箱工具接口调用
┌──────────────────────▼──────────────────────────┐
│          Claude Code 沙箱进程(sandboxed)        │
│  · 执行用户触发的 shell 命令                      │
│  · 理论上限制在工作区目录内运行                   │
│  · 调用 /bin/sh -c 执行用户命令                  │
└─────────────────────────────────────────────────┘

设计假设:沙箱进程只能接触工作区内容,因此即使执行任意命令也不会影响系统安全。

2.2 漏洞触发路径

问题出在两个安全假设被组合绕过:

第一步:沙箱内创建外部符号链接

沙箱进程允许执行以下命令:

ln -s /etc/passwd /workspace/evil_link

沙箱进程自身无法直接读取 /etc/passwd(因为路径在工作区外),但通过符号链接,它创造了一个"入口"。

第二步:非沙箱进程跟随符号链接写入

Claude Code 随后执行一个正常的写操作,比如保存文件:

# 假设这是 Claude Code 非沙箱进程执行的写操作
echo "malicious content" > /workspace/evil_link

由于 /workspace/evil_link 是指向 /etc/passwd 的符号链接,非沙箱进程会忠实跟随链接,将内容写入 /etc/passwd。

结果:沙箱进程的"受限命令" + 非沙箱进程的"跟随链接写入",组合出了完整的工作区外写入能力。

2.3 提示词注入是触发前提

漏洞利用需要将不可信内容注入 Claude Code 的上下文窗口,诱导 Claude Code 执行沙箱命令。这是经典的提示词注入(Prompt Injection)攻击链:

攻击者 → 发送包含恶意指令的代码/PR/文档 →
Claude Code 解析上下文 →
触发沙箱命令执行(ln -s /etc/passwd /workspace/link)→
非沙箱进程跟随写入 /etc/passwd →
沙箱逃逸

三、漏洞危害评估

3.1 利用条件

条件 说明
Claude Code 版本 < 2.1.64
用户交互 需要用户将不可信内容交给 Claude Code 处理
利用复杂度 中等,需提示词注入 + 沙箱命令组合

3.2 危害场景

① 任意文件写入(确定可达)
覆盖系统配置文件(/etc/passwd、~/.ssh/authorized_keys);修改 .bashrc、.profile 等启动脚本,实现持久化;覆盖应用配置文件改变程序行为。

② 沙箱外代码执行(理论可达)

  • 写入 SSH authorized_keys → 攻击者获得 SSH 访问
  • 写入 crontab → 定时任务执行任意命令
  • 写入 .bashrc → 下次登录时触发

四、修复方案

4.1 升级(最简方案)

# 检查当前版本
claude --version

# 更新到最新版本
npm update -g @anthropic-ai/claude-code

自动更新用户已收到修复推送,手动安装用户需更新至 ≥ 2.1.64

4.2 安全使用建议

  • 避免将来源不明的代码、PR、文档直接交给 Claude Code 处理
  • 对外部输入内容保持警惕,尤其是来自不受信任来源的代码片段
  • 在 Claude Code 工作目录下避免以 root 权限运行
  • 限制 Claude Code 对敏感目录的访问权限

五、相关漏洞对比

CVE 产品 漏洞类型 相似点
CVE-2026-39861 Claude Code 沙箱逃逸(符号链接) 双进程架构组合攻击
CVE-2026-35570 AI SDK BashTool 沙箱绕过(权限逻辑) 沙箱约束被绕过
CVE-2026-33032 nginx-ui 认证绕过 MCP 接口路径不一致

六、总结

项目 详情
漏洞本质 沙箱进程创建的符号链接 + 非沙箱进程的链接跟随写入,组合绕过沙箱边界
严重程度 高危,可导致任意文件写入和沙箱外代码执行
影响版本 Claude Code < 2.1.64
利用前提 提示词注入,需用户将不可信内容交给 Claude Code
修复方式 升级到 ≥ 2.1.64
报告来源 HackerOne(philts)

安全启示:双进程/多进程沙箱模型中,各进程的安全假设需要作为整体来验证。仅确保沙箱进程不出边界是不够的——非沙箱进程同样不能盲目跟随沙箱进程创建的路径引用。这类组合攻击是沙箱逃逸的经典手法,未来在 AI Agent 工具链中可能会出现更多类似案例。

标签:Claude Code、CVE、沙箱逃逸、符号链接、提示词注入、AI安全
分类:AI安全 / 漏洞分析 / 红队攻防

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐