Skip to main content
QUICK REVIEW

[论文解读] A ground-truth dataset of real security patches

Sofia Reis, Rui Abreu|arXiv (Cornell University)|Oct 18, 2021
Web Application Security Vulnerabilities参考文献 18被引用 7
一句话总结

本论文提出一个大规模的真实世界漏洞相关提交数据集,包含8,057个真实安全补丁(相当于5,942个安全补丁),覆盖20种编程语言和146种CWE类型,来自1,339个开源项目。通过整合并扩充CVE Details、Secbench、Pontas等人以及Big-Vul的数据,作者提供了自然语言文本(提交信息、注释、摘要)、代码变更、元数据以及可下载的代码库,同时还提供了11万条非安全提交的负样本集,支持漏洞检测、补丁分析及安全领域自然语言处理的研究。

ABSTRACT

Training machine learning approaches for vulnerability identification and producing reliable tools to assist developers in implementing quality software -- free of vulnerabilities -- is challenging due to the lack of large datasets and real data. Researchers have been looking at these issues and building datasets. However, these datasets usually miss natural language artifacts and programming language diversity. We scraped the entire CVE details database for GitHub references and augmented the data with 3 security-related datasets. We used the data to create a ground-truth dataset of natural language artifacts (such as commit messages, commits comments, and summaries), meta-data and code changes. Our dataset integrates a total of 8057 security-relevant commits -- the equivalent to 5942 security patches -- from 1339 different projects spanning 146 different types of vulnerabilities and 20 languages. A dataset of 110k non-security-related commits is also provided. Data and scripts are all available on GitHub. Data is stored in a .CSV file. Codebases can be downloaded using our scripts. Our dataset is a valuable asset to answer research questions on different topics such as the identification of security-relevant information using NLP models; software engineering and security best practices; and, vulnerability detection and patching; and, security program analysis.

研究动机与目标

  • 为解决漏洞检测与补丁生成领域中缺乏大规模真实世界数据集的问题,以支持机器学习模型的训练与评估。
  • 克服现有数据集的局限性,如缺少自然语言文本、编程语言种类有限,以及缺乏对代码库的访问。
  • 提供一个统一、清洗并扩展后的安全相关提交数据集,包含丰富的元数据、自然语言内容与代码变更。
  • 通过一个可复现、开源的数据集,支持软件工程最佳实践、安全补丁影响分析及自动化漏洞检测的研究。

提出的方法

  • 通过按年份爬取整个CVE Details数据库,提取包含GitHub提交引用的CVE元数据。
  • 通过三个外部数据集(Secbench、Pontas等人、Big-Vul)进行数据增强,以丰富漏洞与补丁信息。
  • 利用收集到的提交URL,从GitHub中提取详细的提交元数据(信息、作者、日期、注释、文件变更、差异、父提交等)。
  • 进行数据清洗与去重,包括删除重复条目,并过滤掉在补丁版本之前推进的分支。
  • 基于每个提交中文件扩展名对编程语言进行分类,错误率低于5%。
  • 构建一个包含110,161条非安全相关提交的负样本数据集,用于监督式机器学习任务。

实验结果

研究问题

  • RQ1自然语言文本(如提交信息和注释)能否被可靠提取并用于训练模型以识别安全相关提交?
  • RQ2在真实世界的开源项目中,安全补丁在不同编程语言和漏洞类型(CWE)之间有何差异?
  • RQ3开发人员在提交信息和代码变更中遵循软件工程与安全最佳实践的程度如何?
  • RQ4所提出的数据集在提升机器学习模型在漏洞检测与补丁生成任务中的性能与泛化能力方面,是否具有改善作用?
  • RQ5真实世界安全补丁的结构与语言特征是什么?它们与非安全提交有何不同?

主要发现

  • 该数据集包含来自1,339个独立项目的8,057个安全相关提交,代表5,942个唯一的安全补丁。
  • 这些提交覆盖146种不同的CWE类型和20种编程语言,显著扩展了现有数据集的多样性。
  • 数据集包含全面的自然语言文本(CVE摘要、提交信息、开发者注释),支持自然语言处理相关研究。
  • 可通过提供的脚本下载代码变更与完整代码库,支持细粒度程序分析。
  • 提供了110,161条非安全相关提交的负样本数据集,以支持监督学习与模型评估。
  • 该数据集已公开发布于GitHub,提供完整的工具链以实现数据访问、扩展与可复现性。

更好的研究,从现在开始

从阅读论文到最终审阅,大幅缩短您的研究时间。

无需绑定信用卡

本解读由 AI 生成,并经人工编辑审核。