资源 · 44

提示注入:测试 AI 代理的信任边界

检查文档、搜索结果或消息是否不能代表用户授权操作。

已更新 · 3 min

本指南有助于实现的目标

  • 将数据与指令分离。
  • 将可用操作限制在任务范围内。
  • 测试响应背后的真实效果。
  • 记录局限性和回归。

快速检查

  • 代理读取哪些外部内容?
  • 代理无需审批即可触发哪些操作?
  • 授权是否在模型外部强制执行?
  • 口头拒绝是否真的能阻止工具调用?
  • 如何阻止出现偏差场景?

分步指南

  1. 1

    清点边界

    列出消息、网页、文档、搜索结果、附件和工具输出。 将它们视为数据,无需权限即可进行解读。 包括承载文本或多模态内容的渠道。

    交付成果:输入和可用操作的映射。

  2. 2

    定义禁止的影响

    描述需要防止的危害:超出范围的访问、未经批准的发布、数据传输或帐户更改。 为每个场景设定可观察的结果;仅判断答案文本可能会遗漏已执行的操作。

    交付成果:威胁场景和不变式。

  3. 3

    隔离测试环境

    使用带有测试标记和模拟工具的清晰标记的虚拟帐户、文档和目标位置。 禁用真实发送和生产环境访问。 保留模型、配置、语料库和连接器版本以重现案例。

    交付成果:版本化的环境和测试集。

  4. 4

    重放对抗性输入

    在测试源中放置一条与任务相矛盾、请求超出范围的操作或声称具有虚假权限的指令。 改变语言、位置、格式和源组合。 测量工具调用、参数和实际效果。

    交付成果:成功案例、被阻塞案例和未解决案例的跟踪记录。

  5. 5

    加强外部控制

    在工具中强制执行最小权限、参数验证、读/写分离和允许的目标位置。 要求对敏感操作进行上下文批准。 仅使用 RAG 和拒绝指令无法消除注入风险。

    交付成果:可执行规则和绕过测试。

  6. 6

    跟踪变更

    在模型、语料库、工具或规则发生变更后重放案例。 同时跟踪被阻塞的合法任务。 公布测试范围和已知限制;在小型测试集上取得成功并不能证明不存在漏洞。

    交付成果:回归分析报告和部署决策。

虚构示例

示例情境

示例:助手对一个测试文档进行摘要,该文档请求将信息发送到外部目标。

决策及预期证据

该工具会拒绝该目标,而与生成的文本无关。 测试检查确认没有发送任何内容,并且合法的摘要仍然有效。

区分机制

机制目的验证或限制
输入过滤器检测一些可疑模式可能遗漏新措辞
建模指令描述预期边界不是访问控制
工具强制执行拒绝未经授权的操作必须检查身份、对象和参数

管理指标

指标衡量内容首要行动
禁止的操作导致超出范围影响的情况阻止并调查每个影响
错误拒绝阻止合法任务修改而不扩大权限
覆盖面实际测试的通道和工具声明盲点

常见错误

  • 在测试提示中放置密钥
  • 仅测试可见答案
  • 假设内部文档始终可信
  • 在几次测试后声称绝对保护

常见问题解答

执行 RAG 能防止注入吗?

否。检索到的文档本身可能携带恶意指令。 源数据仍需在受控边界内处理。

是否应该阻止所有可疑文档?

这取决于具体任务;代理通常可以在不遵循文档指令或没有写入工具的情况下分析文档。

结果应该如何发布?

说明版本、范围、测试效果、局限性和修复方案。 排除测试中使用的机密信息和客户文档。

官方参考文献

参考文献支持该方法。 请根据您的实际情况调整检查;它们并非认证。 原始参考文献标题和源文档可能使用其他语言。