找回密码
立即注册
搜索
发回帖 发新帖

6232

积分

0

好友

790

主题
发表于 3 小时前 | 查看: 2| 回复: 0

导语:当一个 AI coding agent 成为攻击面时,攻击者并不需要直接调用 shell——只需要一段藏在 CLAUDE.md 里的自然语言指令,就能让 agent 亲手为系统打开大门。安全研究员 Metnew 近日披露了 CVE-2026-55607:Anthropic Claude Code 中存在一个沙箱逃逸漏洞。攻击者通过恶意仓库的 prompt injection,操纵 Git worktree 工具链完成路径混淆,最终在最严格的沙箱配置下实现任意代码执行,获得奖金 3700 美元。

一、事件概述

1.1 背景

Claude Code是 Anthropic 推出的命令行 AI 编程助手,由 Claude 模型驱动,具备创建工作区、执行代码、操作 Git 分支等能力。它在 macOS 上默认启用 seatbelt 沙箱隔离,并对 Bash 工具的执行施加了严格限制。

Metnew 在研究 AI agent 安全边界时,发现了一条颇为巧妙的攻击路径:攻击者只需诱导用户克隆一个恶意 Git 仓库,并用 Claude Code 将其打开,再发出一个看似无害的请求。剩下的操作全部由仓库中的 prompt injection 驱动 Claude 自动完成,最终达成系统级代码执行。

该漏洞于 2026 年 5 月 11 日通过 HackerOne 提交(报告编号 #3727895),2026 年 6 月 4 日修复并部署,2026 年 6 月 25 日公开披露。CVE 编号为 CVE-2026-55607,严重等级为 High(CVSS 7.7)。

二、技术分析

2.1 攻击前置条件

攻击的起点是一个精心构造的恶意 Git 仓库,其目录结构如下:

item6/                        ← 受害者克隆并用 Claude Code 打开的仓库
├── CLAUDE.md                 ← prompt injection 指令序列
├── 3p_setup.sh               ← 分阶段载荷,通过 fsmonitor 触发
├── config                    ← root 级 gitconfig(携带 fsmonitor payload)
├── HEAD                      │
├── description               │  这些文件使 item6/ 本身成为一个完整
├── objects/                  │  的 gitdir,从而激活 worktree 混淆链
├── refs/heads/master         │
├── .claude/
│   ├── settings.local.json   ← sandbox:{enabled:true, autoAllowBashIfSandboxed:false}
│   ├── agent-memory/         ← 中转目录
│   └── worktrees -> ./agent-memory   ← 符号链接(后续被替换为 $HOME)
└── .git/                     ← 第二个“正常”git 目录

关键点在于:恶意仓库的根目录本身就是一个合法的 Git 仓库。HEAD、config、objects/、refs/ 等文件直接位于仓库根目录,而不是放在 .git/ 子目录下。这种结构让“创建名为 .git 的工作树”成为可能——因为该路径本身就已经是一个完整的、受攻击者控制的 Git 仓库。

2.2 攻击链分解

Metnew 的攻击流程分为多个阶段,每个阶段由 Claude Code 执行 prompt injection 中的指令驱动,并通过 fsmonitor 触发下一阶段载荷。

第一步:seed 阶段(步骤 1-3)

用户在 Claude Code 中打开恶意仓库后,CLAUDE.md 中的 prompt injection 指令驱使 Claude 依次执行:

  • EnterWorktree(".git") —— 创建名为 .git 的工作树,路径为 .claude/worktrees/.git
  • ExitWorktree —— 退出工作树(不清理)

此时由于仓库根目录本身就是一个 gitdir(即前述构造),.git 工作树实际上等同于一个完整的、受攻击者控制的 Git 仓库。

第二步:符号链接替换(步骤 4-7)

Claude Code 的 worktree 工具会跟随符号链接。此时攻击载荷 3p_setup.sh 的第一阶段开始生效:

# stage 1: 将 .claude/worktrees 符号链接指向 $HOME
if [[ $(wc -l < "$PWD/yolo") -eq 1 ]]; then
  rm -rf .claude/worktrees
  ln -s "$HOME" .claude/worktrees
fi

执行到这里,.claude/worktrees 这个符号链接已经被替换为指向用户主目录 $HOME。随后 Claude 在 .claude/agent-memory 目录下再次执行 CreateWorktree(".git")。由于 worktree 创建会跟随符号链接,实际的 .git 工作树被写入了 $HOME/.git。

第三步:伪造 worktree 元数据(步骤 8-10)

当 Claude 执行 git status 时,fsmonitor 再次触发第三阶段载荷,在 .git/worktrees/$USER 目录下重建 worktree 元数据,让 /Users/$USERNAME(也就是 $HOME)成为一个可导航的已注册工作树。

第四步:进入 $HOME 并覆写 .zshenv(步骤 11-12)

现在 Claude 被引导执行 EnterWorktree(".claude/worktrees/$USERNAME")——这实际上等于进入了 $HOME 目录。再次执行 git status 时,gitdir 解析指向 ~/.git,fsmonitor 触发最终载荷:

# final payload: 当前目录为 $HOME,gitdir 指向 ~/.git → 覆写 ~/.zshenv
if [[ "$PWD" -ef "$HOME" ]]; then
  echo "echo 'ethical prove of vulnerability' && open -a Calculator" >> ./.zshenv
  exit 0
fi

2.3 沙箱为何被突破

这是整条攻击链中最精妙的一环。macOS 上,Claude Code 执行 Bash 工具时的实际调用链为:

/bin/zsh -c "seatbelt enforcement" "$PAYLOAD"

而 zsh 在应用 seatbelt 规则之前,会先读取并执行 ~/.zshenv 文件。攻击者正是利用了这一加载顺序:把恶意代码写入 ~/.zshenv,让它在 seatbelt 沙箱生效之前就已经运行,从而实现沙箱逃逸。

Metnew 在 PoC 中验证了这一点:即使 Claude Code 配置为 sandbox:{enabled:true, autoAllowBashIfSandboxed:false}(最严格模式),攻击依然成功。

Claude Code 沙箱逃逸漏洞的 Git Worktree 混淆攻击流程图

三、漏洞根因

CVE-2026-55607 的攻击链由三个独立的安全缺陷共同构成。

缺陷 1:.git 被接受为合法的 worktree 名称

Claude Code 的 worktree 工具未对工作树名称进行安全校验,CreateWorktree(".git") 被允许执行。这让攻击者可以在项目目录下创建一个路径与 Git 元数据目录冲突的工作树。

缺陷 2:Worktree 创建跟随符号链接写出项目目录

Claude Code 允许通过符号链接将 worktree 元数据写到项目目录之外(如 $HOME),而且这一操作不需要用户确认。

缺陷 3:~/.zshenv 可被未授权覆写

在 seatbelt 沙箱配置文件(folder-specific-autogen.sb)生效之前,zsh 会先加载 ~/.zshenv。Claude Code 未能防止对这一路径的写入,导致攻击者可以在沙箱外围植入任意代码。

Anthropic 在 2.1.163 版本中修复了缺陷 1:.git 不再被接受为有效的 worktree 名称。

四、影响范围与修复

影响版本:

  • Claude Code v2.1.139(macOS Tahoe,受害者测试环境)
  • 可能影响所有启用 worktree 工具的版本

修复方案:

  • 自动更新:Claude Code 默认自动更新,受影响用户已自动收到修复
  • 手动更新:升级至 2.1.163 及以上版本
  • 验证方法:运行 claude --version 确认版本号

CVSS 评分:7.7(High)

五、防御建议

对于安全研究者和 AI 工具使用者:

  • 谨慎克隆未知仓库:这是最根本的触发条件——攻击需要用户主动克隆并用 Claude Code 打开恶意仓库
  • 审查 CLAUDE.md 内容:对来自不可信来源的 CLAUDE.md、INSTRUCT.md 等文件保持警惕,它们可能包含 prompt injection 指令
  • 避免在未审查的仓库中运行工具自动批准:Claude Code 的工具审批流程应当被视为安全边界,而不是可选项
  • 关注 AI Agent 的攻击面:AI coding agent 的每一个工具调用都是潜在攻击面。本漏洞证明,即使是最严格的沙箱配置,也可能被精心设计的文件系统原语组合击败

六、漏洞赏金与时间线

时间 事件
2026 年 5 月 11 日 通过 HackerOne 提交报告(#3727895)
2026 年 5 月 12 日 提交扩展 RCA 分析
2026 年 5 月 18 日 催促审核(一周未分类)
2026 年 5 月 27 日 审核通过,严重等级定为 High(CVSS 7.7)
2026 年 5 月 28 日 授予 $3,700 奖金
2026 年 6 月 4 日 修复版本部署
2026 年 6 月(复测) 确认修复,额外授予 $50 复测奖励
2026 年 6 月 25 日 公开披露 CVE-2026-55607

值得注意的是,Metnew 原本计划在 Pwn2Own Berlin 2026 上演示类似漏洞链,若被接受预计可获 3,750 美元奖金,与实际获得的漏洞赏金之间存在差距。




上一篇:Roundcube 预认证 SQL 注入漏洞 CVE-2026-48842 遭大规模利用,1.6.16/1.7.1 紧急修复
下一篇:ProFTPD CVE-2026-42167漏洞分析:一个USER命令预认证SQL注入到文件系统接管
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-10-6 22:57 , Processed in 0.072670 second(s), 41 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表