关于针对基于 AI 语言模型(如 GPT-3)构建的软件的即时注入攻击的一些扩展想法。这篇文章最初是一个Twitter 线程,但我在这里将其推广为一个完整的博客条目。
我对这些针对 GPT-3 的即时注入攻击想得越多,我的乐趣就越会变成真正的担忧。
我知道如何击败 XSS、SQL 注入以及许多其他漏洞。
我不知道如何可靠地击败即时注射!
作为一个有安全意识的工程师,这真的让我很困扰。我对针对大型语言模型构建很酷的东西的潜力感到兴奋。
但我想确信在我承诺发布任何使用该技术的软件之前,我可以保护它们。
这里的一个大问题是可证明性。像 GPT-3 这样的语言模型是终极黑匣子。不管我写了多少自动化测试,我永远不能 100% 确定用户不会想出一些我没有预料到的语法结构会颠覆我的防御。
如果你认为这些攻击仍然是理论上的,昨天提供了一个很好的例子,即在野外对 Twitter 机器人使用即时注入攻击。
这也证明了他们的病毒式传播。即时注入攻击很有趣!你不需要成为一名程序员来执行它们:你需要能够用简单的英语输入漏洞,并改编你从别人那里看到的例子。
我不认为有一个。存在这些缓解措施是因为它们是人们犯的语法错误;更正语法,您已经更正了错误。提示注入不是错误!像这样的 AI 没有正式的语法,这就是重点。
您可以尝试各种方式来缓解这些漏洞,使用规则来评估输入以检查潜在的危险模式。
但我认为这些方法中的任何一种都不能达到 100% 的信心,即意外的输入可能会以某种方式从它们身边溜走!
如果我有针对 99% 的情况的 XSS 或 SQL 注入保护,那么有人想出一个偷偷摸摸的利用只是时间问题。
通过即时注入,任何可以用某种人类语言(甚至不限于英语)构建句子的人都是潜在的攻击者/漏洞研究人员!
另一个担心的原因:假设您仔细构建了一个您认为可以 100% 安全抵御即时注入攻击的提示(同样,我完全不确定这是否可能。)
如果您想针对您正在使用的语言模型的新版本运行它会发生什么?
每次升级语言模型时,实际上都必须从头开始处理这些缓解措施——因为谁知道新模型是否会有微妙的新方法来解释打开全新漏洞的提示?
我仍然希望AI 模型提供商能够通过在“指导性”提示和“用户输入”提示之间提供清晰的分离来解决这个问题。但我希望看到正式的研究证明这可以切实地为这些攻击提供坚如磐石的保护。
原文: http://simonwillison.net/2022/Sep/16/prompt-injection-solutions/#atom-everything