five

CrossCommitVuln-Bench

收藏
arXiv2026-04-24 更新2026-04-25 收录
下载链接:
https://github.com/motornomad/crosscommitvuln-bench
下载链接
链接失效反馈
官方服务:
资源简介:
CrossCommitVuln-Bench是由独立研究员Arunabh Majumdar构建的Python漏洞基准数据集,包含15个真实世界的多提交漏洞链。该数据集通过手动标注每个CVE的贡献提交链、漏洞成因及静态分析工具的检测结果,揭示了87%的漏洞链在单提交扫描模式下无法被检测的关键现象。数据来源于GitHub安全公告数据库,经严格筛选确保每个漏洞需由多个看似良性的提交共同触发。该数据集主要用于评估跨提交漏洞检测工具,推动持续集成系统中安全状态持久化技术的研究。

CrossCommitVuln-Bench is a Python vulnerability benchmark dataset developed by independent researcher Arunabh Majumdar, which contains 15 real-world multi-commit vulnerability chains. For each CVE, this dataset manually annotates its contributing commit chains, root causes of vulnerabilities, and detection results of static analysis tools, uncovering a critical finding that 87% of these vulnerability chains cannot be detected via single-commit scanning mode. The dataset is sourced from the GitHub Security Advisory Database, with rigorous screening conducted to ensure that each vulnerability can only be triggered by multiple seemingly benign commits. This dataset is primarily used to evaluate cross-commit vulnerability detection tools, and advance the research on security state persistence technologies in continuous integration systems.
提供机构:
独立研究员
创建时间:
2026-04-24
原始信息汇总

数据集概述

CrossCommitVuln-Bench 是一个精心策划的基准数据集,包含15个真实世界的Python CVE(通用漏洞与暴露)案例。这些案例的共同特点是:漏洞的可利用条件是在多个提交中被引入的——每个单独提交对单次提交的静态分析(SAST)来说是良性的,但合并起来则会构成严重的安全问题。

核心发现

数据集揭示了CI/CD流水线中一个关键的安全分析盲区:SAST工具对每个提交进行独立分析。当提交A添加了一个未经验证的输入源,而提交B(数周或数月后)将其连接到一个危险函数时,单独的任何一次提交都不会触发SAST警报。这种漏洞链只有在跨提交的状态分析中才会显现。

基线测试结果(使用 Semgrep 1.154.0 和 Bandit 1.9.4):

指标 结果
CCDR(单提交检测率) 13%(2/15)
CDR(累积检测率) 27%(4/15)
检测缺口 13%

研究显示,87%的漏洞链对于单次提交的SAST完全不可见。更关键的是,两个被检测到的案例在质量上也很差:一个是在被标记为安全修复的提交上发出警报(开发者通常会忽略此类警报),另一个仅检测到次要组件而完全错过了主要漏洞。实际有效的CCDR约等于0%。

数据集内容

数据集包含15个已注释的CVE和6个负面示例(已排除并附有记录理由)。关键统计数据:

  • 严重性分布:9个严重,6个高
  • 提交跨度:21天至1,342天(平均245天)
  • 所有15个仓库均为开源项目,拥有完整的提交历史

CVE列表

CVE编号 仓库 CWE分类 严重程度 提交跨度
CVE-2025-10155 CWE-20/693 Critical
CVE-2025-10283 BBOT CWE-22 Critical 195天
CVE-2025-46724 CWE-94 Critical
CVE-2025-5120 CWE-94 Critical
CVE-2025-55449 CWE-345/798 Critical
CVE-2025-61622 CWE-502 Critical
CVE-2026-22584 CWE-94 Critical
CVE-2026-2472 CWE-79 High
CVE-2026-25505 bambuddy CWE-306/321 Critical
CVE-2026-27602 Modoboa CWE-78 High 313天
CVE-2026-27825 CWE-22/73 Critical
CVE-2026-28490 Authlib CWE-203/327 High 1,342天
CVE-2026-29065 CWE-22 High
CVE-2026-32247 Graphiti CWE-943 High 25天
CVE-2026-33154 dynaconf CWE-94/1336 High 143天

数据目录结构

每个CVE目录包含:

  • annotation.json:贡献提交、漏洞链推理、单次提交SAST结果
  • reproduction.md:逐步的检出和验证说明

整体仓库结构包括:

  • dataset/:数据集本体
  • scripts/:挖掘、分析、基线运行和验证脚本
  • results/:最终指标和结果表
  • paper/:配套论文(LaTeX格式)
  • DATASHEET.md:完整的数据集文档(遵循Gebru等人模板)

注释模式

每个CVE的注释JSON包含:CVE编号、CWE编号、严重性、贡献提交列表(每个提交包含哈希、日期、角色、孤立的严重性、SAST发现和是否被标记)、漏洞链描述、SAST为何遗漏的解释、提交跨度天数、以及CCDR/CDR评估结果。

运行基线测试

需要Python 3.10+、Semgrep和Bandit。可使用提供的脚本对单个CVE或全部CVE运行基线分析,并重新计算汇总指标。

配套工具

POSTURA 是一个基于图的跨提交安全分析系统,能够在提交之间维护持久的Neo4j威胁图。在数据集的5个CVE子集上,POSTURA使用污点分析和链发现规则检测到了60%的漏洞(3/5),而单提交SAST在同一组CVE上的CCDR为0%。

许可证

  • 数据集注释:CC-BY-4.0
  • 脚本:MIT
  • 外部仓库保留其自身许可证
搜集汇总
数据集介绍
main_image_url
构建方式
CrossCommitVuln-Bench的构建源于对真实世界Python漏洞的深度溯源。研究者首先通过GitHub安全咨询数据库(GHSA)结合OSV API,从约1200条高危或严重级别的PyPI公告中筛选出具有可追溯修复提交的记录,进而对涉及至少两个Python文件变更的候选漏洞执行git blame分析,定位每一处脆弱代码行的引入提交。随后,通过人工考古方式逐项审查每个引入提交的完整差异,确认其单独表现为无害的正常修改,而联合多个提交才形成可利用的条件。最终,从21个候选漏洞中精选出15个完全满足多提交、单提交表现为无害、联合后为高危、开源可复现、可重建脆弱状态五项标准的CVE实例,并为每个实例构建了包含提交链、角色划分、单独安全检测结果及逃避检测原因的结构化JSON标注。
特点
该数据集的核心特质在于其精准聚焦于传统静态分析工具无法捕捉的多提交跨链漏洞模式。15个CVE覆盖了代码注入、路径遍历、命令注入、认证缺失及图查询注入等六类安全缺陷模式,提交跨度从21天至1342天不等,平均每个漏洞涉及3.1个提交,充分反映了真实开发中漏洞渐进演化的时间尺度。尤为关键的是,基准评估显示,在单提交扫描模式下,Semgrep与Bandit的综合检出率仅为13%,即便在全部提交累积的完整代码库中,检出率也仅有27%,揭示了自定义包装器遮蔽、守卫缺失不可见以及污染源与汇聚点时间分离三类根本性的检测盲区。
使用方法
该数据集为跨提交漏洞检测研究提供了标准化的评估与训练框架。研究者可直接将数据集克隆至本地,依据仓库中提供的复现脚本,通过Docker容器一键运行完整验证与基准评测流程,复现论文中报告的13%单提交检出率与27%累积检出率结果。数据集的结构化标注可直接用于训练基于提交序列的异常检测模型,或作为评估新型跨提交分析工具的测试基准。此外,标注中保留的6个因不符合选择标准而被排除的候选漏洞可作为负样本,用于校准检测算法的选择阈值与误报过滤能力。
背景与挑战
背景概述
在软件安全领域,静态应用安全测试(SAST)工具如Semgrep、Bandit和CodeQL已成为现代开发流水线中不可或缺的安全护栏。这些工具基于快照分析范式,假设危险代码在单一提交中引入,因此仅扫描单个提交、拉取请求差异或时间点的文件树。然而,这一假设忽略了现实中大量存在的跨提交漏洞链——一个漏洞可能由多个看似无害的、间隔数天甚至数年的提交共同引入,每个提交在孤立检查时均呈现良性。Arunabh Majumdar于2026年提出的CrossCommitVuln-Bench数据集正是为填补这一空白而创建,由独立研究者构建,聚焦于15个真实世界Python CVE漏洞,其可利用条件跨多个提交逐步形成,而每个单独提交均无法被单次提交SAST工具检测。该数据集通过手动标注每个CVE的贡献提交链、结构化解释每个提交为何能规避逐提交分析,并基于Semgrep和Bandit在逐提交和累积扫描模式下建立基线评估,为跨提交漏洞检测研究提供了首个专门基准,深刻揭示了现有静态分析范式的结构性盲区。
当前挑战
CrossCommitVuln-Bench所应对的核心挑战是现有SAST工具在检测跨提交漏洞时的系统性失效,具体体现在三个方面。其一,时间性源-汇分离:在全部15个CVE中,污点源与最终危险汇点分别出现在不同的提交中,间隔从21天至1342天不等,而当前基于快照的SAST工具缺乏跨提交状态追踪能力,无法观测到这种跨越时间长度的数据流。其二,自定义包装器不透明性:15个CVE中有4个将危险操作封装在项目内部辅助函数(如exec_cmd()、session.run())中,而Semgrep和Bandit仅依据已知危险API名称模式进行匹配,对自定义包装器完全失效,这些漏洞在逐提交和累积模式中均未被检出。其三,缺失守卫模式的不可见性:15个CVE中有3个涉及端点或函数缺少身份认证或验证检查,但SAST工具仅在存在危险调用时告警,从未针对依赖项或装饰器的缺失触发任何规则。在数据集构建过程中,研究者面临从1200个GitHub安全公告中筛选出696个可验证修复提交、进一步通过git blame追踪获得23个多提交候选,最终人工考古确认15个满足全部五项严格选择标准(多提交、单个良性、集体高危、开源可复现)的挑战,同时需手动标注每条贡献提交的角色、孤立严重性及规避检测的原因,确保链式描述的可重复性。基线评估结果显示,逐提交检测率仅为13%,累积检测率也仅为27%,凸显了该领域亟需新型跨提交分析技术。
常用场景
经典使用场景
在软件安全领域,CrossCommitVuln-Bench最具代表性的使用场景是评估静态应用安全测试(SAST)工具对跨提交漏洞链的检测能力。传统SAST工具如Semgrep和Bandit在单次提交或快照层面进行扫描,然而真实世界的许多高危漏洞其脆弱性因素分散在多个提交中,每个独立提交均显现为无害的功能性变更。该数据集通过精心标注15个真实Python CVE漏洞,提供了可复现的基准测试环境,允许研究者量化SAST工具在每次提交检测模式下的跨提交检测率(CCDR),以及在全量代码累积模式下的累积检测率(CDR),从而揭示当前快照式分析范式的结构性盲区。
实际应用
在实际开发与安全运维中,CrossCommitVuln-Bench可直接作为CI/CD管道安全审计能力的评估标尺。企业安全团队可利用该数据集验证其现有SAST流水线能否发现跨提交引入的渐进式风险,从而洞察工具链在定制包装器、缺失守卫依赖及污点源-汇时间分离等三种根本失效模式下的表现。该数据集还可作为输入驱动新一代安全工具的设计,例如支持持久化跨提交状态威胁图的系统,为开发者在合并请求和版本发布前的安全审查提供更精准且具备历史关联性的预警。
衍生相关工作
CrossCommitVuln-Bench的发布催生了一系列聚焦于跨提交漏洞检测的后续经典工作。其中最直接的相关工作是POSTURA系统,它利用图数据库维护跨提交的持久化威胁图谱,通过污点分析和链式发现规则在该数据集上达到了60%的检测率,远超传统SAST工具的13%水准。此外,该数据集还为基于提交序列异常建模的深度学习方案提供了基准训练语料,促使研究者探索基于图神经网络或时序模型的跨提交风险预测方法。在工具评估维度,它启发了对CodeQL等深度过程间分析工具在跨提交场景下的系统性能对比研究,成为跨提交漏洞检测领域不可或缺的评估与验证参考标准。
以上内容由遇见数据集搜集并总结生成
5,000+
优质数据集
54 个
任务类型
进入经典数据集
二维码
社区交流群

面向社区/商业的数据集话题

二维码
科研交流群

面向高校/科研机构的开源数据集话题

数据驱动未来

携手共赢发展

商业合作