越狱(Jailbreak)是试图让基础模型违反安全行为的攻击。它可能利用角色扮演、上下文包装、多语言、编码内容或渐进式多轮对话。工程上真正关键的问题不是模型是否能拒绝每一种对抗性措辞,而是可疑请求、模型输出或工具提议到达应用后,系统会允许什么结果发生。

本文关注如何降低该结果的影响。有关网页、邮件、RAG 文档与 Tool 输出中恶意指令造成的完整应用威胁模型,请阅读 Prompt Injection 防御:从架构上保护 LLM Agent

Jailbreak 与 Prompt Injection 的区别

  • **Jailbreak(越狱):**试图绕过模型安全政策,例如诱导模型生成被禁止内容。
  • **Prompt Injection(提示词注入):**通过攻击者可控指令改变应用行为;其影响由模型可以接触的数据、工具和权限决定。

二者在实际系统中会重叠。浏览器 Agent 或 RAG Agent 既可能读取恶意内容而被操纵,也可能遭遇针对模型安全行为的测试。因此不能因为分类不同就只部署其中一种控制。

先建模,再过滤

模型安全能力具有概率性,并且依赖具体模型和配置。生产威胁模型应围绕资产与影响建立:

  • 哪些用户、租户、记录、凭证、资金或外部系统可被 Agent 触达?
  • 哪些输入不可信,包括检索文档、图片、OCR 文本、Tool Result、Memory 与源代码注释?
  • 哪些操作会产生后果:发消息、修改状态、购买、删除、发布或外泄数据?
  • 即使模型遵循恶意文本,哪些结果仍必须不可能发生?

例如:“一封邮件可以影响摘要,但不能为私有附件选择新的接收人。”这是可由代码强制执行的策略;“模型绝不能被迷惑”不是。

纵深防御

1. 最小化能力

每条工作流只拥有完成任务所需的工具和数据。摘要器不需要写权限;客服工作流应使用任务范围、短生命周期凭证,而不是宽泛的服务账号。对象级鉴权必须由源系统执行,模型指令不是访问控制。

2. 把策略放在模型之外

把模型输出,包括格式正确的 JSON Tool Call,都当作提议。执行前必须由确定性应用代码校验真实身份、租户、资源所有权、操作 Schema、数据分级、目的地、速率限制与审批条件。

3. 在多个边界部署护栏

  • **输入控制:**安全规范化、检测已知滥用模式、限流并标记来源信任级别。检测器是信号,不是鉴权决策。
  • **上下文控制:**分离可信任务指令与外部数据,经过抽取和摘要后仍保留来源,并禁止把检索到的指令写入程序性 Memory。
  • **输出控制:**校验 Schema,在合适位置执行内容和 PII 政策,阻止敏感信息进入 URL、日志、渲染 Markdown 或不可信 Tool 参数。
  • **执行控制:**在 Sandbox 中运行生成代码,限制网络外发和跳转,对不可逆或外部影响操作要求精确的用户确认。

清晰的角色边界和安全分类器能提升鲁棒性,但都不会自动成为安全边界。AI 护栏术语页解释了这些层的职责。

保护 RAG 与 Agent 状态

RAG 会引入间接输入攻击面。应在检索前强制文档 ACL,保留来源和信任元数据,分别评估相关性与可信度,并隔离新入库内容。不要把检索文本、Tool 输出或生成摘要自动升级为持久 Memory。删除和事件清理必须传播到 Chunk、Index、Cache、Summary 与 Memory。

评测结果,而不是拒答措辞

评测集应将正常任务与直接、间接、多语言、编码、多模态、多轮和重复尝试的对抗变体配对,并覆盖每种可用 Tool、数据源和外部出口。至少记录:

  • 未授权 Tool Call、数据访问、状态变更与外发;
  • 攻击成功率与重复尝试成功率;
  • 合法任务完成正确率和误拒答;
  • 检测器精度、召回率、延迟和成本;
  • 审批是否展示并绑定到最终操作。

使用 AI 红队测试 发现问题,再将每条已确认攻击链转化为回归测试。若邮件已经被发送,随后再拒答并不代表防御成功。

总结

越狱抗性很重要,但不能是保护生产系统的唯一控制。限制能力、保留数据来源、在确定性代码中鉴权、约束外部通信,并测试从恶意输入到现实影响的完整路径。这些控制能避免不完美的模型变成不安全的应用。