您的浏览器禁用了JavaScript(一种计算机语言,用以实现您与网页的交互),请解除该禁用,或者联系我们。[大数据协同安全技术国家工程研究中心]:大语言模型提示注入攻击安全风险分析报告(2023.7) - 发现报告
当前位置:首页/行业研究/报告详情/

大语言模型提示注入攻击安全风险分析报告(2023.7)

大语言模型提示注入攻击安全风险分析报告(2023.7)

安全大脑国家新一代人工智能开放创新平台 大语言模型提示注入攻击安全 风险分析报告 大数据协同安全技术国家工程研究中心 2023年7月6日 版权声明 本报告版权属于大数据协同安全技术国家工程研究中心,项目成果属于“安全大脑国家新一代人工智能开放创新平台”,受法律保护。转载、摘编或利用其他方式使用本报告文字或观点的,应注明“来源:大数据协同安全技术国家工程研究中心安全大脑国家新一代人工智能开放创新平台”。违反上述声明者,编者将追究其相关法律责任。 编写单位及部门 大数据协同安全技术国家工程研究中心AI安全实验室安全大脑国家新一代人工智能开放创新平台项目组 编写组成员 邹权臣、张德岳、杨东东、韩东、徐昌凯 目录 1.引言1 2.提示与提示学习3 2.1提示的概念3 2.2提示学习的概念6 3.提示注入攻击7 3.1直接提示注入7 3.1.1目标劫持7 3.1.2提示泄露9 3.1.3越狱攻击11 3.2间接提示注入15 4.提示注入防御19 4.1输入侧防御19 4.1.1提示过滤19 4.1.2提示增强22 4.2输出侧防御27 4.2.1内容审核过滤27 5.测评数据集构建30 5.1基础数据集构建30 5.1.1越狱攻击验证数据集30 5.1.2目标劫持验证数据集32 5.1.3提示泄露验证数据集33 5.2测评数据集生成35 5.2.1恶意问题数据生成35 5.2.2恶意指令数据生成36 5.2.3测评数据有效性验证37 6.实验评估39 6.1实验设置39 6.1.1模型设置39 6.1.2数据设置40 6.2提示注入攻击风险测评40 6.2.1不同攻击类别的攻击成功率40 6.2.2不同问题类别的攻击成功率41 6.3提示注入防御性能测评42 6.3.1基于提示增强的防御性能测评42 6.3.2基于模型检测的防御性能测评44 7.总结与展望45 参考文献47 1.引言 近期,基于Transformer的大语言模型(LargeLanguageModel,LLM)研究取得了一系列突破性进展,模型参数量已经突破千亿级别,并在人类语言相似文本生成方面有了卓越的表现。目前已有多个商业化大模型发布,如OpenAI推出的GPT系列[1-3]、Google推出的T5[4]和PaLM[5],以及Meta推出的OPT[6]等大语言模型等。特别是OpenAI推出ChatGPT[7],由于其强大的理解与生成能力,在短短2个月内突破了1亿用户量,成为史上用户增长速度最快的消费级应用程序。为了应对市场冲击,谷歌也推出了BARD聊天机器人,Meta则开源了LLaMA模型[8]。国内各大企业、高校和研究机构也纷纷进入大模型领域,推出了一系列对话大模型,包括百度文心一言[9]、360智脑[10]、讯飞星火[11]、商汤商量[12]、阿里通义千问[13]、智源悟道[14]、复旦MOSS[15]、清华ChatGLM[16]等。 大语言模型正在各个应用领域引起巨大的变革,并已经在搜索、金融、办公、安全、教育、游戏、电商、社交媒体等领域迅速普及和应用。例如微软将GPT4应用于必应搜索引擎和Office办公软件,而谷歌把PaLM2等模型应用在Workspace办公套件、Android以及Bard聊天机器人。 然而,伴随着大语言模型广泛应用的同时,也衍生出一系列严重的安全风险,并引发了多起安全事件。如OpenAI曾经默认将用户输入的内容用于模型训练,从而导致了多起隐私数据泄漏事件。据媒体报道,亚马逊公司发现ChatGPT生成的内容中发现与公司机密非常相似的文本[17]。韩国媒体报道称,三星公司在引入ChatGPT不到20天内就发生3起涉及机密数据泄漏的事故,其中2起与半导体设备有关,1起与会议内容有关[18]。据网络安全公司Cyberhaven的调查,至少有4%的员工将企业敏感数据输入ChatGPT,而敏感数据占输入内容的11%[19]。 此外,大模型系统近期也被相继爆出多个安全漏洞。例如,ChatGPT的Redis客户端开源库的一个错误,导致1.2%的ChatGPT付费用户个人信息泄露,包括聊天记录、姓名、电子邮箱和支付地址等敏感信息[20]。随后,OpenAI网站又被爆出Web缓存欺骗漏洞,攻击者可以接管他人的账户,查看账户聊天记录并访问账单信息,而被攻击者察觉不到[21]。360AI安全实验室近期还发现大模型软件 LangChain存在任意代码执行的严重漏洞[22]。 总体而言,目前大语言模型面临的风险类型包括提示注入攻击、对抗攻击、后门攻击、数据污染、软件漏洞、隐私滥用等[23][24],这些风险可能导致生成不良有害内容、泄露隐私数据、任意代码执行等危害。在这些安全威胁中,恶意用户利用有害提示覆盖大语言模型的原始指令实现的提示注入攻击,具有极高的危害性,最近也被OWASP列为大语言模型十大安全威胁之首[25]。 本报告对面向大语言模型的提示注入攻击和防御技术展开研究,并通过构建数据集对大语言模型的提示注入攻击安全风险进行了测评。首先,系统分析了面向大语言模型的提示注入攻击和防御技术,并验证了相关技术的有效性。在提示注入攻击方面,对直接注入攻击和间接注入攻击两种方式进行了分类,涉及目标劫持攻击、提示泄露攻击、越狱攻击等。在提示注入攻击防御方面,从大语言模型输入侧、输出侧两端对相关技术进行分析,涉及提示过滤、提示增强等。其次,构建了包含36000条的提示注入攻击验证数据的数据集,覆盖了3类典型攻击方法和6类安全场景,用于对大语言模型的提示注入攻击风险测评。然后,对OpenAIGPT-3.5-turbo、谷歌PaLM2以及UCBerkeley等高校团队开源的Vicuna-13B共3个典型的大语言模型进行了测评,测评结果显示,本文构造的数据集能分别以 79.54%、75.41%、67.24%的成功率实现3类模型的攻击。这3类大语言模型一定程度上代表了目前商业和开源大语言模型的最先进水平,因此测评结果具有代表性。最后,对本报告工作进行总结,并对未来工作进行了展望,在大语言模型安全测评、安全防御、安全监测预警方面给出相关建议。 本报告可以为大语言模型厂商、相关开发者以及研究人员提供参考,以构建更加安全可信的大语言模型。另外,基于本报告形成测评能力,大数据协同安全技术国家工程研究中心AI安全实验室将通过“安全大脑国家新一代人工智能开放创新平台”对外提供大语言模型提示注入攻击风险安全测评服务。 2.提示与提示学习 2.1提示的概念 在计算机科学和自然语言处理领域,提示词(Prompt)是指向计算机程序或模型提供的输入信息或指令。在大语言模型中,提示词是用户提供给模型的问题或陈述,它用于引导模型生成相关的回复或响应。模型接收到一段提示词后,会基于其内部训练的知识和算法生成与提示词最为相关的后续内容或回答。 图2-1提示示例 提示词的作用是告诉生成模型所需的任务或指令,以便它能够生成符合预期的回答。通过设计合适的提示词,可以引导模型在特定领域或特定任务上表现出更准确和一致的回答。一般而言,一条提示词可以包含多个要素,如指令、主要内容、示例和辅助内容等,如图2-1所示[26]。 (1)指令 提示词中通常会包含一个明确的指令或问题,以告诉模型所需的回答类型或任务。例如,如果想要获得关于天气的回答,可以使用包含"请告诉我今天的天气如何?"的提示。在实际使用当中,为了使任务描述更加具体准确、使模型回复的质量更高,指令也可以设计得很复杂。 (2)主要内容 图2-2提示中“指令”的应用示例 主要内容是指希望模型进行处理或转换的具体文本内容,通常与指令一起使用。例如,利用大语言模型进行“英译中”语言翻译任务时可以使用如下的提示词:“Canyoupleasetellmehowtogettothemuseum?TranslatetoChinese:”,其中待翻译的英文文本即为主要内容,而“TranslatetoChinese:”是一条指令。 (2)示例 图2-3提示中“主要内容”的应用示例 使用少样本学习(few-shotlearning)[27]的方式构建提示可以有效提升提示的质量。具体来说,针对目标任务,在提示词当中给出包括输入和模型期望输出的一组和多组示例,通过这种方式来使模型更好地理解当前任务和目标,从而使模型可以给出更合理、贴切的回答。提示词中不包含示例的模式也被称为“零样本学习”。 (2)辅助内容 图2-4提示中“示例”的应用示例 辅助内容是指其他可供模型利用以提升输出质量的信息,它并不是任务的主要目标,通常与主要内容一起使用。常见的辅助内容包括上下文信息,如当前日期、用户的名字、用户的偏好等等。 图2-5提示中“辅助内容”的应用示例 3.2提示学习的概念 提示学习(Prompt-basedLearning)[3]是继预训练-微调范式[28]后的一种新的自然语言处理范式。区别于传统的有监督学习训练模型接收输入𝑥,预测输出�= 𝑃(𝑦|𝑥)的模式[29],基于提示的学习是基于语言模型直接对文本的概率进行建模。在预训练-微调范式中,通过调整预训练模型来匹配特定下游任务数据,本质是对预训练学到的众多信息进行重新排列和筛选。而提示是通过引入“提示信息”,让模型回忆起预训练过程中学到的语言知识,即调整下游任务数据来适配语言模型,通过这种方式将不同的自然语言处理任务进行统一。图2-6展示了基于提示学习完成不同任务的示例[30],包含应用于不同任务时的输入、提示模板和输出。 图2-6基于提示学习完成不同任务的示例 相比预训练-微调范式,提示学习的优势在于: 微调成本更小:随着模型规模的日益庞大,对模型进行微调也成为一项成本高昂的工作,而提示学习范式的出现则提供了一种新的选择,可以冻结模型,仅对提示词进行微调。 适配小样本场景:许多提示模型面向零样本、少样本场景设计,可以在任务数据样本较少的场景下,依然可以达到较好的模型性能。 多任务范式统一:在提示学习的范式下,不同的自然语言处理任务得到 了统一,进而只需训练通用模型即可用于各种不同的具体任务。 4.提示注入攻击 提示注入(PromptInjection)攻击是一种通过使用恶意指令作为输入提示的一部分来操纵语言模型输出的技术[31]。与信息安全领域中的其他注入攻击类似,当指令和主要内容连接时可能会发生提示注入,从而使大语言模型很难区分它们。提示注入是近期对AI和机器学习模型产生较大影响的新型漏洞,特别是对于那些采用提示学习方法的模型而言。注入恶意指令的提示可以通过操纵模型的正常输出过程以导致大语言模型产生不适当、有偏见或有害的输出。 大语言模型在生成文本时依赖于对自然语言的识别和处理,然而在自然语言中系统指令和用户输入提示词往往混合在一起,缺乏清晰的界限。由于这种模糊性,大语言模型有可能将系统指令和用户输入统一当作指令来处理,缺乏对提示词进行严格验证的机制,从而受到恶意指令的干扰输出具有危害性的内容。 提示注入攻击对大语言模型构成了严重的安全风险,这些模型通常具有强大的执行指令和生成内容的能力,而且其内部功能机制不透明且难以评估。目前还没有容易或广泛接受的方法来防御这些基于文本的攻击。提示注入攻击有多种形式,如直接提示注入和间接提示注入[32]。直接提示注入是指用户直接向模型输入恶意指令,试图引发意外或有害的行为。间接提示注入是指攻击者将恶意指令注入到可能被模型检索或摄入的文档中,从而间接地控制或引导模型。 4.1直接提示注入 直接提示注入攻击是通过直接在用户输入中添加恶意指令来操纵模型的输出。根据攻击的目的可以将直接提示注入攻击大致划分成三种类型:目标劫持、提示泄露和越狱攻击。其中,目标劫持旨在改变原始任务设置,破坏模型完整性;提示泄露则试图从原始提示中获取敏感或机密信息;而越狱攻击通过设计提示词,试图绕过模型限制进而执行任意任务或输出违规内容。 3.1.1目标劫持 目标劫持是一种通过将恶意指令添加到用户输入中以劫持语言模型输