Patch2Vuln:面向 Linux 发行版二进制补丁的 Agentic 漏洞重建——系统架构、分层诊断与 25-case 实证评估
Patch2Vuln:面向 Linux 发行版二进制补丁的 Agentic 漏洞重建——系统架构、分层诊断与 25-case 实证评估
1. 研究背景与问题形式化
安全补丁在发布后的时间窗口内构成一种独特的信息源:攻击者与防守者均可同时获取漏洞版本与修复版本,但补丁的「安全含义」往往隐藏在海量二进制变更之中。Patch2Vuln 将这一场景形式化为二进制补丁对的漏洞重建任务(vulnerability reconstruction from a binary patch pair):给定 old/new Linux 发行版二进制包(如 Ubuntu .deb),系统需仅基于本地二进制衍生的证据——ELF 元数据、符号与字符串、Ghidra/Ghidriff 差异、反编译片段、本地调用上下文及有界 old/new 验证输出——推断出安全相关的代码变更区域、根因类别(root-cause class)、受影响输入媒介及可验证的行为假设。
该任务与两类既有工作形成明确区分:一是 patch-based exploit generation(Brumley et al., 2008; AEG; MAYHEM),其目标是合成可利用的 payload;二是二进制漏洞匹配系统(BinXray 等),其目标是判断代码是否已补丁。Patch2Vuln 的 endpoint 是解释性安全审计:从原始差异到结构化漏洞假设的转化,而非 exploit 生成或补丁状态判定。
2. 系统设计:候选中心的三段式 Agent 架构
Patch2Vuln 的核心贡献不在于提出新的二进制差异分析器,而在于构建一个可度量的 agentic harness,将现有工具输出转化为可审计的漏洞级解释。系统采用本地可恢复 Docker pipeline,包含四个确定性阶段与三个 agent 推理阶段:
确定性证据层:
- 包提取与 ELF 规范化(dpkg-deb -x)
- Ghidra headless 分析与 Ghidriff 命令行差异提取
- 候选函数排序器:以 Ghidriff diff score 为基线,叠加内存安全特征加权——新增与 INT_MAX/SIZE_MAX 的比较、文件长度前置检查、分配大小变更、memcpy/memmove/read 参数变化、解析器边界检查、捕获长度与声明长度差异、新增错误字符串("too large", "short read", "invalid", "truncated")等。对巨型分发器和低置信度 fallback token 施加惩罚。
- 候选档案构建:每个排序函数生成结构化 dossier,包含二进制路径、函数标识符、排名特征、diff 元数据、邻近字符串与导入、反编译片段及本地调用上下文。
Agent 推理层(三段式审计循环):
| 阶段 | 输入 | 输出 |
|---|---|---|
| 初步审计(Preliminary Audit) | 排序后的候选档案、ELF 元数据、Ghirda 上下文清单 | 推断的漏洞类别、安全相关函数、验证假设 |
| 验证计划(Validation Plan) | 初步审计结果、候选档案 | 安全的本地动作模板及候选 ID(由 harness 渲染具体输入) |
| 最终审计(Final Audit) | 初步审计、验证计划、本地 old/new 验证结果 | 修订后的结论、置信度、候选排名,明确区分确认证据与弱化假设 |
3. 评估方法论:分层诊断与私有 Oracle
评估采用 25-case Ubuntu .deb 基准:20 个安全更新对(涵盖解析器库、网络/协议、归档/媒体、noisy patch cluster 四类)和 5 个负对照(2 个字节相同控制、3 个维护/重建差异)。所有目标均完成端到端执行,并由私有手工 oracle 进行函数级评分。
三层性能分离:
1. 补丁状态匹配层:BinXray-style 补丁签名适用性(本文作为单独系统基线引用,未端到端运行) 2. 定位层:raw Ghidriff 排序 vs. Patch2Vuln ranker 重排序,以 top-1/3/5/25 命中率衡量 3. 语义重建层:agent 最终审计是否定位到相关补丁家族并解释漏洞类别、输入媒介与补丁含义
失败桶分类(核心方法论贡献):
ranker_or_diff_miss:手工标注的真实函数未出现在排名候选中context_export_miss:函数在候选中但 Ghidra 上下文导出失败model_reasoning_or_validation_miss:候选到达 prompt 但 agent 推理或验证失败localized_by_agent:agent 成功定位
4. 实验结果
| 指标 | 数值 |
|---|---|
| 安全更新对 | 20 |
| Agent 成功定位(localized_by_agent) | 10 / 20 |
| 正确根因分类(accepted label) | 11 / 20 |
| 负对照正确拒绝(unknown) | 5 / 5 |
| 产生的行为差异(非 exploit) | 2(均为 tcpdump) |
| Crash / Timeout / Sanitizer 发现 | 0 |
| 方法 | Top-1 | Top-3 | Top-5 | Top-25 |
|---|---|---|---|---|
| Raw Ghidriff 排序 | 2 | 6 | 6 | 12 |
| Patch2Vuln ranker | 4 | 5 | 7 | 12 |
| Agent 最终审计定位 | — | — | — | 10 |
失败分布:
- 6 个
ranker_or_diff_miss:真实函数未出现在任何排名候选中 - 1 个
context_export_miss:候选存在但上下文导出失败 - 3 个
model_reasoning_or_validation_miss:候选到达 prompt 后的推理或验证失败
5. 典型案例分析
tcpdump bionic(成功模式):CVE-2018-16301 与 CVE-2020-8037 的补丁集群。手工标注的 filter-file 路径(read_infile)在 ranker 中排第 6,被纳入 prompt 和验证。Oversized sparse filter file 产生诊断差异——旧版报告 short-read mismatch 与负预期大小,新版直接拒绝为 too large。最终报告正确命名了该函数,并另外发现了 OpenFlow pcap 的解析器行为差异(旧版打印 [|openflow],新版打印 OpenFlow (invalid)),作为同一补丁集群内的独立解析器行为差异,而非新的漏洞声明。
Expat(静态重建成功,触发失败):候选排第 1,被正确分类为 integer_overflow,准确描述了 size 算术与 allocation/copy 硬化。41 个 bounded probe 未产生 old/new 差异,最终报告正确处理了这一情况——静态证据支持整数溢出硬化,但实际可触发性未被证明。这体现了漏洞重建与触发生成之间的本质区分。
libarchive(保守分类的正确性):agent 定位了真实函数家族(排第 1),但最终分类为 unknown。原因:bounded 验证未能复现行为差异,且补丁集群跨越多个归档格式(ar, RAR, 7z, ISO, WARC, LHA)。36 个 probe 无差异。这是防守型审计 agent 的恰当行为——不因 bounded 测试失败而抹除强静态证据,但也不夸大内存损坏。
负对照(幻觉抵抗):5/5 被正确分类为 unknown。tcpdump 与 Expat 的字节相同控制产生零变更函数;WebP(727 变更函数)、OpenJPEG(303 个)、zlib(20 个)的维护差异虽有真实代码变更,但 agent 未被「存在 diff 即存在漏洞」的偏见诱导。
6. 局限性与未来方向
| 局限 | 说明 |
|---|---|
| 发行版范围 | 仅评估 Ubuntu .deb,RPM 与滚动发行版未覆盖 |
| 盲化条件 | 采用 realistic 条件(包名、路径、符号可见),metadata-blind 与 symbol-suppressed 变体需单独测量 |
| Patch cluster | 真实发行版更新常合并多个 CVE,使单-CVE 归因比实验室 patch pair 更困难 |
| 验证边界 | 未产生 crash、timeout 或 sanitizer 发现;2 个行为差异仅证明解析器路径可达,非内存损坏证明 |
| 差异覆盖 | 6/20 安全对因 ranker/diff miss 失败,是最大实证瓶颈 |
7. 结论
Patch2Vuln 证明了从 Linux 发行版二进制更新中进行 agentic 漏洞重建的可行性。给定候选中心的二进制差异档案与安全验证工具,高投入离线 agent 能在 20 个安全目标中定位 10 个、正确分类 11 个根因,并正确拒绝全部 5 个负对照。核心发现是:agent 的推理能力在正确证据可达时是有用的;真正的瓶颈在于将安全相关函数可靠地送达 agent 上下文,以及将静态重建转化为本地行为验证证据。 这项工作的价值不仅在于结果数字,更在于其诚实、分层的失败诊断方法论——它精确地标定了当前系统的边界,为后续投资提供了清晰的路线图。
---
论文元数据
| 项目 | 内容 |
|---|---|
| 标题 | Patch2Vuln: Agentic Reconstruction of Vulnerabilities from Linux Distribution Binary Patches |
| 作者 | Isaac David, Arthur Gervais |
| 机构 | University College London |
| arXiv ID | 2605.06601 |
| 发布日期 | 2026-05-07 |
| 论文链接 | https://arxiv.org/abs/2605.06601 |
| 核心贡献 | 提出二进制补丁对的 agentic 漏洞重建任务;候选中心三段式审计架构;25-case 分层诊断基准 |
| 关键结果 | 10/20 定位,11/20 正确分类,5/5 负对照正确;最大瓶颈为差异覆盖(6 例 rank/diff miss) |
| 相关系统 | Ghidra, Ghidriff, BinXray, AEG, MAYHEM, KLEE, SAGE, S2E, Driller |
🌟 智谱 GLM-5 已上线
我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。
🎁 领取 2000万 Tokens