SecEval:评估基础模型在网络安全知识上的全面基准测试

April 3, 2024 · View on GitHub

English

随着大型语言模型的出现,为网络安全行业带来了变革性的时代。在网络安全知识问答、漏洞挖掘和告警研判等领域,人们正在开发、部署和使用大模型应用。各种研究表明,LLMs主要在预训练阶段获取知识,而微调基本上是为了使模型与用户意图对齐,提供遵循指令的能力。这表明基础模型中的知识和技能对模型在特定下游任务上的潜力有着重要影响。

然而,在现有评估数据集中缺乏对网络安全知识的专门性评估。我们通过引入“SecEval”来解决这个问题。SecEval是首个专门为评估基础模型中的网络安全知识而创建的基准测试。它提供了超过2000个多项选择题,覆盖9个领域:软件安全、应用程序安全、系统安全、网络安全、密码学、内存安全、网络安全和渗透测试。

SecEval通过向OpenAI GPT4提供权威来源的数据来生成相应问题,如开放许可的教科书、官方文档和行业指导方针与标准,来生成问题。生成过程经过精心设计,以确保数据集满足严格的质量、多样性和公正性标准。您可以在探索页面上探索我们的数据集。

使用SecEval,我们对10种最先进的基础模型进行了评估,为它们在网络安全领域的表现提供了新的见解。结果表明,在LLMs在网络安全领域还有很长的路要走。我们希望SecEval能够成为未来在这一领域研究的催化剂。

目录

Leaderboard

#ModelCreatorAccessSubmission DateSystem SecurityApplication SecurityPenTestMemory SafetyNetwork SecurityWeb SecurityVulnerabilitySoftware SecurityCryptographyOverall
1gpt-4-turboOpenAIAPI, Web2023-12-2073.6175.2580.0070.8375.6582.1576.0573.2864.2979.07
2gpt-35-turboOpenAIAPI, Web2023-12-2059.1557.1872.0043.7560.8763.0060.1858.1935.7162.09
3Yi-6B01-AIWeight2023-12-2050.6148.8969.2635.4256.5254.9849.4045.6935.7153.57
4Orca-2-7bMicrosoftWeight2023-12-2046.7647.0360.8431.2549.1355.6350.0052.1614.2951.60
5Mistral-7B-v0.1MistralaiWeight2023-12-2040.1938.3753.4733.3336.5246.5742.2243.1028.5743.65
6chatglm3-6b-baseTHUDMWeight2023-12-2039.7237.2557.4731.2543.0441.1437.4339.6628.5741.58
7Aquila2-7BBAAIWeight2023-12-2034.8436.0147.1622.9232.1742.0438.0236.217.1438.29
8Qwen-7BAlibabaWeight2023-12-2028.9228.8441.4718.7529.5733.2531.7430.1714.2931.37
9internlm-7bSensetimeWeight2023-12-2025.9225.8736.2125.0027.8332.8629.3434.057.1430.29
10Llama-2-7b-hfMetaAIWeight2023-12-2020.9418.6926.1116.6714.3522.7721.5620.2621.4322.15

数据集

格式

数据集采用json格式。每个问题包含以下字段:

  • id: str # 每个问题的唯一id
  • source: str # 问题来源
  • question: str # 问题描述
  • choices: List[str] # 问题的选项
  • answer: str # 问题的答案
  • topics: List[QuestionTopic] # 问题的主题,每个问题可以有多个主题。
  • keyword: str # 问题的关键词

问题分布

主题问题数量
系统安全1065
应用安全808
渗透测试475
内存安全48
网络安全230
网络安全773
漏洞334
软件安全232
密码学14
总体2126

下载

您可以通过运行以下命令下载json文件的数据集。

wget https://huggingface.co/datasets/XuanwuAI/SecEval/blob/main/problems.json

或者您可以从Huggingface加载数据集。

在SecEval上评估您的模型

您可以使用我们的评估脚本来在SecEval数据集上评估您的模型。

数据集生成方法

数据收集

  • 教科书:我们从加州大学伯克利分校的计算机安全课程 CS161 和麻省理工学院的 6.858 选取了开放许可的教科书。这些资源提供了关于网络安全、内存安全、网页安全和密码学的广泛信息。

  • 官方文档:我们使用了如苹果平台安全、安卓安全和 Windows 安全等官方文档,以整合这些平台特有的系统安全和应用安全知识。

  • 工业指南:为了包含网络安全,我们参考了 Mozilla 网络安全指南。此外,我们还使用了 OWASP 网络安全测试指南(WSTG)和 OWASP 移动应用安全测试指南(MASTG),以获得网络和应用安全测试的洞见。

  • 工业标准:我们使用了CWE来解决对漏洞的认知问题。对于渗透测试,我们纳入了 MITRE ATT&CK 和 MITRE D3fend 框架。

生成评估问题

为了便于评估过程,我们设计了一个多项选择题的数据集格式。我们的问题生成方法包括几个步骤:

  1. 文本解析:我们首先根据文本的层次结构进行解析,例如教科书的章节,或诸如ATT&CK这样的框架的战略和技术。

  2. 内容抽样:对于内容丰富的文本,如CWE或Windows安全文档,我们采用抽样策略以保持可管理性。例如,我们从CWE中选择了25种最常见的弱点类型和175种随机类型。

  3. 问题生成:利用GPT-4基于解析后的文本生成多项选择题并根据文本的特性调整送入GPT参考文本的粒度。例如,CS161教科书的问题是基于各个章节的,而来自ATT&CK的则是基于技术的。

  4. 问题完善:然后我们指导GPT-4识别并过滤出问题,比如过于简单或不完整的问题。在可能的情况下,我们会尝试将问题修正;否则,它们将被丢弃。

  5. 答案校准:我们通过向GPT-4提供问题和产生问题的源文本来再次生成答案。如果GPT-4生成的响应与之前问题生成阶段确定的答案不一致,则表明,对于这道题目,获得一致答案本身具有挑战性。在这种情况下,我们选择淘汰这些问题。

  6. 分类:最后,我们将问题分为9个主题,并为每个问题附上相关的细粒度关键词。

局限性

当前数据集存在一定的局限性:

  1. 分布不平衡:数据集在不同领域的问题分布不均,导致某些区域的问题集中度较高,而其他区域则较少。

  2. 主题覆盖范围不完整:数据集中缺少一些网络安全主题,如内容安全、逆向工程和恶意软件分析。因此,它并未涵盖该领域内的全部知识范围。

未来工作

  1. 分布上的改进:我们旨在通过增加更多问题来提高数据集的全面性,从而丰富现有网络安全主题的覆盖范围。

  2. 主题覆盖上的改进:我们将努力在数据集中包含更广泛的网络安全主题,这将有助于实现各个领域问题分布的更公平分配。

许可证

数据集在 CC BY-NC-SA 4.0 许可证下发布。代码在 MIT 许可证下发布。

引用

@misc{li2023seceval,
    title={SecEval: A Comprehensive Benchmark for Evaluating Cybersecurity Knowledge of Foundation Models},
    author={Li, Guancheng and Li, Yifeng and Wang Guannan and Yang, Haoyu and Yu, Yang},
    publisher = {GitHub},
    howpublished= "https://github.com/XuanwuAI/SecEval",
    year={2023}
}

致谢

这项工作是在腾讯安全玄武实验室的支持下完成的,并获得了腾讯星火计划的帮助。