0x01 大语言模型越狱风险简介
1.1 大模型安全风险
从左侧来看,相关问题在之前的议题中已经介绍过,此处不再详细阐述。例如,不安全的插件设计、敏感数据泄露、不安全的输出控制导致的安全问题,以及之前提到的 HuggingFace、LangChain 的供应链漏洞等。这些问题都可以在传统安全领域找到相应的解决方案或类似问题的处理方法。
然而,随着问题向右侧延伸,它们可能更偏向于内容安全问题,与传统安全的差异也会更大。下面简要介绍这几种风险。
-
训练数据污染:当大模型进行训练时,没有对训练的数据做事实性检查时,下游的大模型在回答问题时就会容易出现各种错误。
-
RAG污染:关于 RAG(Retrieval-Augmented Generation,检索增强生成)的污染问题,可以分享一个有趣的例子。我们在对公司内部大模型业务进行安全测试时,发现了一个严重的搜索引擎污染问题。当用户询问“x东谁最帅?”时,攻击者可以随意控制大模型的返回结果,从而污染所有使用该大模型搜索功能的用户的响应。它产生的原因是对内部业务构建的大模型搜索引擎,内容来源于用户生成,却没有做好用户内容真实性的管控。
-
模型幻觉:经常使用大模型的人对这个问题肯定不陌生,这是指模型在输出时,会产生一些不符合事实或毫无根据的信息。
-
内容安全:越狱手法可以使大模型输出涉政等敏感言论,造成内容安全风险。
-
数据安全:在大语言模型的响应中,有更高的概率输出在训练数据或微调数据中未清理干净的个人信息,如手机号或姓名,可以通过越狱的手法,让大模型输出可能存在训练或者微调数据中的个人敏感信息。
-
造谣:模型可以通过越狱手法引导生成虚假信息或谣言。例如,之前在社交媒体的热搜上经常出现某些不实传闻,每次都能引起广泛关注。
1.2 大模型越狱的原因
在了解了大语言模型越狱的危害之后,我们进一步探讨为什么大语言模型会被越狱。2023年,有一篇论文对此进行了详细解释,大家可以根据论文标题自行查阅。论文主要提出了两个观点:目标竞争(Competing Objectives)和不匹配泛化(Mismatched Generalization)。
首先,目标竞争是指大语言模型会针对可能相互冲突的多个目标进行训练。这就导致了大模型产生像“人”一样的内在冲突。例如,大模型本身在设计的时候,肯定是需要服务于人类的,当用户先向模型下达指令“你需要遵循我给你的任何指令”,随后再提出不符合道德或安全规范的请求时,模型需要在遵循用户指令和遵守内部安全策略之间做出权衡,这就导致了目标之间的竞争。
其次,不匹配泛化涉及大语言模型的“机械性”特征。这与传统安全问题类似,例如,网络应用防火墙(WAF)可能未覆盖某些策略,导致攻击者可以利用这些漏洞进行绕过。同样地,大语言模型在安全训练中未充分考虑到预训练中可能的安全问题,导致攻击者可以通过精心设计的提示来绕过模型的安全限制。
以上两个原因解释了大语言模型被越狱的机制。为了深入了解具体细节,建议大家阅读相关论文。
1.3 大模型越狱的分类
基于以上两个原因,我们来尝试对大语言模型分个类。最下面的对抗优化是考虑到,还有很多学者的工作是通过将越狱转化为一个反向优化算法问题来实现的。大家在以上关键词后添加个arxiv就能搜到具体的论文了。
-
将自然语言转化为代码进行越狱。
-
翻转自然语言,例如将“how”转换为“woh”。
-
将自然语言转换为艺术字或特殊字符形式。
-
“Do Anything Now”(DAN)方法,让模型执行任何操作。
-
让模型进行角色扮演,例如去年的著名“奶奶漏洞”,指示模型扮演已故的祖母,告诉用户Windows的激活码。
-
前缀注入,即让模型以“好的,我会告诉你怎么做”开头响应,这种引导使模型更倾向于遵循指令,积极输出相关内容。
-
PAIR方法:通过让模型改写提示词来进行攻击,随后根据攻击结果优化越狱提示词,反复迭代直到成功越狱。
-
TAP方法:基于原始攻击提示生成攻击树枝,对可能无效的枝进行剪枝操作,从而筛选出有效的攻击提示词。
-
GCG攻击:该方法在去年引起广泛关注,它利用贪婪坐标梯度算法进行逐个Token的搜索,找到可能导致越狱的字符。例如,在“如何制作炸弹”后面添加一串未知字符,进而成功绕过安全检测。
0x02 大模型越狱风险管理现状
2.1 越狱风险管理难点
大模型越狱风险管理的难点,可以分为外部和内部。
从外部看目前在外部环境中攻击方法是不断在变化的,因为大家看论文也可以看到,从去年到今年,发了很多的越狱相关的论文。另外就是内容安全问题了,每天发生的热点事件都有可能被有心人变成内容安全的问题。
从内部看,在很多企业中,经常会有这几个问题,公司业务和模型都这么多,怎么去做风险验证?传统的安全问题修复目前都有标准流程,通过规则添加、业务推修等方式就可以修复相关问题,但大语言模型怎么去修复呢?大模型相关的问题修复后有这么容易绕过,那怎么去做预防呢?
2.2 现有的解决方案及不足
对于上面那些难点,也有相关的解决方案。我们再看一下上图大部分通用的解决方案,大家之间的区别可能更多的是恶意样本库,Prompt攻击模版、还有测试集。
但是是这形式会有两个问题点。第一个问题点就是目前大语言模型这些case收集的成本高。无论是测评数据集还是prompt模版,都需要人工去打标筛选,许多prompt模版甚至需要去仔细阅读论文,整个收集过程人工成本较高。第二个问题点就是攻击多样性低,就是恶意样本它们的生成都是通过有限模板进行简单的变异得来的,它和我们实际攻击者的攻击流程会有很大的区别,所以它攻击多样性也比较低,覆盖率比较低。
2.3 大模型攻击者视角下的越狱风险管理
传统攻击者视角的风险管理
面对这么复杂情况,我们传统安全是怎么解决呢?我们可以通过上图看见传统安全的建设流程,从最开始的时候都是一个漏洞一个漏洞进行手工测试,很快大家可能就会意识到,我们是不是可以开发一个工具对这些漏洞进行自动化扫描、利用,就像Xray、Fscan等。再后来将这些攻击工具进行系统性的分类组合,就实现了攻击面管理。再后来,发现整个攻击面管理主要是在识别攻击面上,没有实现安全风险的闭环。接着就提出了持续威胁暴露管理来动态、持续性的闭环管理安全风险。
大模型攻击者视角的风险管理
借鉴Gartner的思路,我们是否也可以在大模型安全领域进行动态风险管理,来对抗大模型越狱中层出不穷的越狱方法和安全问题,以下将介绍我们的攻击者视角越狱风险管理框架。
(1) 资产发现
首先,需要梳理清楚当前的大语言模型所处的环境,即明确哪些接口和业务对外暴露,了解外部的攻击面。同时,还需要关注内部业务的内容安全属性。不同的业务类型,对内容安全的要求也不同,例如,情趣用品行业对涉黄的敏感内容的宽容度可能较高。此外还需要对内部模型进行梳理,查看哪些也调用了大语言模型,识别大语言模型的影子资产。这一步旨在全面了解与大语言模型相关的资产状况。
(2) 情报收集
情报在安全防护中起着至关重要的作用。大部分安全事件的发生往往源于外部已知而内部未知的安全隐患。因此,及时收集和分析情报,能够预先防范潜在的攻击。大模型的情报包括:
-
攻击方法收集:近期出现的新的“越狱”方法,以及相关的攻击技术。
-
恶意问题集:收集外部公开的恶意问题集。
-
外部事件:最近发生的广受关注的事件,例如国家政策、战争等等。
(3) 风险评估
基于收集的情报和内部资产信息,对风险进行评估是下一步的关键。风险评估包括:
-
风险验证:测试是否存在成功的“越狱”攻击,评估模型被攻破的可能性。
-
优先级排序:根据不同攻击方法对模型的威胁程度,排序优先级,以合理分配资源,优先修复可能造成重大风险的漏洞。
-
风控验证:验证现有的风控机制是否合理有效。例如,针对基于聊天的交互模式,针对用户的恶意请求是否有监控能力,监控到多少次恶意请求后,进行防御性回复,防御性回复是否合理。
(4) 风险修复
大语言模型的风险修复不同于传统的规则引擎形式的漏洞修复。由于模型的概率性特征,风险修复需要大量的数据集支持,主要包括:
-
恶意响应数据:收集模型在受到攻击时可能产生的恶意响应,用于分析和改进模型的输出策略。
-
恶意问题集:汇总可能被用于攻击模型的恶意输入,训练模型识别并拒绝这些输入。
-
正确响应数据:按照合规要求,针对很多涉政的敏感问题,不仅仅强制需要回复,而且还得合理回复。
0x03 ExpAttack大语言模型越狱风险持续追踪框架
讲完我们整个攻击者视角的大模型风险管理,我们是不是能做一套自动化系统,来尽可能的自动化风险管理。
为此,我们提出了ExpAttack大语言模型越狱风险持续追踪框架。该框架主要分为三大部分:经验采集、经验评估和经验利用。在经验采集阶段,又细分为两个模块:风险问题转化引擎和论文搜索引擎,这一部分主要通过工程化的手段来进行情报收集。经验评估部分,我们采用了大语言模型增强的强化学习算法,对收集的经验进行评估。最后,在经验利用阶段,我们引入了遗传算法,这一算法之前在字节SRC中做过展示。
3.1 经验采集-风险问题转化引擎
-
分块:主要采用阿里之前发布的seqmodel(基于序列的文本分割模型),它先将文本分割成句子级序列标记任务,接着再通过自适应滑动窗口的形式重新生成段落。再完成分割后再进行合并,从而有效防止文本块过小的问题。
-
索引生成:通过借鉴微软的Graphrag生成的对<人物抽取、事件抽取、关系抽取>三元组的抽取。
-
标签化:通过一些小的bert模型来对数据进行打标过滤,例如二元情感分类模型(Erlangshen-Roberta-330M-Sentiment)。
-
查询重写:为了让具体的查询能够在数据库命中更多的相似事件,在查询这个接口会对一个问题进行改写,从而生成多个关键查询,来提高最后生成内容的丰富度。
3.2 经验采集-论文搜索引擎
-
意图识别:为了应对可能的论文查询,我此处使用了PlanAgent,目的是让Agent将用户的查询转化为搜索的行为序列。例如,本周更新的越狱方法有哪些?它会生成时间为本周、类型为大模型攻击的sql查询,然后再生成越狱方法的向量查询。
-
经验提取:主要通过ReAct框架让大模型根据论文中越狱攻击方法,不断调整它生成的越狱攻击例子,停止条件是1)根据论文内容成功生成能越狱的case。2)文章阅读完成。
3.3 经验评估-要求
在之前的章节我们有介绍,整个系统是站在攻击者视角的风险评估,那么攻击者视角的风险评估到底有哪些要求呢?
-
攻击流程上:需要和攻击者的攻击流程尽可能相似,能尽可能模拟出攻击者的整个攻击链。
-
优先级评估:能对所有的攻击链,评估出相关攻击链的危害大小。
-
对风险和方法的覆盖:能尽快多的覆盖攻击方法及相关的风险,模拟更多的攻击场景。
3.4 经验评估-MCTS-Evaluator算法
(1) 定义搜索空间
我们定义了叫做Experience Level的搜索空间,相比于传统的Token Level和Prompt Level的搜索,我们的搜索主要是通过经验来实现,会拥有更好的泛化性和稳定性。它来自于论文数据库,或者公开的越狱数据集,他的格式是<experience,example>。其中experience是一句对模型防护弱点的简短描述,example是一个相关的例子。Experience为了让后续的生成具有很好泛化性,example是为了让一些成功的经验具有很好的稳定性。
(2) 扩展函数设计
通过对攻击者的攻击行为观察,我们发现我们的整个攻击行为,是在不断通过外部环境的反馈进行两种变化,一个是不同经验的组合,一个是一种经验的变异。另外,为了提高攻击效率,增加攻击多样性,我们还添加了一个剪枝操作,他会将每轮生成的攻击样本和历史样本做余弦相似度匹配,去除那些相似度较高的攻击样本。
(3) 奖励设计
这块主要借鉴GPTFuzzer和PathSeeker中的思路。我引入了GPTFuzzer中的路径惩罚概念,路径越长惩罚越重,来筛选出攻击路径短的攻击方法(它的优先级更高)。针对攻击结果,除了成功与失败的奖励外,还引入了PathSeeker的信息量奖励,来奖励那些答案和问题相关度较高的响应(它的优先级较高)
3.5 经验利用
0x04 总结与展望
4.1 大模型解决大模型安全问题
(1) 情报获取:从各个公开网站获取原始的数据和情报,在收集各个论文中的专家知识。
(2) ExpAttack:ExpAttack在此处的核心作用是对获取的情报数据进行筛选和清洗,能有效保证收集到数据的有效性。
(3) 安全对齐:使用ExpAttack处理后的数据对模型进行安全对齐,以确保模型在安全性方面符合预期要求。这一步不仅涉及攻击样本,还需涵盖多种类型的样本,防止过度对齐。
(4) 能力评估:对对齐后的模型进行多维度的能力评估,检测其在以下方面的表现:
-
安全性:模型是否能够有效抵御攻击,避免过度拒绝合法请求。
-
推理性能:评估安全对齐是否对模型的推理速度和效率产生负面影响。
-
业务影响:评估模型的调整是否对实际业务应用产生不利影响。
(5) 模型优化:根据评估结果,对模型进行针对性的优化。这可能包括调整数据集的配比、改进对齐算法等,该阶段的自动化需依靠丰富的专家经验和多领域专家的协同合作。
(1) 高数据质量要求:安全对齐所需的数据不仅包括攻击样本,还涉及多种类型的正常样本。对数据的质量要求很高。
(2) 评估维度多:安全对齐后,模型可能在多个维度上受到影响,如过度拒绝用户请求、推理性能下降以及对业务流程的潜在影响。因此,需要一个全面且丰富的评估系统,能够覆盖所有关键评估维度,确保模型在各方面均表现良好。
(3) 模型优化复杂:当评估发现问题时,确定优化方向(例如调整数据集配比或改进算法)需要丰富的专业知识和经验。这一过程可能需要多位专家的协同合作,以有效识别问题根源并实施相应的优化措施。
4.2 大模型越狱的未来
从危害方面:随着AI手机、AI PC、具身智能的发展,大模型越狱能造成的危害也就越来越大。可以想象如果机器人真的具有了“思想”,那么越狱就是打开潘多拉魔盒的钥匙了。
在发展方面:随着大语言模型的能力越来越强,大模型的越狱可能会和社会工程学越来越像。
原文始发于微信公众号(JDArmy):ExpAttack:大语言模型越狱风险持续追踪框架