Ignore Previous Prompt: Attack Techniques For Language Models
https://arxiv.org/pdf/2211.09527
忽略之前的提示:针对语言模型的攻击技术
摘要
基于Transformer的大型语言模型(LLMs)为大规模面向客户的应用程序中的自然语言任务提供了强大的基础。然而,探索恶意用户互动中出现的漏洞的研究却很少。通过提出PROMPTINJECT,一个基于掩码的迭代对抗性提示组合的平淡对齐框架,我们检验了GPT-3(生产中部署最广泛的语言模型)如何容易被简单的手工输入所误导。特别是,我们研究了两种类型的攻击——目标劫持和提示泄露——并展示了即使是低能力的,但足够恶意的代理,也可以轻易利用GPT-3的随机性,造成长尾风险。PROMPTINJECT的代码可在github.com/agencyenterprise/PromptInject上获得。
1 引言
2020年,OpenAI引入了GPT-3 [3],这是一个能够完成文本输入以产生类似人类结果的大型语言模型(LLM)。它的文本完成能力可以推广到其他自然语言处理(NLP)任务,如文本分类、问答和摘要。从那时起,GPT-3和其他LLMs——如BERT [5]、GPT-J [25]、T5 [22]和OPT [31]——通过在各种任务上取得最先进的成果,彻底改变了NLP。
创建GPT-3(和类似LLMs)应用程序的一种方法是设计一个接收用户输入的提示,通过字符串替换 [15]。例如,可以通过使用提示“纠正这个到标准英语:‘{user_input}’”,其中{user_input}是最终用户提供的短语,简单地构建一个语法修复工具。值得注意的是,一个非常简单的提示能够完成非常复杂的任务。使用基于规则的策略构建类似的应用程序将会更加困难(甚至不可行)。
然而,使用GPT-3构建应用程序的便利性是有代价的:恶意用户可以通过应用程序界面轻易注入对抗性指令。由于GPT-3提示的非结构化和开放式特性,保护应用程序免受这些攻击可能非常具有挑战性。我们将插入恶意文本以误导LLM的行为定义为提示注入。提示注入最近在社交媒体上引起了关注,用户发布了提示注入的例子,以误导基于GPT-3的应用程序的目标 [8, 27, 28]。然而,探索这些现象的研究仍然很少。在这项工作中,我们研究了对手如何通过提示注入滥用LLMs。我们提出了两种攻击(图1)——目标劫持和提示泄露——并分析了它们的可行性和有效性。
我们将目标劫持定义为将提示的原始目标重新对齐到打印目标短语的新目标的行为。我们展示了恶意用户可以通过人工制作的提示注入轻易执行目标劫持。
我们将提示泄露定义为将提示的原始目标重新对齐到打印部分或全部原始提示的新目标的行为。恶意用户可以尝试执行提示泄露,目标是复制特定应用程序的提示,这可能是基于GPT-3的应用程序最重要的部分。
我们的工作强调了研究提示注入攻击的重要性,并提供了影响因素的见解。我们相信,我们的工作可以帮助社区更好地理解使用LLMs的安全风险,并设计更好的LLM驱动的应用程序。我们的主要贡献如下:
- 我们研究了针对LLMs的提示注入攻击,并提出了一个框架来探索这类攻击。
- 我们调查了两种特定的攻击:目标劫持和提示泄露。
- 我们提供了我们工作的AI x-risk分析 [9](附录A)。
图1:图表显示了对抗性用户输入如何破坏模型指令。在两种攻击中,攻击者的目标是改变原始提示的目标。在目标劫持中,新目标是打印一个特定的目标字符串,该字符串可能包含恶意指令,而在提示泄露中,新目标是打印应用程序提示。应用程序提示(灰色框)显示了原始提示,其中{user_input}被用户输入替换。在这个例子中,用户通常会输入一个短语供应用程序(蓝色框)更正。目标劫持和提示泄露(橙色框)显示了两种攻击的恶意用户输入(左)以及在攻击成功时各自的模型输出(右)。