SecRepoBench
收藏arXiv2025-04-30 更新2025-05-13 收录
下载链接:
http://arxiv.org/abs/2504.21205v1
下载链接
链接失效反馈官方服务:
资源简介:
SecRepoBench 是一个用于评估大型语言模型在真实世界代码库中生成安全代码的基准数据集。该数据集包含了来自27个C/C++代码库的318个代码生成任务,涵盖了15种常见弱点枚举(CWEs)。SecRepoBench 通过利用已知的安全漏洞构建任务,旨在评估LLMs生成安全代码的能力。它采用了动态测试方法来评估LLMs生成代码的正确性和安全性,为研究者提供了研究LLMs在真实世界代码生成中的能力提供了重要的数据资源。
SecRepoBench is a benchmark dataset for evaluating large language models' (LLMs') ability to generate secure code within real-world codebases. This dataset contains 318 code generation tasks sourced from 27 C/C++ code repositories, covering 15 common Common Weakness Enumerations (CWEs). Constructed using known security vulnerabilities, SecRepoBench is designed to assess the capability of LLMs to generate secure code. It adopts dynamic testing methods to evaluate the correctness and security of code generated by LLMs, providing researchers with a critical data resource for studying LLMs' performance in real-world code generation scenarios.
提供机构:
马里兰大学
创建时间:
2025-04-30
搜集汇总
数据集介绍

构建方式
SecRepoBench数据集的构建采用了多阶段筛选与验证流程,首先从ARVO漏洞数据库中提取5,000余个可复现的C/C++项目安全漏洞,通过严格过滤仅保留修改单个函数的漏洞修复提交。采用树遍历器(tree-sitter)定位补丁相关的最小抽象语法树节点,构建安全敏感的代码掩蔽区域,并通过语义保持的变量名变异策略缓解LLM记忆效应。每个任务均配备开发者编写的单元测试和OSS-Fuzz提供的动态安全测试用例,最终形成包含27个真实项目、涵盖15种CWE类型的318个代码生成任务。
特点
该数据集的核心特征体现在其真实性与复杂性两个维度:所有任务均源自GitHub热门仓库的实际漏洞修复提交,完整保留项目仓库上下文依赖关系;任务覆盖堆/栈缓冲区溢出、释放后使用等15种内存安全漏洞类型,其中54.4%为堆缓冲区溢出漏洞。与现有基准相比,SecRepoBench首次实现仓库级代码生成的动态安全测试,平均每个任务配备73项开发者编写的单元测试,且通过人工验证确保测试用例质量。实验表明,即使在相同提示工程下,模型在SecRepoBench上的secure-pass@1性能较SecCodePLT平均下降25.3个百分点。
使用方法
使用该数据集需遵循标准化评估协议:首先将目标函数中的安全敏感区域替换为掩码标记,提供包含5个相关函数的上下文(支持BM25、稠密检索和文件内检索三种模式)。评估时采用secure-pass@1指标,要求生成代码同时通过开发者单元测试和OSS-Fuzz安全测试。为验证模型抗记忆能力,所有输入函数均经过变量名变异处理。研究建议优先采用Claude 3.7等具备200K上下文窗口的模型,并配合安全策略提示词进行实验,但需注意提示工程在仓库级场景的效果较传统基准下降显著(平均提升仅1.6个百分点)。
背景与挑战
背景概述
SecRepoBench是由马里兰大学和Google DeepMind的研究团队于2025年推出的首个面向真实代码仓库的安全代码生成基准测试。该数据集包含318个代码生成任务,覆盖27个C/C++开源项目和15种常见弱点枚举(CWE)。作为首个在仓库级别评估大语言模型安全代码生成能力的基准,SecRepoBench通过利用真实漏洞补丁构建安全敏感场景,填补了现有基准测试在真实软件开发环境评估方面的空白。该数据集通过创新的语义保留代码变异策略解决了模型记忆训练数据的问题,并采用自动化方法评估生成代码的安全性和正确性,为提升LLMs在真实项目中的安全编码能力提供了重要研究基础。
当前挑战
SecRepoBench面临的核心挑战体现在两个方面:领域问题方面,现有基准测试主要评估自包含程序生成能力,而SecRepoBench需要解决在复杂仓库上下文中生成安全代码的难题,包括理解跨文件依赖、第三方库交互等上下文信息;构建过程方面,研究团队需要克服三大挑战:1)缺乏安全敏感的仓库级代码补全任务,2)避免模型直接记忆已知漏洞,3)开发可扩展的正确性和安全性自动化评估方法。此外,数据集还需平衡任务难度,确保补丁区域大小既能覆盖安全修改,又不会过度限制生成空间。
常用场景
经典使用场景
SecRepoBench作为首个专注于真实代码仓库安全性的基准测试,其经典使用场景在于评估大语言模型(LLM)在复杂代码库环境下生成安全代码的能力。通过构建318个基于27个C/C++真实项目的代码生成任务,覆盖15种常见弱点枚举(CWE),该数据集模拟了开发者在大型项目中修改安全敏感区域时的典型场景。例如,模型需在理解跨文件依赖、第三方库交互及项目上下文的基础上,为已移除漏洞补丁的代码区域生成安全补丁,同时避免因记忆训练数据而直接复制原有漏洞代码。
实际应用
该数据集的实际应用价值体现在软件开发生命周期的多个环节。在持续集成中,可评估AI编程助手生成代码的漏洞风险;在代码审查阶段,能测试模型检测跨文件安全问题的能力;对于安全关键系统(如操作系统、加密库)的维护,其仓库级测试框架可验证补丁生成工具的可靠性。例如,在FFmpeg等多媒体项目中,SecRepoBench的任务设计可帮助发现模型处理内存安全漏洞(如堆缓冲区溢出)时的系统性缺陷。
衍生相关工作
SecRepoBench催生了多个重要研究方向:基于其上下文检索需求,衍生出如REPOCod等仓库级代码补全基准的改进工作;其安全测试方法论影响了后续CodeGuard+等动态检测基准的设计;针对模型表现出的编译错误问题,促进了如EnIGMA等调试增强型LLM代理的发展。该数据集还推动了跨文件漏洞修复、记忆化防御等细分领域的研究,成为评估如Claude、GPT-4等模型安全编码能力的黄金标准。
以上内容由遇见数据集搜集并总结生成



