主播
节目简介
来源:小宇宙
这一章深入解析了 Claude Code 如何应对 AI Agent 特有的安全威胁 —— 提示注入(Prompt Injection)。由于 Agent 具备读写文件和执行命令的能力,这类攻击可能导致 Agent 被劫持为攻击者的代理,从而执行任意恶意代码。
以下是该章节核心内容的总结:
1. 纵深防御体系(Defense in Depth)
Claude Code 并不依赖单一技术,而是构建了一套七层纵深防御体系。其核心哲学是:没有任何一层是完美的,但七层叠加后,攻击者必须同时绕过所有层级才能成功。这七层涵盖了从字符级到行为级的全方位防护。
2. 第一道防线:Unicode 迭代清洗
针对真实的隐形字符攻击漏洞(如 HackerOne #3086545),系统实现了极其严格的清洗机制:
* 三重防御:结合 NFKC 规范化、Unicode 属性类移除和显式字符范围过滤,剔除所有肉眼不可见但模型能“看到”的格式控制、私用区和隐形指令字符。
* 迭代清洗:由于规范化可能产生新的危险字符,系统会进行最多 10 轮迭代直到字符串完全稳定。
* 递归处理:系统不仅清洗 JSON 数据的值,还会清洗其键名,防止攻击者在键名中嵌入注入向量。
3. 结构与语义防御:XML 转义与来源标签
为了防止外部输入伪造系统指令,系统建立了严密的结构化防线:
* XML 转义:所有进入上下文的外部字符串都会经过 escapeXml 处理,防止其包含伪造的标签(如)。
* 来源认证机制:定义了 29 个 XML 标签常量(如 bash-stdout, channel-message)。模型通过这些标签明确知晓内容来源,从而对不同来源的数据赋予不同的信任级别。例如,包裹在 中的内容被视为不可信的外部推送,而非用户直接指令。
4. 模型即防线(Model as Defender)
该系统的一个独特之处在于让受保护的模型本身参与防御:
* 注入检测训练:在系统提示词中明确要求模型:如果怀疑工具结果中包含注入尝试,必须主动向用户发出警告。
* 信任模型建立:通过提示词告诉模型,哪些标签是系统自动生成的,且它们与周围的工具结果无直接关联,从而识破伪造的系统提醒。
5. 架构级硬阻断与威胁面分级
系统根据操作的潜在损害范围实施威胁面分级(Threat Surface Tiering):
* 本机操作:如读写文件,由权限规则和 ML 分类器判定。
* 跨机器消息:对于跨机器发送的消息,系统实施最严格的硬阻断 —— 将 classifierApprovable 设为 false。这意味着即使 AI 分类器认为安全,也必须由人类手动确认。
6. 行为边界:CYBER_RISK_INSTRUCTION
系统通过内嵌在系统提示词中的 CYBER_RISK_INSTRUCTION 为模型设定了认知边界:
* 明确允许清单:列出合法的安全研究场景(如 CTF、渗透测试教育)。
* 灰色地带处理:对双用途安全工具(如 C2 框架)要求必须具备明确的授权上下文。
* 元防御:在指令文件中加入注释,禁止模型在未经用户许可下修改自身的安全规范文件。
7. 核心工程模式提炼
* 信任边界清洗(Sanitize at Trust Boundaries):只在外部数据进入内部系统的入口点(如 MCP 工具加载、Deep Link 解析)进行清洗,不在业务逻辑中散布清洗代码,以平衡性能与安全。
* 来源标记分级:对不同来源(代码内嵌、用户编写、Hook 输出、MCP 结果)赋予阶梯式的信任权重,其中 MCP 工具结果被视为最低信任级别,需经过完整的七层防御链。
总结而言,本章展示了 Claude Code 如何通过字符级清洗、结构化隔离、模型认知强化以及架构级硬阻断,在开放的工具生态(如 MCP)中为 AI Agent 筑起了一道坚实的防御长城。
以下是该章节核心内容的总结:
1. 纵深防御体系(Defense in Depth)
Claude Code 并不依赖单一技术,而是构建了一套七层纵深防御体系。其核心哲学是:没有任何一层是完美的,但七层叠加后,攻击者必须同时绕过所有层级才能成功。这七层涵盖了从字符级到行为级的全方位防护。
2. 第一道防线:Unicode 迭代清洗
针对真实的隐形字符攻击漏洞(如 HackerOne #3086545),系统实现了极其严格的清洗机制:
* 三重防御:结合 NFKC 规范化、Unicode 属性类移除和显式字符范围过滤,剔除所有肉眼不可见但模型能“看到”的格式控制、私用区和隐形指令字符。
* 迭代清洗:由于规范化可能产生新的危险字符,系统会进行最多 10 轮迭代直到字符串完全稳定。
* 递归处理:系统不仅清洗 JSON 数据的值,还会清洗其键名,防止攻击者在键名中嵌入注入向量。
3. 结构与语义防御:XML 转义与来源标签
为了防止外部输入伪造系统指令,系统建立了严密的结构化防线:
* XML 转义:所有进入上下文的外部字符串都会经过 escapeXml 处理,防止其包含伪造的标签(如
* 来源认证机制:定义了 29 个 XML 标签常量(如 bash-stdout, channel-message)。模型通过这些标签明确知晓内容来源,从而对不同来源的数据赋予不同的信任级别。例如,包裹在
4. 模型即防线(Model as Defender)
该系统的一个独特之处在于让受保护的模型本身参与防御:
* 注入检测训练:在系统提示词中明确要求模型:如果怀疑工具结果中包含注入尝试,必须主动向用户发出警告。
* 信任模型建立:通过提示词告诉模型,哪些标签是系统自动生成的,且它们与周围的工具结果无直接关联,从而识破伪造的系统提醒。
5. 架构级硬阻断与威胁面分级
系统根据操作的潜在损害范围实施威胁面分级(Threat Surface Tiering):
* 本机操作:如读写文件,由权限规则和 ML 分类器判定。
* 跨机器消息:对于跨机器发送的消息,系统实施最严格的硬阻断 —— 将 classifierApprovable 设为 false。这意味着即使 AI 分类器认为安全,也必须由人类手动确认。
6. 行为边界:CYBER_RISK_INSTRUCTION
系统通过内嵌在系统提示词中的 CYBER_RISK_INSTRUCTION 为模型设定了认知边界:
* 明确允许清单:列出合法的安全研究场景(如 CTF、渗透测试教育)。
* 灰色地带处理:对双用途安全工具(如 C2 框架)要求必须具备明确的授权上下文。
* 元防御:在指令文件中加入注释,禁止模型在未经用户许可下修改自身的安全规范文件。
7. 核心工程模式提炼
* 信任边界清洗(Sanitize at Trust Boundaries):只在外部数据进入内部系统的入口点(如 MCP 工具加载、Deep Link 解析)进行清洗,不在业务逻辑中散布清洗代码,以平衡性能与安全。
* 来源标记分级:对不同来源(代码内嵌、用户编写、Hook 输出、MCP 结果)赋予阶梯式的信任权重,其中 MCP 工具结果被视为最低信任级别,需经过完整的七层防御链。
总结而言,本章展示了 Claude Code 如何通过字符级清洗、结构化隔离、模型认知强化以及架构级硬阻断,在开放的工具生态(如 MCP)中为 AI Agent 筑起了一道坚实的防御长城。