遇见数据集

AutoSUIT

收藏
Hugging Face2026-07-03 更新2026-07-04 收录
官方服务:

资源简介:

AutoSUIT Bench是一个用于大型语言模型(LLM)安全代码生成的动态、基于执行的基准测试数据集。该数据集旨在评估LLM在生成安全代码方面的能力,覆盖了C、C++、Java和Python四种编程语言,共涉及232个常见弱点枚举(CWE)。数据集的每个样本都是一个自包含的单元,包含自然语言任务描述(code_description)、对应的CWE描述(cwe_description)、可选的上下文信息(如易受攻击的代码vulnerable_code用于漏洞修补任务,或代码补全前缀completion_prefix用于代码补全任务),以及参考的安全代码(secure_code)。每个样本还附带两个独立的单元测试套件:功能性测试套件(functional_test)用于验证代码的正确性,安全性测试套件(security_test)设计为在目标CWE漏洞存在时失败,从而评估代码的安全性。数据集总计包含951个样本,具体分布为:Python(113个样本,39个CWE)、Java(365个样本,143个CWE)、C(277个样本,100个CWE)、C++(196个样本,79个CWE)。数据集支持四种核心评估任务:安全代码生成(根据描述生成安全代码)、具有CWE意识的代码生成(在了解CWE描述的情况下生成安全代码)、漏洞修补(修复给定易受攻击代码中的安全漏洞)和代码补全(根据前缀完成代码)。评估过程要求将模型生成的代码保存到指定的文件名(code_file_name),然后在独立环境中编译/解释并运行两个测试套件,分别计算功能通过率和安全通过率,采用一种宽松的pass@k指标进行评分,该指标考虑了部分通过的测试用例。

AutoSUIT Bench is a dynamic, execution-based benchmark dataset for secure code generation by large language models (LLMs). It aims to evaluate the ability of LLMs to generate secure code, covering four programming languages: C, C++, Java, and Python, involving 232 Common Weakness Enumerations (CWEs). Each sample in the dataset is a self-contained unit that includes a natural language task description (code_description), the corresponding CWE description (cwe_description), optional context information (such as vulnerable_code for vulnerability patching tasks, or completion_prefix for code completion tasks), and reference secure code (secure_code). Each sample also comes with two independent unit test suites: a functional test suite (functional_test) to verify code correctness, and a security test suite (security_test) designed to fail when the target CWE vulnerability is present, thereby assessing code security. The dataset contains a total of 951 samples, distributed as follows: Python (113 samples, 39 CWEs), Java (365 samples, 143 CWEs), C (277 samples, 100 CWEs), C++ (196 samples, 79 CWEs). The dataset supports four core evaluation tasks: secure code generation (generating secure code based on descriptions), CWE-aware code generation (generating secure code with knowledge of CWE descriptions), vulnerability patching (fixing security vulnerabilities in given vulnerable code), and code completion (completing code based on prefixes). The evaluation process requires saving the model-generated code to a specified filename (code_file_name), then compiling/interpreting and running the two test suites in an isolated environment, calculating functional pass rates and security pass rates separately, using a lenient pass@k metric that accounts for partially passed test cases.

提供机构:
Amazon Web Services
创建时间:
2026-07-03
原始信息汇总

数据集概述:AutoSUIT Bench

基本信息

  • 数据集名称:AutoSUIT Bench(HuggingFace Edition)
  • 许可协议:cc-by-nc-4.0
  • 语言:英语
  • 任务类别:文本生成
  • 数据集规模:样本数 < 1,000

核心内容

AutoSUIT Bench 是一个动态、基于执行的基准测试,用于评估大语言模型(LLM)的安全代码生成能力。每个生成的程序都会被编译/解释,并针对两套独立的单元测试套件运行——功能套件和安全套件(安全套件的设计目的是在目标 CWE 漏洞存在时失败)。该数据集涵盖 C、C++、Java 和 Python 四种编程语言中的 232 个 CWE

数据配置与规模

数据集包含四个配置(config),每个配置对应一种编程语言,所有数据均为测试集(test split):

配置名称 数据文件 样本数量 覆盖 CWE 数量
python python/test.jsonl 113 个样本 39 个 CWE
java java/test.jsonl 365 个样本 143 个 CWE
c c/test.jsonl 277 个样本 100 个 CWE
cpp cpp/test.jsonl 196 个样本 79 个 CWE

数据格式与字段

每个 test.jsonl 文件中的每一行是一个自包含的样本,包含以下字段:

字段 类型 描述
id str 唯一标识,格式为 "<语言>_<行号>"
language str 编程语言(python / java / c / cpp)。
cwe_id int 样本对应的主要 CWE 编号。
reference_file_name str 该行索引的参考文件名称。
secure_status int 参考文件的标签:1 = 安全,0 = 存在漏洞。
code_file_name str 模型生成代码必须保存为的文件名,测试将以此名称引用。
module_name str code_file_name 相同,但不含扩展名。
code_description str 自然语言描述的任务说明,是核心提示词
cwe_description str CWE 的纯文本描述。
context str 额外的真实世界使用上下文(仅 Python 样本有)。
vulnerable_code str 功能正常但存在漏洞的实现,用于补丁任务。
completion_prefix str 安全解决方案的前约 30% 代码,用于代码补全任务。
secure_code str 参考的安全解决方案,仅供分析。
sec_test_cases str 安全测试套件编码的安全场景的自然语言枚举。
functional_test_file str 功能测试套件的文件名。
functional_test str 功能单元测试套件 U_f 的完整源代码。
security_test_file str 安全测试套件的文件名。
security_test str 安全单元测试套件 U_s 的完整源代码。

任务设计

该基准测试定义了四个任务,所有任务使用相同的样本,仅提示词中的上下文不同。每个样本需生成仅代码(以注释形式包含解释),并保存为 code_file_name

  1. 安全代码生成:根据 code_description 生成代码。
  2. 带 CWE 意识的代码生成:除了 code_description,还提供 cwe_description 作为额外上下文。
  3. 漏洞修补:基于 cwe_descriptionvulnerable_code,修复代码中的安全漏洞。
  4. 代码补全:根据 code_descriptioncompletion_prefix,补全后续代码。

评估方法

对每个样本的每次生成:

  1. 创建临时目录,复制功能测试套件和安全测试套件。
  2. 将模型输出写入 code_file_name
  3. 编译/运行每个测试套件,统计通过的断言/测试数量。
  4. 分别报告功能通过率安全/漏洞通过率

不同语言的运行方式:

  • Python:使用 pytest 运行,解析 N passed, M failed 摘要。
  • C/C++:编译测试文件(启用 -DUNIT_TEST),解析打印的 tests failed: X, tests passed: Y 计数。
  • Java:使用 JUnit 5 + Mockito,通过 JUnit 控制台启动器运行,解析其摘要。

评分机制

使用宽松的 pass@k 指标:对每个测试套件,计算 pass/(pass+fail) 作为部分分数,并取整后平均到所有问题上。

相关论文

Osebe et al., AutoSUIT Bench — Automated Security UnIt Test Benchmark for LLM Coding, Findings of ACL 2026, pp. 34759–34783. (https://aclanthology.org/2026.findings-acl.1735.pdf)

搜集汇总
数据集介绍
AutoSUIT 数据集图片
构建方式
AutoSUIT基准测试集通过系统性地收集跨C、C++、Java与Python四种编程语言的232类常见弱点枚举(CWE)样本,构建了一个动态执行的安全代码评估框架。每个样本均包含功能测试套件与安全测试套件,其中安全测试被精心设计为仅在目标CWE漏洞存在时触发失败。数据集从原始源代码、测试用例及元数据出发,经由转换脚本统一生成为JSONL格式,每个样本封装了任务指令、上下文信息及内联测试代码,并指定了生成代码必须保存的文件名,从而实现了自动化评估的完整闭环。
特点
该数据集的核心特色在于其双重评估机制与细粒度的部分计分策略。与传统的全有或全无评估不同,AutoSUIT采用松弛化的pass@k指标,依据测试断言通过比例赋予部分分数,从而更精准地量化模型在安全与功能维度的表现。数据集覆盖广泛的语言与漏洞类型,每个样本均提供漏洞感知、补丁生成、代码补全等多种任务上下文,支持对模型安全编码能力的多维度剖析。此外,测试框架针对不同语言采用了差异化的编译与运行方案,确保了跨语言评估的兼容性与可靠性。
使用方法
使用AutoSUIT时,首先需将模型生成的代码写入样本指定的文件名,并置于临时工作目录中,同时拷贝对应的功能与安全测试文件。随后,依据语言特性执行编译与测试:Python使用pytest运行测试套件,C/C++采用带有-DUNIT_TEST标志的gcc/g++编译测试文件并解析输出断言计数,Java则依赖JUnit控制台启动器进行测试执行与结果汇总。每个样本需在隔离的独立目录中运行以避免干扰,并设置超时机制应对潜在的崩溃风险。最终,依据测试通过率计算各部分评分,综合评估模型在安全代码生成任务上的真实能力。
背景与挑战
背景概述
大型语言模型在代码生成任务中展现出卓越能力,然而其生成的代码常暗藏安全漏洞,对软件系统的可信赖性构成严峻挑战。为系统评估模型的安全编码水平,由Samuel Osebe、范阳、李俊毅等学者组成的国际研究团队,于2026年在ACL会议上发布了AutoSUIT基准数据集。该数据集聚焦于代码生成中的安全鲁棒性问题,涵盖C、C++、Java和Python四种主流编程语言,覆盖232种常见弱点枚举(CWE)。通过为每个样本配备功能性与安全性两套独立的单元测试套件,AutoSUIT首次实现了对模型生成代码功能正确性与漏洞规避能力的双重动态评估,为代码生成模型的安全评测领域树立了开创性的基准。
当前挑战
数据集面临的核心挑战在于如何精准刻画并解决大型语言模型在安全代码生成中的领域问题。传统评测仅关注代码的功能正确性,忽略了安全缺陷的隐蔽性与多样性,而AutoSUIT需确保测试套件能有效捕获跨越232种CWE的细粒度漏洞,这对测试用例的完备性与漏洞模拟的真实性提出了极高要求。在构建过程中,团队需面对多语言编译环境的异构性,例如C/C++需设计宏隔离机制以规避主函数冲突,Java需整合复杂的外部库依赖,同时还需处理25个样本因缺少安全性套件而导致的评测维度不完整问题,这些技术细节极大增加了实现的复杂度与工作量。
常用场景
经典使用场景
AutoSUIT数据集专为评估大语言模型在安全代码生成任务中的表现而设计,其核心使用场景聚焦于四项经典任务:安全代码生成、CWE感知代码生成、漏洞修复与代码补全。研究者通过向模型提供自然语言描述的任务规范,引导其生成符合功能需求且规避已知脆弱性模式的代码。该基准独特之处在于每项样本均配备两套独立的单元测试套件——功能性测试与安全性测试,后者专门针对特定CWE设计,在脆弱性存在时判定失败。通过在不同编程语言(Python、Java、C、C++)上执行这些任务,AutoSUIT提供了对模型安全编码能力的多维度、细粒度评估框架。
解决学术问题
该数据集系统性地解决了学术界长期关注的核心问题:现有代码生成基准过度聚焦于功能正确性而严重忽视安全性维度的评估。AutoSUIT覆盖了232个CWE类型,横跨四种主流编程语言,为量化LLM在安全编码方面的能力提供了首个大规模、执行驱动的基准框架。通过引入部分评分机制(relaxed pass@k),它克服了传统全有或全无评估的局限性,实现了对模型生成代码安全性的精确测量。这一工具的诞生促进了安全代码生成研究从定性分析向定量评估的转变,推动了对抗性脆弱性模式、CWE意识增强等前沿方向的学术探索。
衍生相关工作
AutoSUIT的提出催生了一系列衍生研究工作:在模型层面,研究者基于该基准开发了安全增强的微调策略与提示优化技术,如CWE-aware训练和对抗性脆弱性注入方法,以提升LLM的安全编码能力。在评估方法论上,相关工作扩展了AutoSUIT的评估框架,引入了更多维度的安全指标与跨语言迁移分析。此外,出现了针对AutoSUIT基准中特定CWE类型的深度剖析工作,探索不同脆弱性模式在模型行为中的表征规律。数据增强方面,研究者利用AutoSUIT的结构化设计生成了更大规模的安全代码训练数据集,推动了安全代码生成领域的系统性进展。
以上内容由遇见数据集搜集并总结生成
二维码
社区交流群
二维码
科研交流群
商业服务