【漏洞】CVE-2026-39861:Claude Code 沙箱逃逸深度分析
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 的双进程沙箱架构上。漏洞的核心逻辑如下:
- Claude Code 的沙箱进程允许创建符号链接(symlink),且符号链接可以指向工作区(workspace)以外的路径
- Claude Code 在写入文件时,有时由非沙箱进程执行写操作
- 当写入路径本身处于符号链接内部时,非沙箱进程会跟随符号链接,将内容写入链接指向的工作区外目标位置
关键在于:沙箱进程本身无法独立写工作区外,非沙箱进程也无法主动写工作区外,但两者组合起来,形成了一个逃逸通道。
最终效果:可绕过沙箱限制,在系统任意位置写入文件,理论上可进一步实现沙箱外代码执行。
二、技术根因分析
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安全 / 漏洞分析 / 红队攻防
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)