当前位置: 首页 > news >正文

实用指南:MoreFixes

实用指南:MoreFixes

2025-11-26 09:22  tlnshuju  阅读(0)  评论(0)    收藏  举报

MoreFixes数据集 2024.9

MoreFixes 数据集是通过增强的仓库发现方法,从多个开源项目中收集的大规模CVE(公共漏洞和暴露)修复数据集。它包含来自 7,238 个 GitHub 项目29,203 个唯一 CVE,这些 CVE 修复涉及 35,276 次唯一提交39,931 个修复补丁文件。这些数据为漏洞检测和软件安全研究提供了强大的支持,尤其是在软件修复过程的分析和自动化修复生成方面。

该数据集提供了一个丰富的结构化数据集,包含与每个 CVE 相关的修复提交的详细信息,修复后的代码变化,以及相关的仓库元数据等。通过这个数据集,研究人员可以深入分析漏洞修复的模式、趋势和修复的有效性,进而推动漏洞检测技术的发展。


数据集字段介绍

MoreFixes 数据集以关系型数据库的形式组织,包含多个表格,每个表格对应特定的抽象层次,以下是对各个表字段的详细介绍:

数据集字段描述表格

表名字段名字段描述
fixescve_idCVE 的 ID(例如:CVE-2022-1575)
repo_url修复提交所在的仓库 URL
hash提交的哈希值,用于唯一标识提交
score修复提交的评分(衡量修复质量)
fix_date修复提交的日期
commit_message提交消息
commitshash提交的哈希值
commit_date提交日期
author提交作者
message提交信息
file_changefile_change_id文件变化的唯一 ID
hash与提交相关联的哈希值
filename文件名
num_lines_added增加的行数
num_lines_deleted删除的行数
code_before修复前的代码
code_after修复后的代码
method_changemethod_change_id方法更改的唯一 ID
file_change_id文件变化 ID(与 file_change 表关联)
method_name方法名
num_lines_added添加的行数
num_lines_deleted删除的行数
code_before修复前的方法代码
code_after修复后的方法代码
cvecve_idCVE 的 ID
descriptionCVE 描述
cwe_idCWE(通用弱点枚举)ID
publish_dateCVE 发布日期
cwe_classificationcve_idCVE ID(与 cve 表关联)
cwe_idCWE 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_idcve 表 关联,使得用户可以通过该表了解每个 CVE 的漏洞类型。


总结

  • MoreFixes 数据集以 PostgreSQL 数据库格式存储,包含多个表格,每个表格记录不同层次的修复信息。

  • 通过表之间的 外键连接(例如,cve_idhash 等),这些表格可以协同工作,提供丰富的修复信息,支持复杂的查询和分析。

  • 核心表格fixes,它包含了 CVE 修复提交的关键数据。其他表格(如 file_changemethod_change)记录了具体的代码更改信息,通过提交的 哈希值fixes 关联。


如何使用数据集

  1. 下载数据集

    • 下载论文源代码
      https://github.com/JafarAkhondali/Morefixes

    • 下载数据集和补丁文件
      https://zenodo.org/records/13983082(包含 postgrescvedumper-2024-09-26.sqlcvedataset-patches.zip

  2. 恢复数据库

    • 下载并解压 postgrescvedumper-2024-09-26.sql 文件。

    • 使用 Docker 运行数据库:

      sudo docker-compose up -d
    • 默认的数据库凭证:

      • 用户名postgrescvedumper

      • 数据库名postgrescvedumper

      • 密码a42a18537d74c3b7e584c769152c3d

  3. 使用数据

    • 数据恢复后,您可以使用 SQL 查询来访问数据。例如,查询特定 CVE 的修复提交:

      SELECT * FROM fixes WHERE cve_id = 'CVE-2022-1575';
  4. 运行工具

    • 为了分析新提交的 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