智能体的提示注入防护
提示注入不是攻破模型,而是利用系统不区分数据与指令这一点。 因此防护不建立在识别「坏文字」上,而建立在权限、边界与停止点上。
为什么按文字过滤解决不了问题
指令可以有无数种写法,使它有害的不是文字,而是工具调用带来的后果。 过滤器的实测效果有限:在我们整理过的材料中,作为关卡的正则表达式 在 44 个有害调用中拦下 18 个(41%),同时把 40 个无害调用误报 3 个。 过滤器作为一个层有用,但不能把它当作防护本身。
还要单独看待间接注入——指令来自智能体因工作而阅读的文档、网页或邮件。 真实系统里出现的正是它,因为智能体必须阅读不可信的内容。 定义见术语表。
不依赖识别也能起作用的防护层
- 最小权限。智能体按步骤获得权限,并在步骤结束后失去它们。 即使攻击完全没有被识别,这也能限制危害。
- 数据与指令分离。来自外部来源的一切都按数据处理: 内容不能改变允许的动作清单。
- 行动边界上的停止点。在调用工具之前与接收结果时检查, 而不是在推理的文字里——推理可以用话绕过去。
- 防修改的日志。记录的链式校验:任何一条记录被改动, 都能在核查时发现。
- 工具输出的检查。不可信的结果不能当作指令执行; 检测器换到别的数据集上并不保持。
怎样检查防护是否存在
可靠的办法只有一个:把指令投到它不被期待的地方——场景中的文档里、附件里、 系统当作数据的字段里。我们在自己的场地上做这件事(ISAI RANGE), 而且只针对自己的系统,或者在所有者书面同意的情况下进行。细节的内部链接: 监督回路的分析、 测试台首次运行的报告、措施清单见 服务。
公开披露。在漏洞被修复之前,我们不公布、
也不向第三方转交相关信息:这写在工作规则与
方法论里。
本页为中文简介,完整文本见英文版。