PVBench
收藏github2026-01-05 更新2026-01-06 收录
下载链接:
https://github.com/cla7aye15I4nd/PVBench
下载链接
链接失效反馈官方服务:
资源简介:
PVBench包含来自20个开源C/C++项目的209个真实漏洞,每个漏洞都有基本测试和PoC+测试。
PVBench comprises 209 real-world vulnerabilities from 20 open-source C/C++ projects, where each vulnerability is accompanied by both basic test cases and PoC+ tests.
创建时间:
2025-12-23
原始信息汇总
PVBench 数据集概述
数据集简介
PVBench 是一个用于评估自动化漏洞修复系统中补丁验证方法的综合性基准数据集。该数据集旨在揭示当前基于测试套件的验证方法可能导致的性能高估问题,并提出了更严格的 PoC+ 测试验证方法。
核心发现
- 关键问题:超过 40% 的补丁在通过基本测试验证为正确后,在 PoC+ 测试下失败。
- 假发现率:约为 42%。
- 补丁通过率:通过基本测试的补丁为 47.1%,而通过 PoC+ 测试的补丁为 27.1%。
- 语义等价性:通过 PoC+ 测试的补丁与开发者补丁的语义等价性超过 70%。
数据集构成
- 漏洞总数:209 个真实世界漏洞。
- 项目数量:20 个开源 C/C++ 项目。
- 数据类型:每个漏洞包含基本测试和 PoC+ 测试。
项目与漏洞统计
| 项目 | 代码行数 (LoC) | 案例数 | 测试数 | 项目 | 代码行数 (LoC) | 案例数 | 测试数 |
|---|---|---|---|---|---|---|---|
| PHP | 1,390.2K | 43 | 18.7K | Vim | 564.2K | 11 | 5.2K |
| CPython | 745.9K | 33 | 48.6K | HDF5 | 1,334.4K | 8 | 0.6K |
| LLVM | 8,980.4K | 26 | 128.7K | Exiv2 | 93.5K | 7 | 0.3K |
| V8 | 6,225.6K | 24 | 53.7K | Wabt | 514.9K | 5 | 1.1K |
| libxml2 | 200.4K | 19 | 3.3K | Hermes | 590.0K | 4 | 2.3K |
| ICU | 1,241.5K | 15 | 2.0K | PcapPlusPlus | 160.0K | 3 | 0.3K |
| QuickJS | 78.8K | 2 | 79.7K | libtiff | 109.0K | 1 | 0.2K |
| mruby | 152.4K | 2 | 1.7K | JasPer | 5.5K | 1 | 0.2K |
| jq | 4.7K | 2 | 0.9K | simdjson | 547.5K | 1 | 0.1K |
| htslib | 108.3K | 1 | 0.4K | Wireshark | 6,088.9K | 1 | 0.1K |
CWE 分布
- CWE-476 (NULL 解引用):52 个
- CWE-617 (可达断言):40 个
- CWE-122 (堆溢出):34 个
- CWE-416 (释放后使用):32 个
- CWE-190 (整数溢出):26 个
- CWE-121 (栈溢出):13 个
- CWE-670 (不正确的控制流):3 个
- CWE-415 (双重释放):3 个
- CWE-704 (类型混淆):3 个
- CWE-457 (未初始化的内存):1 个
- CWE-362 (竞争条件):1 个
- CWE-369 (除以零):1 个
PoC+ 测试方法
PoC+ 测试是从 PoC 漏洞利用中衍生出的功能测试,执行超出崩溃检测的全面验证,用于验证预期的程序行为。
PoC+ 测试类别
| 类别 | 描述 | 适用项目 |
|---|---|---|
| 输出检查 | 验证程序处理外部输入时的输出是否符合预期结果 | exiv2, hermes, htslib, jasper, libxml2, php, jq, llvm, simdjson, wabt, wireshark |
| 中间检查 | 验证 API 函数调用的返回值和中间状态 | hdf5, icu, pcapplusplus, libtiff |
| 自检查 | 在解释型脚本中嵌入断言以验证运行时行为 | cpython, mruby, quickjs, v8, vim |
实验评估结果
AVR 工具性能
评估了三种先进的 AVR 系统(使用 GPT-4.1 和 Claude Sonnet-4 模型):
| 工具 | 模型 | 基本测试通过率 | +开发者 PoC+ 通过率 | +生成 PoC+ 通过率 | 假发现率 |
|---|---|---|---|---|---|
| PatchAgent | Sonnet-4 | 83.5% | 50.7% | 50.1% | 40.1% |
| PatchAgent | GPT-4.1 | 76.4% | 45.2% | 44.5% | 41.7% |
| San2Patch | Sonnet-4 | 41.3% | 21.6% | 20.7% | 49.8% |
| San2Patch | GPT-4.1 | 37.9% | 20.2% | 19.6% | 48.2% |
| SWE-Agent | Sonnet-4 | 29.0% | 20.5% | 19.6% | 32.3% |
| SWE-Agent | GPT-4.1 | 14.4% | 8.4% | 8.3% | 41.3% |
| 总体 | - | 47.1% | 27.8% | 27.1% | 42.3% |
补丁质量分析
对于通过 PoC+ 测试的补丁,与开发者补丁的手动比较显示:
| 类别 | 百分比 | 描述 |
|---|---|---|
| 语义等价 | 74.38% | 与开发者补丁功能相同 |
| 次优修复 | 12.22% | 正确但实现质量较差 |
| 检查规避 | 10.11% | 绕过检查而非修复根本原因 |
| 性能问题 | 3.29% | 比开发者解决方案具有更高的时空复杂度 |
假阳性分析
通过基本测试但未通过 PoC+ 测试的补丁分类:
- 规范违反:54.38%
- 错误根本原因:41.18%
- 不良代码实践:4.40%
目录结构
PVBench/ ├── artifacts/ # 生成的工件和测试输出 │ └── gen/ # 自动生成的 PoC+ 测试 ├── pvbench-/ # 每个项目的漏洞案例 │ └── <issue-id>/ # 单个漏洞 │ ├── poc/ # 概念验证漏洞利用 │ ├── patch/ # 开发者补丁 │ ├── tests/ # 基本测试套件 │ └── poc_plus/ # PoC+ 测试 ├── PatchAgent/ # AVR 工具集成 ├── scripts/ # 实用脚本 │ └── generate_.py # PoC+ 生成脚本 └── README.md
研究意义与建议
- 当前验证高估有效性:超过 40% 的“正确”补丁无法通过严格测试。
- 规范意识至关重要:大多数假阳性违反了无法仅从代码中推断出的项目规范。
- PoC+ 测试提供可靠验证:与开发者补丁的语义等价性超过 70%。
- 建议:采用超越 PoC + 基本测试的多层验证,将规范信息(文档、API 参考)纳入 AVR 系统,使用 PoC+ 测试或类似方法进行全面评估。
搜集汇总
数据集介绍

构建方式
在自动化漏洞修复领域,评估方法的严谨性直接影响系统性能的可靠性。PVBench的构建过程系统性地整合了真实世界漏洞案例,从20个开源C/C++项目中精选出209个安全漏洞,每个案例均配备了基础测试套件与增强型PoC+测试。数据集的构建遵循多阶段验证流程,首先依据漏洞的公开披露记录与开发者补丁进行筛选,随后通过自动化脚本与大型语言模型辅助生成PoC+测试,这些测试不仅覆盖漏洞的概念验证攻击场景,还深入验证程序在修复后的预期行为,从而形成一套层次化的评估基准。
特点
PVBench的核心特点在于其引入了PoC+测试作为验证标准,这种测试方法超越了传统基于测试套件的验证,能够检测出超过40%被基础测试误判为正确的补丁。数据集涵盖了多种常见弱点枚举类型,如空指针解引用、堆溢出与释放后使用等,并依据项目特性将PoC+测试划分为输出检查、中间状态检查与自检查三类,从而适配不同项目的验证需求。此外,数据集提供了丰富的元数据,包括漏洞的代码上下文、开发者补丁以及自动化生成的测试用例,为研究人员提供了可复现且标准化的评估环境。
使用方法
使用PVBench进行评估时,研究人员需首先配置Docker环境或本地构建工具链,并按照项目目录结构加载对应的漏洞案例。每个案例包含漏洞代码、补丁文件、基础测试与PoC+测试,用户可通过运行提供的测试脚本来验证自动化生成的补丁是否符合预期。数据集支持与现有自动化漏洞修复工具集成,例如PatchAgent或San2Patch,通过对比基础测试与PoC+测试的通过率,能够精确计算误判率并分析补丁的语义等价性。此外,用户可基于数据集提供的模板扩展新的漏洞案例或改进测试生成方法,以推动领域研究的持续发展。
背景与挑战
背景概述
在软件安全领域,自动化漏洞修复(AVR)系统,特别是基于大语言模型的系统,展现出修复安全漏洞的潜力,但其评估可靠性高度依赖于补丁验证方法的准确性。PVBench数据集由相关研究团队于近期创建,旨在为AVR系统的补丁验证方法提供一个全面的评估基准。该数据集汇集了来自20个开源C/C++项目的209个真实世界漏洞案例,并引入了PoC+测试这一更为严格的验证方法。其核心研究问题在于揭示并解决当前AVR评估中因依赖不完整的测试套件而导致的性能高估问题,对推动构建更可靠、更严谨的自动化软件修复评估体系具有重要影响力。
当前挑战
PVBench数据集所针对的领域挑战在于,传统的基于测试套件的验证方法通常无法捕获完整的功能需求,导致对AVR系统生成的补丁正确性产生高达40%以上的误判(即虚假发现率)。这暴露了当前评估方法在确保补丁语义正确性及符合项目规范方面的根本性不足。在数据集构建过程中,主要挑战包括如何从概念验证(PoC)利用代码中系统性地衍生出能够全面验证程序预期行为的PoC+测试,以及如何为多样化的项目(涵盖输出检查、中间状态检查、自检查等不同类别)设计和实施可扩展的、可靠的测试生成与验证工作流。
常用场景
经典使用场景
在自动化漏洞修复(AVR)领域,评估补丁验证方法的可靠性是核心挑战。PVBench数据集通过整合来自20个开源C/C++项目的209个真实漏洞案例,为研究人员提供了一个标准化的基准测试平台。其经典使用场景在于系统性地对比不同AVR工具生成的补丁质量,特别是通过基础测试与增强型PoC+测试的双重验证流程,揭示传统评估方法可能存在的性能高估问题,从而推动更严谨的验证框架发展。
解决学术问题
PVBench直接应对自动化漏洞修复研究中验证方法不完善的学术难题。传统依赖测试套件和概念验证(PoC)的评估方式,常因功能覆盖不全而错误地将部分补丁判定为正确,导致性能指标被显著高估。该数据集引入PoC+测试,通过输出检查、中间状态验证和自检三类方法,实现了对补丁行为更全面的检验。研究表明,超过40%经基础测试通过的补丁在PoC+测试中失败,这深刻揭示了现有评估体系的局限性,并为构建更可靠的AVR评估范式提供了实证基础。
衍生相关工作
围绕PVBench数据集,已衍生出一系列推动领域发展的经典研究工作。例如,基于其评估框架,对PatchAgent、San2Patch和SWE-Agent等前沿AVR系统的性能进行了横向对比分析,揭示了不同大语言模型(如GPT-4.1与Claude Sonnet-4)在修复任务上的表现差异。此外,数据集所倡导的PoC+测试生成方法论,包括确定性输出检查、大语言模型辅助的中间状态验证以及智能体迭代精炼等技术,也激发了后续研究在测试生成自动化与补丁语义理解方面的深入探索。
以上内容由遇见数据集搜集并总结生成



