patchaudit-artifact
收藏资源简介:
BadPatch-Bench 是一个用于评估安全补丁审计工具性能的基准测试数据集。该数据集包含 565 对 (C1, C2) 补丁对,覆盖 110 个不同的 CVE 漏洞。每个补丁对由初始补丁提交 C1 和后续提交 Ci 组成,旨在判断 Ci 是否是 C1 的“未来补丁”(即 C1 修复不完整或不正确,需要后续补丁继续修复)。数据集以 JSONL 格式存储(benchmark_565.jsonl),并附带额外标注数据:benchmark_candidate.json(110 个标记的 CVE,其中 45 个为正例、65 个为负例)、all_positive.json(617 个坏补丁)、all_negative.json(5786 个非坏补丁 CVE)、reexploitation_cases.json(12 个重新利用案例)以及 zero_day_pocs/ 目录(13 个零日攻击 PoC,仅供防御研究)。该数据集适用于安全补丁分析、漏洞修复质量评估、自动化补丁审计工具的基准测试等任务。
BadPatch-Bench is a benchmark dataset for evaluating the performance of security patch auditing tools. It contains 565 pairs of (C1, C2) patches covering 110 different CVEs. Each patch pair consists of an initial patch commit C1 and a subsequent commit Ci, aiming to determine whether Ci is a future patch of C1 (i.e., C1s fix is incomplete or incorrect, requiring further patches). The dataset is stored in JSONL format (benchmark_565.jsonl) with additional annotation data: benchmark_candidate.json (110 labeled CVEs, 45 positive and 65 negative), all_positive.json (617 bad patches), all_negative.json (5786 non-bad patch CVEs), reexploitation_cases.json (12 re-exploitation cases), and a zero_day_pocs/ directory (13 zero-day proof-of-concept exploits, for defense research only). The dataset is suitable for tasks such as security patch analysis, vulnerability fix quality assessment, and benchmarking of automated patch auditing tools.
PatchAudit Artifact 数据集概述
数据集简介
PatchAudit Artifact 是一个用于审计安全补丁的技术工具包,其核心功能是判断给定CVE的初始补丁提交(C1)之后的某个提交(Ci)是否为“未来提交”(future commit),即该提交是否延续了C1的修复工作(因C1不完整而遗留相同漏洞)或纠正了C1引入的新缺陷。若存在真正的未来提交,则C1为劣质补丁(bad patch);若最新未来提交仍未能封闭漏洞,则为持久性(零日)劣质补丁。
技术架构
工具采用三阶段流水线:
- 阶段1 — 文本意图:筛选提交消息/关联问题、PR、公告或CVE与哈希引用中暗示延续C1的后续提交,并由紧凑文本模型验证意图。
- 阶段2 — 语义意图:构建全仓库代码属性图(Joern),从C1与Ci的变更行进行有界3跳前向数据/控制切片并求交为意图范围,由代码LLM(Qwen3-14B)给出带依据的YES/NO决策。
- 阶段3 — 验证:使用咨询性静态证据(CodeQL+Semgrep)、独立LLM评审员(GPT-5)审计推理的扎根性/一致性/定义保真度,并运行有界细化循环(≤3轮)最终裁决为“未来提交”或“非未来提交”。
模型与数据资源
- 基础模型:Qwen3-14B(约28GB),默认加载微调适配器
models/phase2_lora,以 vLLM 服务为模型名phase2。 - 微调适配器:
models/phase1_lora(文本意图过滤器)和models/phase2_lora(阶段2语义意图代理)。 - 数据集文件(位于
data/目录):benchmark_565.jsonl(BadPatch-Bench):565对 (C1,C2),覆盖110个CVEbenchmark_candidate.json:110个标记CVE(45正例/65负例)all_positive.json:617个劣质补丁all_negative.json:5786个非劣质补丁CVEreexploitation_cases.json:12个重新利用案例zero_day_pocs/:13个零日PoC(独立集合,仅限防御性研究)
使用示例
内置两个示例案例:
- CVE-2021-31542(Django目录遍历,论文图10):C1(0b79eb36)添加的
validate_file_name()守卫过度限制拒绝任何路径分隔符,C2(b5569996)将其放宽为仅阻止..。预期结果为仅C2被识别为未来提交,最终判定为劣质补丁。 - CVE-2025-62193(NOAA-PMEL/LAS,Java):C1(e69afb18)将检查置于
lasRequest解析前导致守卫未触发,C2(de5f9237)在19分钟后移动检查位置以使其生效。
输出模式
对每个评分的后续提交,输出文件包含:
result/prompts_v3.jsonl:阶段2提示、后续提交哈希、交集统计(共享项数、核心项数、共享文件等)及意图范围片段result/phase23_loop.*.jsonl:最终标签(future-commit/not-future-commit)、置信度、状态(accepted/unresolved)、各轮代理决策/补丁类型(incomplete/incorrect/n/a)、评审员一致性与扎根审计、最终报告(合理性、问题、原因)、静态投票结果
运行环境要求
- Linux x86-64(Ubuntu 24.04测试),首次部署需约65-70GB磁盘空间
- 2×≥24GB GPU(或单个48GB GPU)用于阶段2代理
- Docker与GPU访问(NVIDIA CDI或
--gpus all) OPENAI_API_KEY必需(阶段3 GPT-5验证评审员)
扩展性
支持输入任意CVE的初始补丁信息(提交哈希C1、仓库URL/路径、CVE描述),设置 later_commits: "auto" 即自动发现候选未来提交。可选参数包括 max_candidates(上限60)、snapshot_paths(限定CPG子目录)及 --stop-at-first-yes(首个确认未来提交即停止)。





