提示注入是权限问题,而非模型问题
缓解大语言模型(LLM)中的提示注入问题并非输入验证问题,而是权限问题,因为 LLM 本质上模糊了指令与数据之间的界限。依赖“更好的指令”或过滤机制是不够的,因为它们依赖于模型始终正确行为,而这无法得到保证。攻击者只需成功绕过一次过滤,即可通过多种编码技巧,或将内容嵌入图像或文档中来实现规避。核心问题在于 LLM 仅有一个通道同时承载指令和数据,因此在协议层面无法可靠地区分二者。因此,真正有效的控制在于假设恶意指令将被执行,并设计系统使此类执行变得“无趣”。这涉及若干结构性变更:
首先,将代理拆分为两个组件:一个用于读取不可信内容,但不具备工具或凭证;另一个则基于第一个组件返回的结构化数据采取行动,且从未直接查看不可信文本。其次,不允模型直接调用操作,而是让其提出意图,随后将这些意图与严格的白名单和模式进行验证。第三,通过按主机白名单出站网络请求,并从渲染后的模型输出中剥离或代理远程引用,从而阻断数据外泄路径。第四,对所有不可逆操作引入人工介入,允许模型起草方案,但关键步骤需经人工确认。最后,为每个凭证绑定每代理密钥、有效期、消费上限、速率限制,以及记录拒绝操作的外部追加式日志。横向审计权限集,考量单个看似无害的能力如何组合形成危险配置。这种基于能力的方案确保即使恶意指令被执行,其也无法触及或作用于任何有价值之物。