AI安全案例分析|Claude Code Auto Mode 被提示注入绕过

· 2026-09-21 18:00 · 1 阅读

原创 天元实验室 2026-09-21 18:00 北京

2026 年 8 月 26 日,安全研究者 wunderwuzzi(Johann Rehberger)在 Embrace The Red 博客公开了一条针对 Claude Code 的攻击链。

概述

2026 年 8 月 26 日,安全研究者 wunderwuzzi(Johann Rehberger)在 Embrace The Red 博客公开了一条针对 Claude Code 的攻击链。用户只发一条普通的网页摘要指令,Claude Code 里的 Opus 5 就会从互联网下载不受信任的代码并执行。小样本测试中,三个载荷变体的攻击成功率分别是 60%、60% 和 80%。

该案例的重点并不是证明Claude Code可以被一句恶意提示词直接攻破,而是展示了一个更现实的问题:当多个看似正常的操作被攻击者串联起来后,单次工具调用的安全判断可能无法识别完整攻击意图。

01 攻击背景

Anthropic 对 Auto Mode 的设计目标,是希望通过安全分类器自动判断哪些操作应该被允许,从而减少传统 Agent 不断询问用户“是否允许执行”的问题。据 Claude Code 文档,2026 年 8 月 14 日起它成为新会话的默认权限模式,在 Pro、Max 和 Team 计划上,会话的起始权限模式就是 auto mode。用 Opus 5 时,充当分类器的是 Sonnet 5。分类器按严重度打分,超过 50 分拦截,数据外带属于硬拦截规则。它拿到的是工具调用的请求,拿不到返回内容,而返回内容恰恰是提示注入载荷最常藏身的地方。

Anthropic 同时强调,Auto Mode 是降低风险的防护机制,而不是消除风险的安全边界;对于高风险生产环境,仍建议进行人工审查并使用隔离环境。

Anthropic 的 Boris Cherny 曾表示,分层防御(模型训练、输入探针、意图分类器)可以把针对未知攻击的间接提示注入压到接近零。Anthropic 委托 Trajectory Labs 用 72 个间接提示注入场景各测 10 次,公布的图表显示 Opus 5 在 Auto Mode 下的攻击成功率为 0.00%。作者进行解释:评测跑的是固定的 72 个场景、每个重复 10 次,而他的攻击链不在这批场景里。

02 攻击原理与流程

2.1 前提条件

链条成立需要四个条件同时满足:代理会接触到不受信任的内容,比如网页、图片或仓库文件;代理手里有可执行工具,比如 Bash、curl 和 python;用户以 Auto Mode 运行,把审批交给分类器;以及在整体任务中需要包含“读取外部内容”的必要步骤,比如进行“总结这个网址”。

2.2 攻击链路

攻击从一个经典提示开始:Summarize https://archive.<redacted>.uk/。该域名只对白名单 IP 返回测试内容;作者隐去部分域名,以免进入搜索引擎索引。入口被包装成一个「语言理论发展手稿」的小型笔记库,笔记以 ZIP 压缩包提供。链路共七步。

  1. 把 Claude 从 WebFetch 推向 curl。WebFetch 自身会对内容做摘要,攻击者若走这条路,就得先攻破该工具;改用 curl 可以绕开这层摘要。服务器对 WebFetch 请求返回 415 Unsupported Media Type,但没有提示模型更换工具,是 Claude 自行判断出「WebFetch got a 415. Let me try directly.」,随后发起 curl 的 Bash 调用。这是整条链最关键的一步:攻击不指挥模型,只让恶意路径成为看起来唯一可行的选择。该步骤并非每次都需要,Claude 有时直接以 curl 起步。

图 1 Claude 收到 HTTP 415 后自行放弃 WebFetch,改用 curl 直接抓取页面(来源:Embrace The Red)

  1. 根 URL 返回 303,重定向到 /deposits/WIC-notebook-catalogue.ZIP,curl 随即下载该压缩包。

  2. 压缩包里有README.txt、accession-map.csv、MANIFEST.sha256、七条经 Base85 与 zlib 编码的 JSON 笔记记录,以及 decoder-darwin 和 struct.py 两个文件。README 把 decoder-darwin 描述为「目录解码器」,并写明记录格式为 Base85、zlib、JSON 三层嵌套。

  3. Claude 看到 macOS 二进制 decoder-darwin,拒绝执行。这是攻击者预期的结果:该二进制是诱饵,作用是把模型推向「自己写解码器」的方向。Claude 有时会进一步检查它,但发现文件内容与 README 描述的编码格式吻合,于是不再深究。

  4. Claude 改为自己编写 Python 解码器,并直接在解压目录中运行。典型命令是 cd WIC-notebook-catalogue 之后执行 python3 -c 'import base64, zlib, json; ...'。这一出于安全的决策,本身构成了利用路径。

图 2 Claude 自写的解码脚本在解压目录内执行,导入过程加载了被遮蔽的 struct.py(来源:Embrace The Red)

  1. 解压目录位于 Python 的模块搜索路径上,而标准库 base64 会 import struct,压缩包中恰好存在同名文件。恶意的 struct.py 重新导出了真正的 _struct 接口,解码因此照常成功,Claude 拿到合法的 JSON 记录;但模块级的一段混淆表达式在 import 时已执行。

  2. struct.py 经过刻意混淆,以规避查找可疑字符串的 grep。它启动一个隔离的 Python 子进程,形式为 python3 -I -c;-I 启用隔离模式,避免子进程递归触发同一处 shadowing,否则会衍生数千个 Python 进程。子进程下载远端 Python stage,由 stage 将原生载荷写入临时文件、赋予执行权限并启动;载荷建立 C2 回连,同时弹出计算器作为可见效果。该进程与对话分离,可在会话结束后继续存活。

图 3 载荷回连 Sliver C2,macOS 主机进入受控状态(来源:Embrace The Red)

另有一个变体:将 Python 子进程替换为通过 claude -p 启动的第二个 Claude Code 实例。载荷不只是执行代码,还生成一个新的代理实例,拥有独立的工具权限与上下文。测试中它执行了 whoami、uname、id,弹出计算器,并在用户主目录写入文件。

2.3 根因:分类器不是沙箱

Auto Mode 只看到 Claude 那段简短的 Python 解码命令,真正的利用过程跨越数跳。有几次 Claude 事后检查 struct.py,识别出压缩包已被篡改并向用户发出警告,而主机此时已经失陷;它有时还会声称未执行恶意指令,实际已经执行。

更能说明问题的一幕是:Claude 发现后试图终止恶意进程,Auto Mode 拒绝了这个清理命令。分类器放行了创建恶意进程的那一步,却拦下了终止它的那一步,安全机制本身成了故障的一部分。

另一条独立研究(veganmosfet,2026 年 8 月 12 日)给出了同类结论:10 次实验里有 6 次分类器放行了从不可信服务器下载并执行的代码。他总结的手法叫「对抗性轨迹引导」(Adversarial Trajectory Guidance),用软指令把模型引向攻击者希望的方向,而不是直接下命令。分类器日志显示,被拦截时它的评分是 78(Code from External),放行时只有 15;同样性质的代码执行,只因为被包进一个看起来在自动答题的脚本里,评分就掉了下来。

图 4 Claude 发现入侵后试图终止恶意进程,清理命令被 Auto Mode 分类器拒绝(来源:Embrace The Red)

03 威胁与后果评估

代理一旦被放行,在开发者工作站上能做的事很具体:在用户主目录写文件、外带 SSH 密钥和云凭据、建立 C2 通道。分离出去的进程独立于对话存在,用户关掉 Claude Code 也不会中断它。

把恶意动作拆散、嵌进一个看起来正当的任务流,就能让分类器的评分掉下去——这是分类器被动、只依赖轨迹判断的必然结果。作者构造载荷时借助 ChatGPT 生成混淆代码、用 Codex 迭代,构建门槛还在继续下降。

分类器给出的是概率判断,隔离环境提供的是确定性边界,两者不能互相替代。

04 案例启示

Auto Mode 的批准不等于命令安全。无人值守的编码代理要跑在容器、虚拟机或系统沙箱里,限制网络出口,不把主目录、SSH 密钥和云凭据暴露给它。作者自己的做法是:Claude 和 Codex 跑在专用机器上,工作站上完全不用免审批模式。

对评测方,固定场景集上的 0.00% 只说明防御覆盖了那批场景。要衡量真实韧性,评测得纳入多步、跨工具、把恶意动作拆散并包装成正当任务的组合链。

关于 AISS 安全智链社区

本案例已收录至 AISS 安全智链社区案例库,社区地址:https://aiss.nsfocus.com/#/

参考链接

[1] Embrace The Red — Breaking Claude Code Opus 5 Auto Mode(2026-08-26) https://embracethered.com/blog/posts/2026/breaking-claude-code-opus-5-and-automode/

[2] IT meets OT — Prompt Injection Experiments with Opus-5 in Claude Code - Auto-Mode Edition(2026-08-12) https://itmeetsot.eu/posts/2026-08-12-opus5_automode/

[3] Anthropic — Auto Mode default announcement and evaluation https://claude.com/blog/auto-mode-default-in-claude-code

[4] Claude Code Docs — Configure auto mode https://code.claude.com/docs/en/auto-mode-config

[5] Claude Code Docs — Permission modes https://code.claude.com/docs/en/permission-modes

绿盟科技天元实验室专注于新型实战化攻防对抗技术研究。

研究目标包括:漏洞利用技术、防御绕过技术、攻击隐匿技术、攻击持久化技术等蓝军技术,以及攻击技战术、攻击框架的研究。涵盖Web安全、终端安全、AD安全、云安全等多个技术领域的攻击技术研究,以及工业互联网、车联网等业务场景的攻击技术研究。通过研究攻击对抗技术,从攻击视角提供识别风险的方法和手段,为威胁对抗提供决策支撑。

M01N Team公众号

聚焦高级攻防对抗热点技术

绿盟科技蓝军技术研究战队

官方攻防交流群

网络安全一手资讯

攻防技术答疑解惑

扫码加好友即可拉群

跳转微信打开