CrossCommitVuln-Bench
收藏数据集概述
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
- 外部仓库保留其自身许可证




