MoreFixes
MoreFixes数据集 2024.9
MoreFixes 数据集是通过增强的仓库发现方法,从多个开源项目中收集的大规模CVE(公共漏洞和暴露)修复数据集。它包含来自 7,238 个 GitHub 项目 的 29,203 个唯一 CVE,这些 CVE 修复涉及 35,276 次唯一提交 和 39,931 个修复补丁文件。这些数据为漏洞检测和软件安全研究提供了强大的支持,尤其是在软件修复过程的分析和自动化修复生成方面。
该数据集提供了一个丰富的结构化数据集,包含与每个 CVE 相关的修复提交的详细信息,修复后的代码变化,以及相关的仓库元数据等。通过这个数据集,研究人员可以深入分析漏洞修复的模式、趋势和修复的有效性,进而推动漏洞检测技术的发展。
数据集字段介绍

MoreFixes 数据集以关系型数据库的形式组织,包含多个表格,每个表格对应特定的抽象层次,以下是对各个表字段的详细介绍:
数据集字段描述表格
| 表名 | 字段名 | 字段描述 |
|---|---|---|
| fixes | cve_id | CVE 的 ID(例如:CVE-2022-1575) |
repo_url | 修复提交所在的仓库 URL | |
hash | 提交的哈希值,用于唯一标识提交 | |
score | 修复提交的评分(衡量修复质量) | |
fix_date | 修复提交的日期 | |
commit_message | 提交消息 | |
| commits | hash | 提交的哈希值 |
commit_date | 提交日期 | |
author | 提交作者 | |
message | 提交信息 | |
| file_change | file_change_id | 文件变化的唯一 ID |
hash | 与提交相关联的哈希值 | |
filename | 文件名 | |
num_lines_added | 增加的行数 | |
num_lines_deleted | 删除的行数 | |
code_before | 修复前的代码 | |
code_after | 修复后的代码 | |
| method_change | method_change_id | 方法更改的唯一 ID |
file_change_id | 文件变化 ID(与 file_change 表关联) | |
method_name | 方法名 | |
num_lines_added | 添加的行数 | |
num_lines_deleted | 删除的行数 | |
code_before | 修复前的方法代码 | |
code_after | 修复后的方法代码 | |
| cve | cve_id | CVE 的 ID |
description | CVE 描述 | |
cwe_id | CWE(通用弱点枚举)ID | |
publish_date | CVE 发布日期 | |
| cwe_classification | cve_id | CVE ID(与 cve 表关联) |
cwe_id | CWE ID(与 cve 表关联) |
数据库核心数据存储方法
在 MoreFixes 数据集中,核心数据主要存储在以下几个表格中:
-
fixes表:该表是数据集的核心,记录了每个 CVE 的修复提交,包括修复提交的 CVE ID、提交的 仓库 URL、提交的 哈希值、修复的 评分 等关键信息。 -
commits表:该表记录了所有修复提交的详细信息,包括 提交的哈希值、提交日期、作者 和 提交信息。 -
file_change表:该表记录了每个修复提交所涉及的文件修改,包括 文件名、添加和删除的行数、修复前后的代码差异。 -
method_change表:该表记录了每个修复提交中涉及的具体方法更改,包括 方法名、添加和删除的行数、修复前后的方法代码。 -
cve表:该表存储了 CVE 的详细信息,包括 CVE 描述、CWE ID 等。 -
cwe_classification表:该表记录了每个 CVE 对应的 CWE 分类,帮助进一步分析漏洞类型。
表之间的连接关系:
-
fixes表 是数据集的核心表,记录了每个 CVE 的修复提交。通过cve_id字段,fixes表 与commits表 连接,能够获取每个提交的详细信息。 -
file_change表 和method_change表 分别记录了与每个修复提交相关的文件和方法更改,这两个表与commits表 通过hash字段连接,确保每个提交的文件和方法更改信息能够准确地与提交记录关联。 -
cve表 提供了 CVE 的详细信息,和fixes表 通过cve_id进行关联,使得每个修复记录可以与对应的 CVE 信息进行匹配。 -
cwe_classification表 则进一步为每个 CVE 提供了 CWE 分类,通过cve_id与cve表 关联,使得用户可以通过该表了解每个 CVE 的漏洞类型。
总结:
-
MoreFixes 数据集以 PostgreSQL 数据库格式存储,包含多个表格,每个表格记录不同层次的修复信息。
-
通过表之间的 外键连接(例如,
cve_id和hash等),这些表格可以协同工作,提供丰富的修复信息,支持复杂的查询和分析。 -
核心表格 是
fixes表,它包含了 CVE 修复提交的关键数据。其他表格(如file_change和method_change)记录了具体的代码更改信息,通过提交的 哈希值 与fixes表 关联。
如何使用数据集
-
下载数据集:
-
下载论文源代码:
https://github.com/JafarAkhondali/Morefixes -
下载数据集和补丁文件:
https://zenodo.org/records/13983082(包含postgrescvedumper-2024-09-26.sql和cvedataset-patches.zip)
-
-
恢复数据库:
-
下载并解压
postgrescvedumper-2024-09-26.sql文件。 -
使用 Docker 运行数据库:
sudo docker-compose up -d -
默认的数据库凭证:
-
用户名:
postgrescvedumper -
数据库名:
postgrescvedumper -
密码:
a42a18537d74c3b7e584c769152c3d
-
-
-
使用数据:
-
数据恢复后,您可以使用 SQL 查询来访问数据。例如,查询特定 CVE 的修复提交:
SELECT * FROM fixes WHERE cve_id = 'CVE-2022-1575';
-
-
运行工具:
-
为了分析新提交的 CVE 修复数据,您可以运行如下命令来更新数据库并获取最新的修复数据:
bash Code/run.sh
-
以下是 MoreFixes 数据集相关的可复制链接:
-
论文链接:https://dl.acm.org/doi/abs/10.1145/3663533.3664036
-
GitHub 仓库链接:https://github.com/JafarAkhondali/Morefixes
-
Zenodo 仓库链接:https://zenodo.org/records/13983082
-
数据库表与字段详情:https://github.com/JafarAkhondali/Morefixes/blob/main/Doc/DataDictionary.md
