SecuCoGen
收藏arXiv2023-10-25 更新2024-08-06 收录
下载链接:
http://arxiv.org/abs/2310.16263v1
下载链接
链接失效反馈官方服务:
资源简介:
SecuCoGen数据集由华南理工大学创建,专注于Python编程语言中的安全代码生成。该数据集包含180个样本,覆盖了2023年CWE(常见漏洞枚举)列表中的21种最危险的软件弱点。每个样本包含六个属性,详细描述了漏洞类型、不安全代码、安全代码及其解释,旨在通过这些数据提升大型语言模型在代码生成中的安全性,解决现有模型在生成代码时忽视安全性的问题。数据集的应用领域主要集中在提升软件工程中的代码安全性,确保生成的代码不仅功能正确,而且安全可靠,避免潜在的安全漏洞和攻击。
The SecuCoGen dataset, created by South China University of Technology, focuses on secure code generation for the Python programming language. It contains 180 samples covering 21 of the most dangerous software weaknesses listed in the 2023 CWE (Common Weakness Enumeration) list. Each sample includes six attributes that elaborate on the vulnerability type, insecure code, secure code, and their respective explanations. The dataset aims to enhance the security performance of large language models (LLMs) in code generation, addressing the issue that existing models often overlook security considerations during code generation. Its primary application areas center on improving code security in software engineering, ensuring that the generated code is not only functionally correct but also secure and reliable, thereby avoiding potential security vulnerabilities and attacks.
提供机构:
华南理工大学, 中国创建时间:
2023-10-25
搜集汇总
数据集介绍

构建方式
SecuCoGen数据集的构建采用了一种半自动化的方法,巧妙结合了大型语言模型的能力与人工精细筛选的严谨性。研究团队首先利用ChatGPT生成涵盖21种关键脆弱性类型(源自2023年CWE Top 25列表)的初始数据样本,每种类型包含10个实例,总计180个样本。随后,六位专注于软件工程的博士生和硕士生被分配至不同脆弱性类型,负责对生成的每条记录进行五步人工校验,确保问题描述的清晰度、不安全代码的脆弱性准确性、安全代码的修复有效性、CWE感知问题描述的强调性以及输入输出示例的正确性。最终,额外两位硕士生对所有数据进行全面审查、清洗并添加唯一标识符,从而构建出包含ID、问题、不安全代码、不安全代码解释、安全代码及CWE感知问题六个属性的高质量数据集。
特点
SecuCoGen数据集的核心特色在于其针对软件安全领域的精细化设计与多维度信息覆盖。与现有数据集相比,它不仅涵盖了2023年CWE Top 25中适用于Python的21种关键脆弱性类型,还通过每个实例的六个属性提供了丰富的上下文信息,包括问题描述、不安全代码示例、脆弱性解释、修复后的安全代码以及增强安全意识的CWE感知问题。这种结构使得数据集能够同时支持代码生成、代码修复和脆弱性分类三项关键任务,为评估大语言模型在安全感知方面的能力提供了全面基准。此外,数据集中的问题设计具有中等复杂度,并包含输入输出示例,确保了评估的真实性与挑战性。
使用方法
SecuCoGen数据集的使用方法灵活多样,主要围绕三项核心任务展开。在代码生成任务中,研究者可直接使用'问题'属性作为输入,评估模型生成代码的安全性;或采用'CWE感知问题'属性,测试安全提示对生成结果的影响。代码修复任务则通过提供'不安全代码'及可选的'不安全代码解释'属性,考察模型修复脆弱性的能力。脆弱性分类任务分为二元检测与多类型预测两个子任务,利用'不安全代码'和'安全代码'属性评估模型的分类性能。研究者可根据实验设计,选择不同属性组合,并采用CodeBLEU和SEC@k等指标进行量化评估,从而深入分析大语言模型在安全代码生成中的表现与局限。
背景与挑战
背景概述
随着大语言模型在代码生成领域取得突破性进展,诸如GitHub Copilot等工具已为数百万开发者提供了自动化编程支持。然而,这些模型通常基于来自开源仓库的未经验证数据进行训练,导致其生成的代码可能潜藏安全漏洞。2022年开源安全与风险分析报告指出,81%的受检代码库包含至少一个漏洞,这凸显了代码生成安全性的严峻挑战。在此背景下,华南理工大学与因斯布鲁克大学的研究团队于2023年创建了SecuCoGen数据集。该数据集聚焦于2023年CWE Top 25中最危险的21种漏洞类型,包含180个精心标注的样本,为评估大语言模型在代码生成、修复及漏洞分类任务中的安全性能提供了标准化基准。SecuCoGen的提出填补了现有代码生成数据集缺乏安全视角的空白,对推动可信赖人工智能编程实践具有重要影响。
当前挑战
SecuCoGen所应对的核心挑战在于大语言模型在代码生成过程中对安全性的忽视。实验表明,现有模型如InCoder、CodeGen及StarCoder在直接生成代码时,SEC@1得分普遍低于0.2,即超过80%的生成代码存在安全隐患。具体而言,CWE-787(越界写入)、CWE-125(越界读取)等内存类漏洞,以及CWE-79(跨站脚本)等输入处理类漏洞,对模型构成了尤为严峻的考验。在数据集构建层面,挑战在于缺乏同时包含问题描述、不安全代码、安全代码及漏洞解释的多维标注数据。研究团队采用半自动化方法,借助ChatGPT生成初始样本,再经6名博士生和硕士生进行五步人工校验,包括确保问题清晰度、漏洞准确性、修复有效性及输入输出正确性,最终还需额外2名硕士生进行全面核查与清洗,这一复杂流程保证了数据集的高质量与可靠性。
常用场景
经典使用场景
在软件安全领域,SecuCoGen数据集的核心价值在于为大型语言模型(LLMs)的代码生成任务提供一个聚焦于21种关键脆弱性类型的安全评估基准。研究者通常利用该数据集中的“Problem”属性作为输入,要求模型生成相应的代码片段,随后通过对比模型输出与数据集中预定义的“Secure Code”及“Insecure Code”,来量化模型在生成过程中对安全风险的忽视程度。这一场景尤其适用于衡量如GPT-3.5、StarCoder等前沿模型在无额外安全提示下的脆弱性倾向,从而揭示其内在的安全缺陷。
衍生相关工作
SecuCoGen的发布催生了一系列衍生研究,例如基于其“CWE-aware”提示策略的1-shot学习框架,该框架显著提升了GPT-3.5在生成安全代码时的SEC@2指标。此外,有学者借鉴其数据构建方法,扩展了覆盖Java和JavaScript的多语言安全数据集。在模型层面,受其揭示的脆弱性分类挑战启发,研究者提出了融合代码结构信息的注意力增强机制,以改善对CWE-787等复杂类型的检测精度。这些工作共同推动了LLMs从被动生成向主动防御的演进。
数据集最近研究
最新研究方向
当前,随着大语言模型在代码生成领域展现出卓越能力,其安全性问题成为软件工程界关注的焦点。SecuCoGen数据集应运而生,聚焦于21种关键漏洞类型,系统性地评估并提升模型在代码生成、代码修复与漏洞分类任务中的安全表现。该研究不仅揭示了现有模型在生成安全代码方面的显著不足,更提出了通过CWE感知提示与少样本学习等策略来有效缓解漏洞风险。这一前沿方向紧密关联着AI辅助编程工具(如GitHub Copilot)在真实开发场景中的安全部署挑战,其意义在于推动构建更可信、更鲁棒的智能代码生成系统,为软件供应链安全提供坚实的评测基准与改进路径。
相关研究论文
- 1Enhancing Large Language Models for Secure Code Generation: A Dataset-driven Study on Vulnerability Mitigation华南理工大学, 中国 · 2023年
以上内容由遇见数据集搜集并总结生成



