跳到正文
原文
arXiv· arXiv:2607.27030· Petr Simecek, Elnaz Babayeva, Jiri Balhar, Michal Bida, Michal Buran, Vaclav Cadek, Luigino Camastra, Tomas Dulka, Michal Janocko, Tomas Klohna, Pavel Kohout, Ondrej Kokes, Adam Krivka, Jakub Kubik, Patrik Mada, Igor Morgenstern, Marek Pavelka, Joshua Rogers, Petr Stastny, Jan Tattermusch, Dmitrijs Trizna, Martin Votruba, Guido Vranken, Jakub Zikl, Evelina Gabasova, Stanislav Fort·本站收录· 原文发表精选关注度38

HoF-Bench:不用前沿模型重新发现 AI 发现的真实 CVE

HoF-Bench: Rediscovering Real AI-Discovered CVEs Without Frontier Models

论文速读

评测与基准

据论文 PDF 整理(AI 生成),以原文为准

作者构建 HoF-Bench(95 个 AI 发现的 CVE、8 个仓库),称无前沿模型的简易分析器在严格判定下最多重新发现 65 个(68%)。

问题
LLM 分析器已能在成熟开源项目中发现真实 CVE,但现有基准多测代码片段分类或补丁生成,无法直接衡量扫描器能否在真实仓库快照中重新找到同一个 CVE 级漏洞。
方法
作者从 AISLE 公开 Hall of Fame 中选取 95 个 CVE、固定在 8 个仓库的漏洞版本 commit,扫描器只见源码和目标文件范围;用对检测器身份盲的 LLM 评审按代码路径、根因、攻击条件和影响四个维度判定严格匹配,并在固定脚手架下比较 10 个非前沿检测模型。
实验与结果
10 个检测模型中 6 个在某一四 pass 条件下重发现至少 50 个 CVE,最高为 GPT-5.6 luna 的 65/95;重复扫描平均多发现约 12–20 个 CVE,多模型组合优于单模型重复;难度按语言分化,被所有模型漏掉的 CVE 集中在 C 语言基础设施代码。
局限与可以继续做的
作者指出基准是 AISLE-conditioned 且 source-conditioned,8 个仓库不具代表性;只估计目标文件条件下的 recall,不测全仓库定位、精度或误报率;CVE 已公开无法排除训练数据污染;评审与去重为自动化且未经人工审计;评审模型与部分检测器同厂商家族。
实验设置GPT-5.6 luna、DeepSeek V4 Flash 等 · HoF-Bench v1 · strict rediscovery rate(strict recall)、success@k / pass@4 等
被测模型
GPT-5.6 lunaDeepSeek V4 FlashGPT-5.4 miniGemini 3.5 FlashGPT-OSS 120BQwen 3.6 35B A3BGPT-5.4 nanoGemini 2.5 FlashGPT-OSS 20BMistral Small 4
基准
HoF-Bench v1
指标
strict rediscovery rate(strict recall)success@k / pass@4deduplicated findings per rediscovered CVE
AI 导读和推荐理由AISLE 团队发布 HoF-Bench 基准,GPT-5.6 luna 等非前沿模型在严格协议下最多重新发现其 AI 分析器此前发现的 95 个真实 CVE 中的 65 个(68%)。基准取自 OpenSSL、curl、GnuTLS 等 8 个仓库的修复前快照,扫描器不获得 CVE 编号、描述与修复信息,由对检测器盲评的前沿模型裁判 GPT-5.6 terra 只给命中相同代码路径、根因、攻击条件和影响的发现记分。在共 7,600 次运行中,重复扫描收益最稳定,四次比一次平均每模型多发现 12–20 个 CVE,跨模型组合进一步提升;生成上下文收益小且增加待审发现量。启用上下文时,JavaScript 每模型召回 71–100%,C 仅 16–62%,所有模型都漏掉的 11 个 CVE 中 9 个在 C。

AISLE 团队发布 HoF-Bench 基准,GPT-5.6 luna 等非前沿模型在严格协议下最多重新发现其 AI 分析器此前发现的 95 个真实 CVE 中的 65 个(68%)。基准取自 OpenSSL、curl、GnuTLS 等 8 个仓库的修复前快照,扫描器不获得 CVE 编号、描述与修复信息,由对检测器盲评的前沿模型裁判 GPT-5.6 terra 只给命中相同代码路径、根因、攻击条件和影响的发现记分。在共 7,600 次运行中,重复扫描收益最稳定,四次比一次平均每模型多发现 12–20 个 CVE,跨模型组合进一步提升;生成上下文收益小且增加待审发现量。启用上下文时,JavaScript 每模型召回 71–100%,C 仅 16–62%,所有模型都漏掉的 11 个 CVE 中 9 个在 C。

推荐理由论文用 95 个真实 AI 发现的 CVE 建立严格的重新发现基准,显示单次扫描会低估扫描器能力,重复运行和跨模型组合能找回更多漏洞。

深度解读

6个问题,点开问题读完整回答

  1. 这篇论文试图解决什么问题?

    作者提出 HoF-Bench:在真实仓库快照上,测非前沿 LLM 扫描器能否重新发现已公开的 AI 发现 CVE。

    核心问题:一个 LLM 漏洞分析器发现过某个 CVE 之后,另一个(更便宜的)分析器能否仅从漏洞版本源码再次找到它——现有基准不直接测这一点。

    • 场景与动机:作者称 AISLE 的 LLM 分析器已在 OpenSSL、curl、GnuTLS 等经过多年人工评审、fuzzing 和商业静态分析的项目中发现 280 余个 CVE(截至 2026 年 7 月 Hall of Fame 列出 287 个、覆盖 78 个项目),由此引出"能否被再次发现"的评测问题。
    • 现有基准的不足:作者称许多安全基准测的是片段分类、补丁生成、漏洞利用复现或人造漏洞应用,不直接衡量扫描器报告是否能在真实复杂软件中认出 CVE 级的 bug。
    • 论文提出什么:HoF-Bench v1——95 个公开 AI 发现 CVE、8 个固定在漏洞 commit 的仓库;任务是 source-conditioned 的(提供目标文件,测分析与重发现,而非全仓库自主定位);另配一个严格的红iscovery 协议和一项 10 个检测模型的对照研究。
    • 任务设定(非威胁模型):扫描器获得仓库源码和 1–7 个目标文件的范围,但得不到 CVE 编号、描述、修复 commit 或预期漏洞片段;评分要求严格的漏洞同一性(同一代码路径、根因、攻击条件、影响),仅靠文件邻近或漏洞类别不得分。
    • 量化问题:非前沿 LLM 分析器能重新发现这批 CVE 的多大比例,以及哪些系统选择(重复扫描、生成上下文、triage 深度、模型组合)影响结果。
  2. 有哪些相关研究?

    相关工作分片段级基准、仓库级基准和 CVE 普查三类;作者称 HoF-Bench 填补片段分类与完整利用之间的空档。

    片段/函数级基准

    • Devign(2019)、Big-Vul(2020)、PrimeVul(2025)——聚焦函数或代码变更级别的漏洞检测;Juliet(2012)提供合成测试用例;SARD(2025)覆盖从合成程序到生产应用。
    • Snyk VulnBench JS 1.0(2026)——在 10 个小型 JavaScript 夹具上测 LLM 评审的可重复性,对照一个 SAST 工具自己的参考发现。作者称这类目标使评测便宜、可检查,但很少要求生产代码中评审真正追查的证据(跨文件状态、配置、调用侧才可见的信任边界)。

    仓库级基准

    • RepoPairBench(论文引为 DREA,2026)——100 个 Python 漏洞/修复对,检查模型理由是否匹配文档记录的机制;JITVul(2025)——将函数关联到引入与修复 commit,覆盖 879 个 CVE。
    • RealVuln(2026)——在 26 个人造漏洞 Python 仓库上比较规则 SAST、通用 LLM 和安全专用扫描器;BountyBench 与 SEC-bench(均 2025)——延伸到漏洞利用、PoC 生成和修补等生命周期阶段。

    普查式工作

    • Berkeley Vulnerability Initiative 的 Agentic Vulnerability Coverage Map(Villa 等,2026)——每日多厂商普查 agentic 系统被归因的 CVE。作者称普查回答"agentic 系统在野外发现了什么",HoF-Bench 回答"给定扫描器能否再次找到固定集合",两者问题不同。

    基线与对比设置:论文未将外部工具作为基线跑分;对照是在同一参考扫描器脚手架内替换 10 个检测模型(Table 1),并比较重复 pass、context 开/关、triage 深度等条件。

    本文定位:作者称 HoF-Bench 处于片段分类与完整漏洞利用之间的空档:修复前的生产快照、只对严格 CVE 同一性给分、重复 pass 使可靠性可测;且上述仓库级基准均为单语言,HoF-Bench 跨 C、PHP、JavaScript 三种语言。

  3. 论文如何解决这个问题?

    固定 8 个漏洞 commit + 目标文件范围,用盲评审判定严格 CVE 同一性,在固定脚手架内换 10 个非前沿检测模型做对照。

    整体思路:把"能否再次找到同一个 CVE"做成一个可复跑的基准 HoF-Bench,再用一个刻意最小化的参考扫描器(源自 AISLE 已开源的 nano-analyzer)作为固定仪器,只换检测模型和评测条件。

    基准构建

    • 选题来源:从 AISLE 公开 Hall of Fame 归因的 CVE 中,选取至少有 5 个披露且能落到同一漏洞快照的仓库;无法关联到仓库、无法在共同 commit 验证或需要不同快照的记录被排除。
    • 规模与构成:95 个 CVE、8 个仓库(OpenSSL、curl、GnuTLS、Apache httpd、pearweb、FOGProject、OpenEMR、WeKan),每仓库一个扫描 commit;31 个多文件案例;覆盖 39 个 CWE,最多的是 CWE-79(9 例)、CWE-89(8)、CWE-863(8)、CWE-284(7)、CWE-476(6)。
    • 字段分离:scanner-visible(任务 ID、仓库、commit、语言、目标文件、scope mode)与 evaluator-only(CVE ID、预期路径、行范围、机制、影响、代码片段、CWE/严重性、修复元数据)分开;清单对 ground truth 做了泄漏测试(附录 A,Table 4)。

    任务定义

    • 输入:整个仓库的固定 commit + 1–7 个目标文件(由 ground truth 导出、含主漏洞文件,作者称其为 substantial localization oracle);目标文件中位数 911 行,受 300,000 字符上限截断。
    • 不提供给扫描器:CVE 编号、漏洞描述、修复 commit、预期漏洞片段。
    • 主要结果:strict rediscovery——发现必须命中同一漏洞代码路径/组件、根因、攻击者可控条件或信任边界、安全影响四个维度。

    参考扫描器流程

    • 三个阶段:可选的 context 构建(生成安全简报:组件用途、外部可达入口、信任边界、安全相关数据/控制流,可请求至多 3 次窄范围仓库搜索)→ 检测(输出结构化候选发现)→ 怀疑式 triage(3 个顺序评审轮 + 1 个 arbiter,arbiter 看发现、源码和全部评审后基于代码证据做最终 valid/invalid 判定,而非计票)。
    • 约束:每 pass 最多 5 个原始发现,结构化输出重试有界;每轮 triage 判定都落盘,使更浅的 triage 策略可回放。
    • 定位:作者称脚手架是受控比较工具,不作为贡献主张;外部工具(SAST 或 agentic)也可对 8 个快照跑并用同一评审打分。

    评测协议

    • 运行规模:每模型对 95 个 CVE 跑 4 次重复 pass,context 开/关两档,共 7,600 条 pass 记录。
    • 评审:固定自动化 LLM 评审(GPT-5.6 terra,仅作评审、从不在检测环节使用前沿模型),看到 ground truth 但对检测器身份、context 条件和 pass 编号盲;输出 match / partial / no match / insufficient evidence 四档。
    • 指标:主指标为 strict recall;success@k 定义为随机 k 个 pass 子集中至少发现一次的期望 CVE 数,对全部子集取平均以避免 pass 顺序依赖;pass@4 为四个 pass 的并集。因每个任务都是正例且未匹配发现未独立标注,作者强调这只是 recall 指标,不把未匹配发现称为假阳性。
    • 评审负担估计:对 triage 后的发现按"同一评审可执行问题"做语义去重(确定性相似规则 + LLM 评审裁决模糊对),按模型和 context 条件分别统计去重簇数除以严格重发现 CVE 数。
  4. 论文做了哪些实验?

    10 个检测模型 × 95 CVE × 4 pass × context 两档共 7,600 次运行;最高 pass@4 为 GPT-5.6 luna 的 65/95。

    实验设置

    • 被测模型:10 个检测骨干,5 个开放权重 MoE(GPT-OSS 20B、GPT-OSS 120B、DeepSeek V4 Flash、Qwen 3.6 35B A3B、Mistral Small 4;总参数 21B–284B、激活 3–13B)和 5 个专有 small/flash 档(GPT-5.4 nano、Gemini 2.5 Flash、GPT-5.4 mini、GPT-5.6 luna、Gemini 3.5 Flash;尺寸未披露),输入价 $0.03–$1.50/百万 token(Table 1)。
    • 基准:HoF-Bench v1,95 个 CVE、8 个仓库、三种语言(C 45、PHP 26、JavaScript 24)。
    • 评审:GPT-5.6 terra 作为盲评审(对检测器身份、context、pass 编号盲),四档判定;strict match 才计入主指标。
    • 指标:strict recall / pass@4(95 个 CVE 上)、success@k、每个重发现 CVE 的去重发现簇数;Wilson 95% 区间仅作描述。
    • 运行量:7,600 条 pass 记录(95 × 10 × 2 × 4);triage 深度变体通过回放已存评审判定评估,不重跑。
    • 重复次数:每模型每条件 4 次 pass;论文未报告评审判定的人工一致性审计。

    主结果

    据 Table 2(pass@4 严格重发现数,满分 95;"Best result"列为最佳百分比及 95% Wilson 区间):

    表格较宽,可左右滑动

    模型CtxNo ctxBest result
    GPT-5.6 luna656568.4% (58.5–76.9)
    DeepSeek V4 Flash625665.3% (55.3–74.1)
    GPT-5.4 mini585761.1% (51.0–70.2)
    Gemini 3.5 Flash565358.9% (48.9–68.3)
    GPT-OSS 120B524854.7% (44.7–64.4)
    Qwen 3.6 35B A3B504952.6% (42.7–62.4)
    GPT-5.4 nano464749.5% (39.6–59.4)
    Gemini 2.5 Flash474249.5% (39.6–59.4)
    GPT-OSS 20B404042.1% (32.7–52.2)
    Mistral Small 4383640.0% (30.7–50.1)
    • 作者解读:6 个模型在某一四 pass 条件下达到至少 50 个 CVE;从 1 个 pass 到 4 个 pass 平均每模型多发现约 12–20 个 CVE;单次 pass 平均只恢复四 pass 所覆盖 CVE 的 68%。
    • 不稳定性:两种 context 条件下,62% 的成功模型–CVE–条件单元只在 4 次相同 pass 中的 1–3 次被发现(Figure 3 给出 success@k 曲线)。

    模型多样性与组合

    • 测了什么:把同样 4 次 pass 分给不同模型,与单模型重复比较。
    • 结果:四个领先模型各取 1 个 pass 的组合期望覆盖 68 个 CVE(Table 2 portfolio 行,对 256 种组合取平均,作者标注为探索性分析),高于最强单模型 GPT-5.6 luna 四 pass 的 65;全部 40 次 context 运行的并集达 84/95(两种条件合计 85);12 次 pass 分给三个便宜模型以 $66 找到 70 个 CVE,对比四次 GPT-5.6 luna pass 的 65 个、$128。
    • 作者解读:不同模型发现不同的 bug,盲区只部分重叠,多样性优于重复。

    context 与 triage 深度的影响

    • context:pass@4 下有 context 的严格重发现为 514/950 个模型–CVE 单元(54.1%),无 context 为 493/950(51.9%);配对差 +21/950(2.2 个百分点,CVE-bootstrap 95% 区间 [−6, 47]);被所有模型漏掉的 CVE 从 16 降到 11,但去重后发现数从 1,664 升到 2,088,平均每个重发现 CVE 的发现数从 3.4 升到 4.1。作者称大部分新增发现只增加评审工作量。
    • triage 深度:从单轮评审改为三轮加 arbiter,重发现的模型–CVE 结果总数仅从 974 变到 1,007;回放中 645 个被完整协议拒绝的"模拟幸存"发现经同一盲评审补判,70 个 strict match、28 个 partial(附录 B)。作者列出两点保留:后轮评审是在看到前轮内容后生成的,且未为两轮规则模拟 arbiter,回放估计的是已记录评审的过滤行为而非完整反事实重跑。

    语言与难度结构

    • 按语言(Table 3,context 条件):JavaScript 24 个 CVE 的中位模型召回 81%、最佳 100%、0 个被所有模型漏掉;PHP 26 个中位 63%、最佳 73%、2 个全漏;C 45 个中位 31%、最佳 62%、9 个全漏。有 context 时 21 个 CVE 被所有模型发现、11 个无一发现(无 context 为 22 和 16);21 个全中发现里 18 个是 JavaScript 或 PHP,11 个全漏里 9 个是 C。
    • 类内对照:37 个授权/认证类 CVE(唯一跨三种语言的大类)中,平均每个 JavaScript CVE 被 8.1 个模型发现、PHP 5.8、C 3.0;二项回归中语言解释的偏差是漏洞类别的两倍以上;源码规模独立预测难度(总体 ρ = −0.47,C 内部 −0.53)。
    • 作者解读:作者认为大型、有状态的 C 基础设施代码与漏洞机制无关地更难;并明确说原因只能推测——JavaScript/PHP 的信任边界通常在目标文件内可见,而 C 案例依赖跨多次调用组装的状态,证据常在检测器视野之外。

    其他消融与分析

    • 可靠性模型(附录 C,Table 5):Rasch Beta-Binomial 为优选模型;Beta-Binomial 变体比二项变体 ELPD 好 100 以上,2PL 判别参数无增益(∆ELPD = 5.6,dSE = 6.3)。
    • 分析器强度排序(Figure 5):Rasch logit 尺度上 GPT-5.6 luna(无 context)最高,Mistral Small(无 context)最低,区间为 95% 可信区间。
    • 成本–重发现(Figure 6):按每基准 CVE 的归属 API 成本(对数轴)对 pass@4 严格重发现作图,作者称 context 通常增加的成本超过其带来的召回,且注明这是实验性记账视角而非生产定价主张。
    • 失败案例:作者称共同漏掉的包括 curl 的证书验证状态 bug,全中发现的包括一个 OpenEMR SQL 注入。
  5. 有什么可以进一步探索的点?

    作者列出 AISLE 来源偏倚、只测 recall、评审未人工审计等边界;实验覆盖 10 个模型、单一脚手架。

    作者指出的局限与后续方向

    • 来源与任务条件(Discussion):HoF-Bench 是 AISLE-conditioned 且 source-conditioned,8 个仓库不代表所有软件;它采样的是 Villa 等普查的 agentic-CVE 总体中单一厂商的一片,作者建议读者对照该普查判断代表性。
    • 只测 recall(Discussion):每个任务都是正例且提供由 ground truth 导出的目标文件,研究估计的是目标条件下的 recall,不是全仓库定位、精度或假阳性率;未匹配发现是未验证,不是假阳性。
    • 单一脚手架(Discussion):10 个检测骨干共享同一脚手架、提示词族、triage 设计和评审,结果应视为同一分析器的 10 种配置,不是 10 个独立产品的比较。
    • 污染与评审可靠性(Discussion):CVE 已公开,训练数据污染无法排除;评审和语义去重是自动化的、未经人工审计;评审模型与多个检测器同厂商家族,盲评不能排除同族评分偏好。
    • 跨任务语义指派(§4.3):当前实现不做跨任务语义指派,作者将其列为局限。
    • 后续方向(Discussion):作者认为基准适合未来做微调实验(原始轨迹含提示词、回复、发现和评审标签),同时指出微调可能降低方差和 schema 失败,也可能让模型过拟合提示词风格或评审偏好。

    实验覆盖范围

    • 被测检测模型为 10 个(5 个开放权重 MoE、5 个专有 flash 档),评审模型为 GPT-5.6 terra;前沿模型不在检测环节使用。
    • 基准覆盖 8 个仓库、95 个 CVE、C/PHP/JavaScript 三种语言;每模型每条件 4 次 pass,共 7,600 条 pass 记录。
    • 流程变量评测包括 context 开/关两档和 triage 深度(单轮 vs 三轮加 arbiter,经回放评估);模型组合分析为探索性。
    • 论文未报告评审判定与人工评审的一致性,也未报告对评审提示词的敏感性测试。
    • 论文讨论了传统 SAST 与 agentic 工具作为外部工具接入同一评审的用法,但本文实验未运行这类外部工具。
  6. 总结一下论文的主要内容

    HoF-Bench 用 95 个真实 AI 发现 CVE 测重发现能力:非前沿模型在严格盲评下最多找回 65 个,重复与多样性比加组件更有用。

    一篇基准论文:作者从 AISLE 公开 Hall of Fame 归因的 CVE 中构建 HoF-Bench v1,回答"一个 LLM 分析器发现过的真实 CVE,另一个不带前沿模型的分析器能否从漏洞版本源码再次找到"。

    • 问题:现有漏洞基准多测片段分类、补丁或人造漏洞,不直接衡量扫描器在真实仓库快照中认出 CVE 级漏洞的能力。
    • 方法:95 个 CVE 固定在 8 个仓库(OpenSSL、curl、GnuTLS、Apache httpd、pearweb、FOGProject、OpenEMR、WeKan)的漏洞 commit;扫描器只见源码和 1–7 个目标文件,不见 CVE 编号、描述或修复;GPT-5.6 terra 作盲评审,按代码路径、根因、攻击条件、影响四维度判 strict match;10 个非前沿检测模型(5 开放权重 MoE + 5 专有 flash 档)在固定脚手架下各跑 4 pass × context 两档,共 7,600 条记录。
    • 主要结果:最高 pass@4 严格重发现为 GPT-5.6 luna 的 65/95(有/无 context 均同,Table 2);6 个模型在某一条件下达到至少 50 个;从 1 到 4 个 pass 平均多发现约 12–20 个 CVE;四模型各一 pass 的组合期望覆盖 68 个,超过最强单模型的 65;context 只把 950 个单元中的重发现从 493 提到 514,同时去重发现数从 1,664 升到 2,088;triage 从单轮加到三轮加 arbiter 仅把重发现结果从 974 变到 1,007。
    • 难度结构:有 context 时 21 个 CVE 被所有模型发现、11 个无一发现;11 个全漏中 9 个是 C,C 语言中位召回 31%(Table 3);语言在回归中解释的偏差是漏洞类别的两倍以上。
    • 作者结论:作者认为漏洞发现是系统问题而非单次模型调用,扫描器评测应报告多次运行的累计结果和送审发现量;剩余空间集中在大型有状态的 C 基础设施代码,原因作者称只能推测。
    • 边界:作者强调这是厂商构建的基准(全部作者隶属 AISLE),只测目标条件下的 recall,评审未经人工审计,已公开数据、清单和原始运行记录以供独立审计。
阅读原文arxiv.org