SeCodePLT: A Unified Platform for Evaluating the Security of Code GenAI
作者: Yuzhou Nie, Zhun Wang, Yu Yang, Ruizhe Jiang, Yuheng Tang, Xander Davies, Yarin Gal, Bo Li, Wenbo Guo, Dawn Song
分类: cs.CR, cs.AI
发布日期: 2024-10-14 (更新: 2025-09-18)
备注: Accepted to NeurIPS D&B track 2025
💡 一句话要点
SeCodePLT:用于评估代码生成AI安全性的统一平台,解决现有基准的局限性。
🎯 匹配领域: 支柱九:具身大模型 (Embodied Foundation Models)
关键词: 代码生成AI 安全性评估 大语言模型 漏洞检测 动态分析
📋 核心要点
- 现有代码生成LLM安全评估基准在风险覆盖、评估方法和数据规模上存在局限性,难以全面评估模型安全性。
- 提出一种基于高质量种子样本和定向突变的通用基准构建框架,旨在平衡数据质量、基准规模和评估的全面性。
- 构建了包含5.9k样本的SeCodePLT数据集,覆盖44个CWE风险类别,并评估了主流代码LLM,揭示了其安全方面的优缺点。
📝 摘要(中文)
本文提出了一种通用且可扩展的基准构建框架,用于评估代码生成大语言模型(LLM)的安全风险和能力(例如,漏洞检测)。现有基准存在风险和能力覆盖范围有限、依赖静态评估指标(如LLM判断或基于规则的检测,缺乏动态分析的精确性)以及数据质量与基准规模之间的权衡等关键限制。该框架从手动验证的高质量种子示例开始,并通过有针对性的突变来扩展它们。该方法提供了一套全面的工件,使基准能够支持使用动态指标进行全面的风险评估和安全能力评估。通过结合专家见解和自动生成,实现了手动工作、数据质量和基准规模之间的平衡。将此框架应用于Python、C/C++和Java,构建了SeCodePLT,一个包含超过5.9k个样本的数据集,涵盖44个基于CWE的风险类别和三个安全能力。与最先进的基准相比,SeCodePLT提供了更广泛的覆盖范围、更高的数据保真度和更大的规模。使用SeCodePLT评估了领先的代码LLM和代理,揭示了它们在生成安全代码以及识别或修复漏洞方面的优势和劣势。
🔬 方法详解
问题定义:现有代码生成LLM的安全评估基准存在三个主要问题:一是风险和能力覆盖范围有限,无法全面评估模型的安全性;二是依赖静态评估指标,缺乏动态分析的精确性;三是数据质量和基准规模之间存在权衡,难以同时保证高质量和大规模。
核心思路:本文的核心思路是结合专家知识和自动化生成,构建一个高质量、大规模且覆盖全面的安全评估基准。通过人工验证的种子样本保证数据质量,通过定向突变扩展基准规模,并通过动态分析提供精确的评估结果。
技术框架:SeCodePLT的构建框架包含以下几个主要阶段:1) 人工构建高质量的种子样本,这些样本涵盖了常见的安全漏洞和风险;2) 使用定向突变技术,对种子样本进行修改和扩展,生成新的测试用例;3) 对生成的测试用例进行动态分析,验证其是否包含预期的安全漏洞;4) 将验证后的测试用例添加到基准数据集中。
关键创新:SeCodePLT的关键创新在于其基准构建方法,它结合了人工构建和自动化生成,既保证了数据质量,又实现了基准规模的扩展。此外,SeCodePLT还采用了动态分析技术,提供了更精确的安全评估结果。与现有方法相比,SeCodePLT在覆盖范围、数据质量和规模上都具有优势。
关键设计:定向突变策略是关键设计之一,它需要根据不同的漏洞类型设计不同的突变规则,以保证生成的测试用例能够有效地触发漏洞。动态分析工具的选择和配置也是关键,需要选择能够准确检测目标漏洞的工具,并进行合理的配置。
🖼️ 关键图片
📊 实验亮点
使用SeCodePLT评估了主流代码LLM和代理,结果表明,这些模型在生成安全代码和识别/修复漏洞方面存在明显的优缺点。SeCodePLT能够有效区分不同模型的安全性能,并揭示其潜在的安全风险。与现有基准相比,SeCodePLT提供了更全面、更精确的安全评估结果。
🎯 应用场景
SeCodePLT可用于评估和提升代码生成AI的安全性,帮助开发者构建更安全的软件系统。该基准可以应用于代码LLM的训练和评估,以及安全工具的开发和测试。未来,可以扩展SeCodePLT以支持更多编程语言和安全风险类型,并将其应用于更广泛的安全研究领域。
📄 摘要(原文)
Existing benchmarks for evaluating the security risks and capabilities (e.g., vulnerability detection) of code-generating large language models (LLMs) face several key limitations: (1) limited coverage of risk and capabilities; (2) reliance on static evaluation metrics such as LLM judgments or rule-based detection, which lack the precision of dynamic analysis; and (3) a trade-off between data quality and benchmark scale. To address these challenges, we introduce a general and scalable benchmark construction framework that begins with manually validated, high-quality seed examples and expands them via targeted mutations. Our approach provides a comprehensive suite of artifacts so the benchmark can support comprehensive risk assessment and security capability evaluation using dynamic metrics. By combining expert insights with automated generation, we strike a balance between manual effort, data quality, and benchmark scale. Applying this framework to Python, C/C++, and Java, we build SeCodePLT, a dataset of more than 5.9k samples spanning 44 CWE-based risk categories and three security capabilities. Compared with state-of-the-art benchmarks, SeCodePLT offers broader coverage, higher data fidelity, and substantially greater scale. We use SeCodePLT to evaluate leading code LLMs and agents, revealing their strengths and weaknesses in both generating secure code and identifying or fixing vulnerabilities.