设计 AI 代理以抵御 prompt injection
请提供您希望翻译的具体文本内容,我会按照要求将其译成简体中文并保留原始的格式。
介绍
AI 代理越来越能够浏览网页、检索信息并代表用户执行操作。这些能力很有用,但也为攻击者提供了操纵系统的新途径。
这些攻击通常被称为 prompt injection:在外部内容中放置指令,试图让模型执行用户未请求的操作。根据我们的经验,这些攻击在实际中的最有效版本越来越像社会工程学,而不是简单的提示覆盖。
为什么这种转变很重要
如果问题不仅仅是识别恶意字符串,而是要在上下文中抵御误导性或操纵性内容,那么防御不能仅仅依赖过滤输入。它还需要在系统设计时限制操纵的影响,即使某些攻击成功,也要将其影响控制在可接受范围内。
早期的“提示注入”攻击可能仅仅是编辑维基百科条目,加入直接指令给访问该页面的 AI 代理;如果在训练期间没有接触过这种对抗性环境,AI 模型往往会毫无质疑地执行这些指令1。随着模型变得更智能,它们对这类暗示的易感性也下降,我们观察到提示注入式攻击已经演变为加入社会工程学元素的形式。
“AI 防火墙”的局限性
在更广泛的 AI 安全生态系统中,常常推荐使用 AI 防火墙 等技术,即在 AI 代理与外部世界之间设置一个中介,尝试将输入分类为 恶意提示注入 和 常规输入。然而,成熟的攻击往往无法被此类系统捕获。检测恶意输入实际上与检测谎言或错误信息面临同样的极其困难的问题——往往缺乏必要的上下文。
将提示注入视为社会工程
随着现实世界中的提示注入攻击日益复杂,我们发现最有效的攻击手段往往利用了经典的社会工程策略。我们不再将这些攻击视为单独的一类问题,而是用管理其他领域中针对人的社会工程风险的相同视角来审视它们。
在这些系统中,目标不仅仅是完美识别恶意输入;更重要的是设计代理和系统,使得即使攻击成功,其影响也被限制在可控范围内。此类系统已被证明能够有效缓解提示注入和社会工程两方面的风险。
三方类比
- 代理人 – 想代表其雇主行事。
- 外部输入 – 可能试图误导代理人(例如,恶意网页内容、欺骗性用户信息)。
- 雇主 / 系统 – 对代理人的能力设定限制,以控制下行风险。
示例:一名人工客服代表可以发放礼品卡或退款。公司必须信任该代表出于正确的理由进行退款,同时该代表也会与可能试图误导或胁迫他们的第三方互动。确定性的安全措施(例如,退款金额上限、钓鱼邮件标记)可以限制被攻破的个人所造成的影响。
我们的对策套件
这种思维方式为我们部署的一套强大的对策提供了指导,能够满足用户的安全期望。
在 ChatGPT 中,我们将这种社会工程模型与更传统的安全工程方法相结合,例如 source‑sink analysis(源‑汇分析)。
- Source – 攻击者影响系统的方式(例如,不可信的外部内容)。
- Sink – 在错误上下文中会变得危险的能力(例如,将信息传输给第三方、点击链接、调用工具)。
我们的目标是为用户保留一个核心的安全期望:潜在危险的操作,或潜在敏感信息的传输,不应在没有适当防护的情况下悄然发生。
安全 Url 缓解
我们在 ChatGPT 上看到的攻击大多是试图说服助手从对话中获取机密信息并将其传输给恶意第三方。在大多数情况下,这类攻击会失败,因为我们的安全训练会导致代理拒绝。
在极少数情况下,代理被说服后,我们已经制定了一种名为 Safe Url 的缓解策略,其:
- 检测对话中学到的信息是否会被传输给第三方。
- 要么向用户展示将要传输的信息并请求确认,要么 阻止传输并告知代理尝试以其他方式满足用户的请求。
自动代理的建议
与对抗性的外部世界安全交互是实现完全自主代理所必需的。在将 AI 模型与应用系统集成时,我们建议:
- 询问在人类代理在类似情境下会拥有何种控制手段,并为 AI 实施这些控制。
- 限制代理的能力(例如,对操作进行速率限制,对高风险操作要求多步骤验证)。
- 持续监控异常行为并提供审计日志。
我们预期,最具智能的 AI 模型在抵御社会工程攻击方面会优于人类代理,但这并不能得到保证。持续的警惕、分层防御以及假设操纵可能成功的设计理念都是必不可少的。
… 取决于具体应用,这些方式可能是可行的或具成本效益的。
我们将继续探索针对 AI 模型的社会工程攻击及其防御措施,并将我们的发现同时融入应用安全架构以及对 AI 模型的训练中。
参考文献
Footnotes
早期的提示注入攻击会编辑公共内容(例如 Wikipedia),导致天真的模型在没有质疑的情况下执行恶意指令。此现象促使人们转向更为复杂、经过社会工程策划的攻击。 ↩