<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Auto Mode on Kalend's Blog</title><link>https://blog.kalend.top/tags/auto-mode/</link><description>Recent content in Auto Mode on Kalend's Blog</description><generator>Hugo -- gohugo.io</generator><language>zh</language><lastBuildDate>Sat, 12 Sep 2026 08:30:00 +0800</lastBuildDate><atom:link href="https://blog.kalend.top/tags/auto-mode/index.xml" rel="self" type="application/rss+xml"/><item><title>Anthropic说攻击成功率0%，安全研究员实测打到80%：Claude Code Auto Mode被攻破</title><link>https://blog.kalend.top/2026/09/12/2026-09-12-claude-code-auto-mode-attack.html/</link><pubDate>Sat, 12 Sep 2026 08:30:00 +0800</pubDate><guid>https://blog.kalend.top/2026/09/12/2026-09-12-claude-code-auto-mode-attack.html/</guid><description>&lt;p&gt;Anthropic 说 Claude Code 的 Auto Mode 攻击成功率是 0.00%。&lt;/p&gt;
&lt;p&gt;安全研究员用 5 步攻击链打出了 80%。&lt;/p&gt;
&lt;p&gt;两个数字都是真的。&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;&lt;strong&gt;为什么值得关注：&lt;/strong&gt; 8 月中旬，Auto Mode 已成为 Claude Code 的默认模式。如果你正在用 Coding Agent，这篇直接关系到你的开发环境安全。&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;h2 id="先说结论"&gt;先说结论
&lt;/h2&gt;&lt;p&gt;Auto Mode 是便利功能，不是安全边界。Anthropic 自己也承认：「Auto Mode 是 best-effort classifier，不是安全保证。」但官方宣传的 0.00% 攻击成功率，容易让人误以为可以放心开箱即用。&lt;/p&gt;
&lt;p&gt;真正的安全，靠的是&lt;strong&gt;沙箱隔离 + 网络出站控制 + 监控&lt;/strong&gt;，不是模型的安全分类器。&lt;/p&gt;
&lt;h2 id="0-和-80两个数字为什么都是真的"&gt;0% 和 80%：两个数字为什么都是真的
&lt;/h2&gt;&lt;p&gt;Anthropic 委托第三方 Trajectory Labs 做安全评估，测试了 72 个间接提示注入场景，每个跑 10 次，得出 &lt;strong&gt;0.00%&lt;/strong&gt; 攻击成功率。&lt;/p&gt;
&lt;p&gt;安全研究员 wunderwuzzi 拿定向攻击链实测，成功率达到 &lt;strong&gt;60%-80%&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;原因很简单：&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;th style="padding:10px 12px;background:#4a90d9;color:#fff;text-align:left;"&gt;维度&lt;/th&gt;
&lt;th style="padding:10px 12px;background:#4a90d9;color:#fff;text-align:left;"&gt;Anthropic 评估&lt;/th&gt;
&lt;th style="padding:10px 12px;background:#4a90d9;color:#fff;text-align:left;"&gt;安全研究员实测&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;"&gt;测试场景&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;72 个预定义场景&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;定向设计的攻击链&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;"&gt;攻击策略&lt;/td&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;"&gt;固定注入模式&lt;/td&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;"&gt;多步拼接，每步看似合理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;"&gt;核心手法&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;直接提示注入&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;Python 模块遮蔽（module shadowing）&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;font-weight:bold;"&gt;成功率&lt;/td&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;font-weight:bold;"&gt;0.00%&lt;/td&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;font-weight:bold;color:#d32f2f;"&gt;60%-80%&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;Anthropic 事后回应：「定向攻击链不在评估范围内。」&lt;/p&gt;
&lt;p&gt;但问题是——Claude Code 团队负责人 Boris Cherny 之前公开说过：「间接提示注入在实际中基本已解决，我们无法再复现注入攻击。」&lt;/p&gt;
&lt;p&gt;这两个说法放在一起，普通用户很难不产生误解。&lt;/p&gt;
&lt;h2 id="攻击链拆解5-步拿下机器"&gt;攻击链拆解：5 步拿下机器
&lt;/h2&gt;&lt;p&gt;整个攻击的核心思路：&lt;strong&gt;不直接注入恶意指令，而是引导模型一步步走进陷阱，每步都看起来合理。&lt;/strong&gt;&lt;/p&gt;
&lt;h3 id="step-1让模型离开安全工具"&gt;Step 1：让模型离开安全工具
&lt;/h3&gt;&lt;p&gt;Claude Code 默认用 WebFetch 工具抓取网页。攻击者设置服务器返回 &lt;code&gt;415 Unsupported Media Type&lt;/code&gt;，WebFetch 失败后，模型自己决定用 curl 重试。&lt;/p&gt;
&lt;p&gt;关键：攻击者没有直接说「用 curl」，是模型自己选的。这就是定向攻击的精髓——&lt;strong&gt;不告诉模型怎么做，只让危险路径成为最优解&lt;/strong&gt;。&lt;/p&gt;
&lt;h3 id="step-2引导下载恶意压缩包"&gt;Step 2：引导下载恶意压缩包
&lt;/h3&gt;&lt;p&gt;curl 访问后被 303 重定向到一个 ZIP 文件。压缩包里有：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;看似正常的文档档案（README、CSV、SHA256 校验文件）&lt;/li&gt;
&lt;li&gt;7 个 Base85+zlib 编码的 JSON 记录&lt;/li&gt;
&lt;li&gt;一个 macOS 二进制解码器（decoder-darwin）&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;struct.py&lt;/strong&gt;（真正的恶意文件）&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id="step-3模型的安全决定反而是漏洞"&gt;Step 3：模型的「安全决定」反而是漏洞
&lt;/h3&gt;&lt;p&gt;Claude 看到 macOS 二进制解码器，拒绝执行——这是安全行为。&lt;/p&gt;
&lt;p&gt;但它接着做了件事：&lt;strong&gt;自己写了一个 Python 解码器来替代&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;讽刺的地方来了：模型不信任攻击者提供的二进制，却信任自己写的代码。而自己写的代码，跑在攻击者控制的目录里。&lt;/p&gt;
&lt;h3 id="step-4python-模块遮蔽经典攻击手法"&gt;Step 4：Python 模块遮蔽——经典攻击手法
&lt;/h3&gt;&lt;p&gt;这是整条链的核心技术。Python 的模块搜索路径包含当前目录。当 Claude 执行 &lt;code&gt;import base64&lt;/code&gt; 时：&lt;/p&gt;
&lt;table&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;width:50%;"&gt;base64 模块内部 import struct&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;→ Python 找到攻击者的 struct.py&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;"&gt;攻击者的 struct.py 重新导出标准 _struct API&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;→ 解码正常运行，Claude 收到正确的 JSON&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;"&gt;但 import 过程中，模块级表达式已经执行&lt;/td&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;color:#d32f2f;font-weight:bold;"&gt;→ 恶意代码在后台静默运行&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;p&gt;&lt;strong&gt;类比：&lt;/strong&gt; 你请了一个翻译帮忙读外文信件，翻译很尽职，逐字翻译。但信纸里夹了一张复写纸，翻译每翻一页，背面就多印一份到攻击者手里。翻译本身没问题，信纸被动了手脚。&lt;/p&gt;
&lt;h3 id="step-5远程载荷落地--c2-回连"&gt;Step 5：远程载荷落地 + C2 回连
&lt;/h3&gt;&lt;p&gt;struct.py 经过深度混淆，启动一个独立 Python 子进程，用 &lt;code&gt;python3 -I&lt;/code&gt;（隔离模式，防止递归中毒）下载远程载荷并执行。&lt;/p&gt;
&lt;p&gt;最终效果：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;弹出 Calculator（可见效果）&lt;/li&gt;
&lt;li&gt;建立 C2 回连（真正危险）&lt;/li&gt;
&lt;li&gt;进程可脱离 Claude 会话独立存活&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Auto Mode 的安全分类器只看到 Claude 短暂运行了一个 Python 解码器。实际攻击已经经过了好几跳。&lt;/p&gt;
&lt;h2 id="最讽刺的一幕auto-mode-阻止了善后"&gt;最讽刺的一幕：Auto Mode 阻止了善后
&lt;/h2&gt;&lt;p&gt;研究员观察到一个荒诞现象：Claude 在某些运行中后来发现 struct.py 有问题，试图终止恶意进程——&lt;strong&gt;但 Auto Mode 的安全分类器拒绝了清理命令&lt;/strong&gt;。&lt;/p&gt;
&lt;p&gt;安全机制允许了恶意进程的创建，却阻止了杀死它的操作。&lt;/p&gt;
&lt;p&gt;这像什么？门禁系统帮你把小偷放进来，然后在你追小偷的时候把你拦住了。&lt;/p&gt;
&lt;h2 id="另一个变体claude-嵌套启动-claude"&gt;另一个变体：Claude 嵌套启动 Claude
&lt;/h2&gt;&lt;p&gt;研究员还测试了另一种载荷：struct.py 不直接执行恶意代码，而是启动一个 headless Claude Code 实例（&lt;code&gt;claude -p&lt;/code&gt;）。&lt;/p&gt;
&lt;p&gt;新的子 Agent 拥有自己的工具访问权限和上下文，独立执行侦察命令（whoami、uname、id），打开 Calculator，往用户目录写文件。&lt;/p&gt;
&lt;p&gt;这个变体的成功率也很高（60%），而且更隐蔽——因为看起来是「Claude 在正常使用」。&lt;/p&gt;
&lt;h2 id="为什么-auto-mode-挡不住"&gt;为什么 Auto Mode 挡不住
&lt;/h2&gt;&lt;p&gt;Auto Mode 的安全分类器本质上是一个 best-effort 的意图判断器。它的设计思路是：&lt;strong&gt;判断每条命令是否有风险，有风险就要求人工确认。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;这个模型对付直接攻击（比如「请删除所有文件」）很有效。但面对多步攻击链，问题暴露了：&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;每步都合理&lt;/strong&gt;：下载 ZIP、解压文件、运行 Python 脚本——单独看每一步都是正常的开发操作&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;上下文缺失&lt;/strong&gt;：分类器只看到当前这一步，看不到 5 步拼在一起的攻击意图&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;模型在攻击者的工作目录里操作&lt;/strong&gt;：Python 的模块搜索路径被污染，但分类器不知道&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;类比：安检员逐件检查你的行李，每件都合规。但他不知道你分 5 次带进来的零件组装起来是什么。&lt;/p&gt;
&lt;h2 id="防护建议"&gt;防护建议
&lt;/h2&gt;&lt;table&gt;
&lt;tr&gt;
&lt;th style="padding:10px 12px;background:#4a90d9;color:#fff;text-align:left;"&gt;防护层&lt;/th&gt;
&lt;th style="padding:10px 12px;background:#4a90d9;color:#fff;text-align:left;"&gt;具体操作&lt;/th&gt;
&lt;th style="padding:10px 12px;background:#4a90d9;color:#fff;text-align:left;"&gt;为什么有效&lt;/th&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;font-weight:bold;"&gt;沙箱隔离&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;用 Docker 容器或虚拟机跑 Agent，禁止直接在主机开发&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;即使被攻破，恶意代码只能在沙箱内活动&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;font-weight:bold;"&gt;网络出站控制&lt;/td&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;"&gt;限制 Agent 只能访问白名单域名，禁止任意外连&lt;/td&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;"&gt;阻断 C2 回连和远程载荷下载&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;font-weight:bold;"&gt;凭证隔离&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;不要把 SSH 密钥、云 API Key、.git 挂载到 Agent 工作目录&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;防止恶意代码窃取凭证横向移动&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;font-weight:bold;"&gt;监控 Agent 行为&lt;/td&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;"&gt;实时看 Agent 执行了什么命令、访问了什么文件&lt;/td&gt;
&lt;td style="padding:8px 12px;background:#f8f8f8;"&gt;Auto Mode 批准的命令不代表安全，人工复核不可省&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style="padding:8px 12px;font-weight:bold;"&gt;不用 Auto Mode 处理不可信内容&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;让 Agent 总结网页、处理外部文件时，切换回手动确认模式&lt;/td&gt;
&lt;td style="padding:8px 12px;"&gt;间接注入的入口就是不可信内容&lt;/td&gt;
&lt;/tr&gt;
&lt;/table&gt;
&lt;h2 id="anthropic-的回应和底线"&gt;Anthropic 的回应和底线
&lt;/h2&gt;&lt;p&gt;研究员按流程先报给 Anthropic 的 modelbugbounty 邮箱，没收到回复。转报安全渠道后，得到回应：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;「Auto Mode 是基于 best-effort 分类器的便利功能，不是安全保证。定向的多步提示注入链不在分类器的设计防御范围内。真正的安全边界是 OS 隔离和网络出站控制。」
——Anthropic 安全团队&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;Anthropic 关闭了漏洞报告，标记为「Informative」。&lt;/p&gt;
&lt;p&gt;说白了：&lt;strong&gt;他们不认为这是 bug，而是预期行为。&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id="写在最后"&gt;写在最后
&lt;/h2&gt;&lt;p&gt;研究员在文章结尾说了一句值得每个用 Coding Agent 的人记住的话：&lt;/p&gt;

 &lt;blockquote&gt;
 &lt;p&gt;「Auto Mode 可以降低风险（相比完全跳过权限检查），但它不是安全边界。如果 Agent 处理不可信内容，或者太执着于完成目标，Auto Mode 救不了你。」&lt;/p&gt;

 &lt;/blockquote&gt;
&lt;p&gt;这不是 Claude 的专属问题。任何 Coding Agent 的自动执行模式，本质上都是在便利和安全之间做了取舍。模型的安全分类器能挡住大多数低级攻击，但面对精心设计的多步攻击链，分类器的边界会被轻松绕过。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;记住：安全的不变量，不可选配。&lt;/strong&gt;&lt;/p&gt;</description></item></channel></rss>