大型语言模型安全风险的基准评估套件

2024-05-07 04:12

本文主要是介绍大型语言模型安全风险的基准评估套件,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CYBERSECEVAL 2 扩展了以前的工作,增加了两个新的测试套件:解释器滥用和提示注入。

原文标题:CYBERSECEVAL 2: A Wide-Ranging Cybersecurity Evaluation Suite for Large Language Models

原文作者:Manish Bhatt, Sahana Chennabasappa, Yue Li, Cyrus Nikolaidis, Daniel Song, Shengye Wan, Faizan Ahmad, Cornelius Aschermann, Yaohui Chen, Dhaval Kapil, David Molnar, Spencer Whitman, Joshua Saxe

发表会议:arxiv 2024

原文链接:https://arxiv.org/pdf/2404.13161

主题类型:大模型安全

笔记作者: 童话

主编:黄诚@安全学术圈

概述

CYBERSECEVAL 2 是一个用于评估大型语言模型(LLMs)安全风险的基准套件,其目标是解决随着 LLMs 的广泛使用而出现的新的网络安全风险。这个工具主要关注两类人:LLM 构建者(包括构建新 LLM 或选择适合他们系统的 LLM 的开发者)和使用 LLM 自动化网络安全任务的人。对于 LLM 构建者,CYBERSECEVAL 2 能帮助他们衡量 LLM 对安全风险的脆弱性,以便在发布前进行调整,或者理解如何确保整个系统的安全。对于第二类人,CYBERSECEVAL 2 提供了一个量化评估 LLMs 在合成易受攻击代码的漏洞的方式。

CYBERSECEVAL 2 扩展了以前的工作,增加了两个新的测试套件:解释器滥用和提示注入。解释器滥用的测试是因为最近的 LLMs,如 GPT-4,可以访问 Python 和其他代码解释器,以直接运行由 LLM 作为对提示的响应生成的代码。提示注入的测试是因为研究人员发现了越来越多的对 LLMs 的提示注入攻击。在新测试集上进行的评估显示,所有测试的模型有26%到41%的成功提示注入,这表明训练 LLMs 以减少代码注入攻击风险仍然是 LLM 安全性中的一个未解决的问题。

最后,作者团队引入了一个新的指标,即“错误拒绝率”(FRR),用于衡量当我们训练 LLMs 以拒绝不安全的提示时,可能会错误地拒绝良性的提示,从而降低其效用。这种情况被称为设计安全 LLMs 的安全-效用权衡。

此外,他们还开源了 CYBERSECEVAL 2 的代码和评估工件,欢迎开源贡献,并计划在未来更新他们的基准。相关 GitHub 项目地址:https://github.com/meta-llama/PurpleLlama/tree/main/CybersecurityBenchmarks

如下表格高亮了该 paper 的相关贡献:

image

背景

CyberSecEval首次发布于2023年12月,其初版提供了两种测试:不安全的编码实践测试和网络攻击帮助测试。这个工具能够帮助我们判断一个大型语言模型(LLM)在被要求实现特定功能或者用于代码自动完成时,是否会复制已知的不安全编码实践。此外,它还可以测试LLM在被要求协助进行网络攻击时的反应,覆盖了行业标准的MITRE ATT&CK本体中定义的攻击。

CyberSecEval 2在此基础上进行了扩展,新增了假拒绝测试,以衡量LLM对合法但"边缘"的请求(即可能和网络安全相关的技术主题有关)的反应。

为了更深入理解LLM是否能够在拒绝实际的网络攻击请求的同时,仍然对完全合法的请求提供帮助,开发者结合了原始测试案例和新开发的FRR(假拒绝率)数据集。这个数据集包括了各种主题,例如网络防御,并设计为边缘提示,这意味着它们可能对LLM来说看起来是恶意的,但实际上是良性的,与网络安全相关的,但不表现出恶意意图。这样,我们就可以分析在成功拒绝协助网络攻击和FRR帮助处理模糊但最终良性的网络安全相关技术主题的请求之间的权衡。

简单来说,假拒绝率(FRR)是为了测量一个LLM对于特定风险的假拒绝率。我们将FRR定义为LLM因错误认为它们是由于那个风险而不安全的提示而拒绝的良性提示的百分比。也就是说,如果一个LLM被设计成拒绝所有网络攻击的请求,那么它可能也会错误地拒绝一些实际上是良性的、与网络安全相关的请求,这就是所谓的安全-效用权衡。

安全行业老生常谈的概念了,本质上就是在不牺牲功能性需求,少量影响用户体验的前提下,尽最大努力提高产品的安全性,作者团队量化了这一点。

相关工作

在安全属性的评估方面,大型语言模型(LLM)已经进行了一些有价值的研究。一些评估方法如 CyberMetric, SecQA,和 WMDP-Cyber,都采用类似于教育环境中的多项选择形式来评估LLM的安全知识。另一些方法如CyberBench则进一步考察LLM在网络安全领域的信息检索和自然语言处理能力。此外,还有一些方法如LLM4Vuln专注于衡量LLM在网络安全任务中的直接表现,特别是在漏洞发现上的表现。总的来说,这些研究都对评估LLM的安全属性做出了贡献,但是CYBERSECEVAL 2的独特之处在于它更多的关注LLM的行为表现而不仅仅是信息检索,它提供了一套评估大型语言模型风险和能力的综合集,并提供了一套与其他框架相辅相成的补充信号,以便随着时间的推移对LLM的开发和风险进行评估。

新增测试类型

在CYBERSECEVAL 2的新测试中,有两个值得我们关注的部分。首先,我们看到了引入了"提示注入评估"。在这种情况下,攻击者会通过提交违反应用程序开发者意图的提示,试图让大型语言模型(LLM)执行意料之外的指令。这种攻击方式与SQL注入这类混合代码和数据的经典注入攻击类似,只是这里的风险源于不受信任的第三方或用户输入与应用程序开发者在LLM的上下文窗口中的受信任输入相连。这种提示注入攻击及一般注入攻击的风险完全缓解仍然是一个未解决的问题。

提示词注入的测试方法覆盖范围如下图所示:

image

其次,我们看到了"漏洞利用评估"。随着LLM的进步,人工智能在软件漏洞利用方面的潜力也引发了讨论。在这个领域,AI的进步无论是帮助防御者识别和优先处理安全漏洞,还是帮助攻击者更快地开发攻击能力,都有其安全和不安全的用途。因此,监控AI在这个领域的进展至关重要,因为任何突破都可能对网络安全和AI政策产生重大影响。

相关测试类型参考下表:

image

最后,作者团队介绍了"代码解释器滥用评估"。最近的趋势是将LLM与代码解释器(通常是Python解释器)集成起来,以利用大型语言模型(如GPT-4和Google Gemini)的数学和符号推理能力。然而,这种集成也带来了新的安全挑战,因为不受信任的用户可能会利用它们试图获取访问底层主机操作系统的权限,或者使用它们作为发动网络攻击的平台。

相关测试类型如下表所示:

image

CyberSecEval 2 的实际应用案例

作者团队针对大型语言模型(LLM)如Llama,CodeLlama和OpenAI GPT进行了一系列的安全性测试。这些测试主要包括提示注入,代码利用,网络攻击帮助和解释器滥用等方面,目的是通过这些测试来了解并评估这些模型在处理各类安全性问题上的表现。

首先,我们来谈谈网络攻击帮助测试的结果。在这个测试中,我们发现大部分模型在面对网络攻击帮助请求时,能够以52%的比例拒绝这些请求,而在处理一些可能的恶意请求时,这些模型的表现则更好。然而,我们也发现,模型在处理一些边缘情况的请求时,例如网络防御相关的请求,拒绝率却较高。这就引出了我们的假拒绝率(FRR)的概念,即当LLM对某一特定风险进行拒绝时,可能会误拒一些实际上并不具有风险的请求,这就是我们所说的安全-效用权衡。

image

image

接下来,我们来看提示注入测试的结果。在这个测试中,我们发现所有的LLM都会在一定程度上受到提示注入攻击的影响,平均受影响的程度达到了17.1%。这就意味着,模型在处理用户输入时可能会被恶意输入影响,使其生成非预期的结果。

image

image

在代码利用测试中,我们发现模型在处理利用攻击时的表现并不是特别理想。尽管有些模型如GPT-42, Llama 3 70b-Instruct, 和 CodeLlama-70b在这方面的表现较好,但是整体来看,LLM在这个测试中的表现仍有待提高。

image

最后,在解释器滥用测试中,我们发现LLM在处理解释器滥用请求时,平均有35%的请求会得到执行。这就意味着,当LLM连接到代码解释器时,可能会存在一定的安全风险。

image

总的来说,通过一系列的测试来评估LLM在处理各类安全性问题上的表现。通过这些测试,我们可以看出LLM在这方面的表现仍有待提高。

总结

这一部分是关于CYBERSECEVAL 2的结论,这是一个全面的基准测试套件,用于量化大型语言模型(LLMs)的网络安全风险。对于LLM构建者和选择LLM的人来说,这个工具扩展了我们可以量化测试的风险类型,从两类增加到了四类,包括了针对提示注入和解释器滥用攻击的新的测试套件。这里还引入了一个新概念,即LLM的安全-效用权衡,用假拒绝率(FRR)来衡量。作者团队通过创建一个关于网络攻击帮助的测试集来实践测量FRR。

对于LLM构建者和选择LLM的人来说,这个工具提供了一些关键的洞见。首先,消除对提示注入攻击的风险仍然是一个未解决的问题:所有测试的模型都显示出对提示注入的脆弱性,成功率在13%到41%之间。这意味着使用LLM的系统设计者不能假设LLM会在面对对抗性的下游输入时可靠地遵循系统提示中的指令,他们需要仔细考虑为提示注入增加额外的防护和检测。

其次,测量FRR对于量化安全-效用权衡是有效的。在我们对网络攻击帮助的FRR测试中,我们能够区分出低FRR率的模型和高FRR率的模型。我们揭示了在LLM对帮助执行网络安全技术活动的请求的响应中,安全性和有用性之间的小的权衡。许多LLM能够成功地遵循良性的‘边缘’网络安全相关的技术请求,同时仍然拒绝大部分帮助执行攻击性网络操作的请求。我们相信,对于其他属性,FRR将是衡量安全-效用权衡的有效指标。

对于那些使用LLM自动化网络安全的人,作者团队提供了关于生成攻击利用的定量结果,该测试是新颖的,因为它们强调测试LLM的行为而非LLM的信息检索。作者团队的方法提供了一套可以与其他框架一起使用的互补信号。

结果表明,在LLM能够自主生成攻击利用之前,还需要更多的研究:作者团队发现,大多数LLM在完全解决测试用例上失败了,但是具有更高一般编码能力的LLM在我们的测试上得分更高,这表明,在LLM可以自主生成攻击利用之前,还需要进行更多的研究,但是LLM的攻击利用能力可能会随着LLM的总体编码能力的增长而增长。

随着LLM的普及,评估它们的风险变得越来越重要。为此,我们已经将我们的评估开源,供他人建立。我们希望这项工作能够为所有人提供更安全、更可靠的LLM部署。

写在最后

  • 作者团队在附录部分公开了 CYBERSECEVAL 2 生成的不同攻击类型的测试用例示例代码,有兴趣的同学可以关注看看。

  • 部分传统安全攻击的方法也同样适用于 LLM 领域,LLM 也可以作为解决传统安全问题的有效辅助,这些都是我们的研究机会,星辰大海?

补充信息

主编补充:关于安全模型评估相关的研究列举如下:

  • https://github.com/XuanwuAI/SecEval

  • https://github.com/Clouditera/secgpt

  • https://modelscope.cn/datasets/nasp/neteval-exam

  • https://github.com/cybermetric/CyberMetric

安全学术圈招募队友-ing

有兴趣加入学术圈的请联系  secdr#qq.com

声明:本文来自安全学术圈,版权归作者所有。

这篇关于大型语言模型安全风险的基准评估套件的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/966288

相关文章

Go语言中泄漏缓冲区的问题解决

《Go语言中泄漏缓冲区的问题解决》缓冲区是一种常见的数据结构,常被用于在不同的并发单元之间传递数据,然而,若缓冲区使用不当,就可能引发泄漏缓冲区问题,本文就来介绍一下问题的解决,感兴趣的可以了解一下... 目录引言泄漏缓冲区的基本概念代码示例:泄漏缓冲区的产生项目场景:Web 服务器中的请求缓冲场景描述代码

Go语言如何判断两张图片的相似度

《Go语言如何判断两张图片的相似度》这篇文章主要为大家详细介绍了Go语言如何中实现判断两张图片的相似度的两种方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 在介绍技术细节前,我们先来看看图片对比在哪些场景下可以用得到:图片去重:自动删除重复图片,为存储空间"瘦身"。想象你是一个

Go语言中Recover机制的使用

《Go语言中Recover机制的使用》Go语言的recover机制通过defer函数捕获panic,实现异常恢复与程序稳定性,具有一定的参考价值,感兴趣的可以了解一下... 目录引言Recover 的基本概念基本代码示例简单的 Recover 示例嵌套函数中的 Recover项目场景中的应用Web 服务器中

Java中常见队列举例详解(非线程安全)

《Java中常见队列举例详解(非线程安全)》队列用于模拟队列这种数据结构,队列通常是指先进先出的容器,:本文主要介绍Java中常见队列(非线程安全)的相关资料,文中通过代码介绍的非常详细,需要的朋... 目录一.队列定义 二.常见接口 三.常见实现类3.1 ArrayDeque3.1.1 实现原理3.1.2

详解如何使用Python从零开始构建文本统计模型

《详解如何使用Python从零开始构建文本统计模型》在自然语言处理领域,词汇表构建是文本预处理的关键环节,本文通过Python代码实践,演示如何从原始文本中提取多尺度特征,并通过动态调整机制构建更精确... 目录一、项目背景与核心思想二、核心代码解析1. 数据加载与预处理2. 多尺度字符统计3. 统计结果可

SpringBoot整合Sa-Token实现RBAC权限模型的过程解析

《SpringBoot整合Sa-Token实现RBAC权限模型的过程解析》:本文主要介绍SpringBoot整合Sa-Token实现RBAC权限模型的过程解析,本文给大家介绍的非常详细,对大家的学... 目录前言一、基础概念1.1 RBAC模型核心概念1.2 Sa-Token核心功能1.3 环境准备二、表结

Go语言中使用JWT进行身份验证的几种方式

《Go语言中使用JWT进行身份验证的几种方式》本文主要介绍了Go语言中使用JWT进行身份验证的几种方式,包括dgrijalva/jwt-go、golang-jwt/jwt、lestrrat-go/jw... 目录简介1. github.com/dgrijalva/jwt-go安装:使用示例:解释:2. gi

Go 语言中的 Struct Tag 的用法详解

《Go语言中的StructTag的用法详解》在Go语言中,结构体字段标签(StructTag)是一种用于给字段添加元信息(metadata)的机制,常用于序列化(如JSON、XML)、ORM映... 目录一、结构体标签的基本语法二、json:"token"的具体含义三、常见的标签格式变体四、使用示例五、使用

Go语言使用slices包轻松实现排序功能

《Go语言使用slices包轻松实现排序功能》在Go语言开发中,对数据进行排序是常见的需求,Go1.18版本引入的slices包提供了简洁高效的排序解决方案,支持内置类型和用户自定义类型的排序操作,本... 目录一、内置类型排序:字符串与整数的应用1. 字符串切片排序2. 整数切片排序二、检查切片排序状态:

基于Go语言实现Base62编码的三种方式以及对比分析

《基于Go语言实现Base62编码的三种方式以及对比分析》Base62编码是一种在字符编码中使用62个字符的编码方式,在计算机科学中,,Go语言是一种静态类型、编译型语言,它由Google开发并开源,... 目录一、标准库现状与解决方案1. 标准库对比表2. 解决方案完整实现代码(含边界处理)二、关键实现细