在软件安全领域,如何客观评估大型语言模型发现真实漏洞的能力,长期缺乏统一的工程化基准。传统的静态漏洞检测基准存在数据泄露问题:测试用例在发布后数月内即被纳入模型训练集,评估分数逐渐退化为对记忆能力的测试而非真正的漏洞发现能力。N-Day-Bench 作为一种月度更新的动态评估框架,试图通过每月从 GitHub 安全公告中抽取最新案例、在补丁提交前的最后版本检出版本进行检测,并在评估过程中保持完全盲测来解决这一根本性问题。本文基于该基准的最新评估结果(2026 年 4 月版),分析主流 LLM 在真实代码库 CVE 检测中的准确率、漏洞类型覆盖度与误报率工程数据,为安全团队在 CI/CD 流程中引入 AI 辅助漏洞发现时提供可量化的选型参考。
N-Day-Bench 评估框架的核心设计
N-Day-Bench 的评估任务被严格限定为一个具体能力:给定一个仍包含已知安全缺陷的真实代码仓库检出版本,模型能否检查代码、跟踪从攻击者可控输入到危险 sink 的数据流,并生成一份能够经受对抗性审查的结构化报告。这并非一个漏洞利用编写基准,也不测量补丁合成、通用编码能力或 CWE 分类的独立表现。任务的本质接近人类审计员在分类阶段的工作:阅读代码、追踪数据流、解释问题所在及其安全影响。
框架采用三角色 Agent 协议。Curator Agent 读取安全公告上下文、变更文件和补丁摘要,生成结构化案例对象,包括概要、sink 提示、finder 提示和包含预期漏洞类、受影响组件、sink 路径、所需证据和禁止声明的答案密钥。Finder Agent(被测模型)接收 Curator 的提示和一个对检出版本的只读 bash shell,最多拥有 24 步工具使用机会来探索代码并返回一份或多份结构化漏洞报告。Judge Agent 接收 Finder 的提交以及答案密钥和固定评分规则,对模型身份完全盲测,返回维度级别分数和总体裁决(Excellent、Partial、Missed、Invalid)。
每月评估窗口的污染控制机制尤为关键。候选池由上次截止日期后发布且在当前截止日期当天或之前发布的安全公告组成。这意味着如果某个案例在上次版本关闭后进入公共记录,就有合理(虽然不完美)的理由认为它不属于任何早期基准集。框架明确承认这无法消除污染,但将其约束到可诚实讨论的程度。
主流模型评估结果:准确率与完成度对比
2026 年 4 月版的评估共完成 47 个案例,最终有 44 个案例被成功评分。以下是五个主流模型的核心评估数据:
GPT-5.4(OpenAI)取得平均分 83.93 分,在 44 个完成案例中,34 个获得 Excellent 评级,7 个 Partial,3 个 Missed,无 Invalid 案例。平均每个案例报告 1.07 个发现。这是当前 leaderboard 的最高分模型,展现了最强的综合漏洞发现能力。
GLM-5.1(Z-ai)平均分 80.13 分,44 个完成案例中,31 个 Excellent,11 个 Partial,2 个 Missed,无 Invalid。平均发现数 1.23 个,为所有模型中最高,表明该模型倾向于报告更多潜在发现,但这也与后续讨论的误报率问题相关。
Claude Opus 4.6(Anthropic)平均分 79.95 分,43 个完成案例中,24 个 Excellent,19 个 Partial,0 个 Missed,无 Invalid。值得注意的是,该模型没有出现任何 Missed 案例,但 Partial 比例相对较高,说明其报告完整性略逊于前两名模型。
Kimi K2.5(Moonshotai)平均分 77.18 分,仅完成 37 个案例(47 个中缺失 10 个),其中 15 个 Excellent,22 个 Partial,0 个 Missed。该模型出现了较多超时和失败案例,完成度显著低于其他模型。
Gemini 3.1 Pro Preview(Google)平均分 68.50 分,44 个完成案例中,17 个 Excellent,22 Partial,3 Missed,2 Invalid。Invalid 结果的出现直接反映了该模型在部分案例中产生了误报,这是所有模型中唯一出现 Invalid 评级的案例。
从这些数据可以提炼出几个关键工程洞察。首先,顶级模型(GPT-5.4、GLM-5.1、Claude Opus 4.6)在大多数案例上能够准确定位漏洞,但报告的完整性和精确度存在差异。GLM-5.1 的高平均发现数(1.23)是一把双刃剑:更多发现可能意味着更低的漏报率,但也可能带来更高的误报负担。其次,完成度是一个被低估的指标。Kimi K2.5 的 21% 案例失败率意味着在生产环境中使用时需要配置更长的超时和重试机制。第三,Invalid 评级的存在表明某些模型在特定漏洞类型上存在系统性问题,Gemini 3.1 Pro 的 2 个 Invalid 结果需要进一步调查根因。
评分规则的维度分解与工程意义
N-Day-Bench 的评分规则定义了五个加权维度:目标对齐(30%)、源到 sink 推理(30%)、影响与可利用性(20%)、证据质量(10%)和过度声明控制(10%)。这种维度划分直接对应了工程实践中对漏洞报告的核心要求。
目标对齐考察提交是否识别了正确的子系统、文件和 sink 路径。这是最基础的准确性指标 —— 模型必须指向正确的代码位置。在工程实践中,这意味着安全自动化工具的输出必须能够被开发人员直接用于定位问题,而不是给出一个模糊的安全描述。
源到 sink 推理考察报告是否演示了攻击者可控输入如何实际到达 sink 而非泛泛而谈。这是区分高水平漏洞发现与表面级安全扫描的关键维度。一个能够完整展示数据流路径的报告,不仅帮助开发人员理解漏洞的触发机制,也为后续的修复验证提供了可测试的基础。
影响与可利用性考察影响叙事是否在技术上可信且与证据成正比。这直接关系到安全团队对漏洞的优先级判定。一个过度夸大影响或低估影响的报告,都会导致资源分配错配。
证据质量考察报告是否引用了具体的文件、代码路径或命令,而非通用漏洞语言。这决定了报告的可操作性 —— 基于模糊描述的漏洞修复往往需要安全人员重新进行完整分析。
过度声明控制惩罚不支持的利用链、错误分类的 bug 类或与答案密钥相矛盾的声明。这是控制误报率的核心机制。框架作者在 HN 评论中明确提到「在 winfunc 我们花了大量研究时间驯服这些模型以根除误报率(它很高)」,这说明在实际工程中,控制过度声明是一个需要专门优化的方向。
误报率与 Invalid 案例的工程分析
虽然 N-Day-Bench 的公开 leaderboard 没有直接公布传统意义上的「误报率」数字,但 Invalid 评级的存在提供了更直接的观察视角。Invalid 评级出现在 Judge 认为提交存在以下问题时:报告的漏洞类与答案密钥完全不匹配、声称的代码位置不存在、或者描述的利用链在技术层面上不可信。Gemini 3.1 Pro 在 44 个完成案例中出现 2 个 Invalid,Invalid 率约 4.5%,这在工程实践中是不可忽略的比例。
从更广义的视角看,Partial 评级的占比也值得分析。Partial 表示模型识别了漏洞的某些方面但未能完整覆盖所有评分维度。Gemini 3.1 Pro 的 Partial 占比为 50%(22/44),Kimi K2.5 为 59%(22/37),均超过一半。这意味着即使在未被判定为 Missed 的案例中,也有一半以上的输出需要安全人员进行二次加工才能用于实际修复。
GLM-5.1 的高平均发现数(1.23 vs 其他模型 1.05-1.07)与较高的 Partial 占比(25%,11/44)相结合,暗示该模型可能采用了更激进的报告策略 —— 宁可多报也不漏报。这种策略在安全扫描的早期阶段可能是合理的,但需要配合人工审核流程来过滤无效发现。
漏洞类型覆盖与 CWE 类别
N-Day-Bench 的案例构建流程从 GitHub 安全公告中选取,候选仓库必须超过 10,000 星标,且必须包含明确的修复引用。框架每月从 500 个公告窗口中筛选,通过仓储多样性通道确保不会由单一仓库主导评估集。严格的案例过滤意味着评估集更偏向于拥有活跃安全公告流程的热门开源项目。
从 CWE 覆盖的角度看,GitHub 安全公告涵盖的漏洞类型分布直接决定了基准的覆盖范围。根据 MITRE Top 25 CWE 的常见类型,典型覆盖包括跨站脚本(CWE-79)、SQL 注入(CWE-89)、代码注入(CWE-94)、缓冲区溢出(CWE-119/125/787)、不安全的反序列化(CWE-502)等。N-Day-Bench 的实际 CWE 分布未在 leaderboard 页面公开,但框架设计确保了多样性通道的介入,理论上不会由单一漏洞类型主导评估集。
对于安全团队而言,这意味着 N-Day-Bench 的评估结果主要反映模型在主流 CWE 类型上的表现。对于稀有漏洞类型或非 Web 场景的特定漏洞,基准覆盖可能存在盲区。选型时需要结合自身代码库的漏洞画像进行额外验证。
工程落地的关键参数与监控建议
基于上述评估数据,为在生产环境中部署 LLM 辅助漏洞发现提供以下可落地参数与监控建议。
模型选择策略:对于准确率优先的场景,GPT-5.4 是当前综合能力最强的选择(83.93 分,0% Missed,0% Invalid)。对于希望获得更多潜在发现但接受二次审核成本的组织,GLM-5.1 的高发现数(1.23)可作为补充选项。Claude Opus 4.6 在保持零漏报的同时提供了良好的准确性,适合对漏报容忍度极低的场景。
超时与重试配置:Kimi K2.5 在 47 个案例中有 10 个出现超时或失败(21% 失败率)。在生产环境中部署该模型时,建议将单次探索超时从默认值提升至 120 秒以上,并配置至少 2 次重试机制。对于 Gemini 3.1 Pro,鉴于其 Invalid 案例的存在,建议增加答案后处理过滤层,对 Judge 标记为低置信度的发现进行人工复核。
误报控制参数:基于框架经验,建议在提示工程中强化以下约束:明确要求模型只报告有信心定位到具体文件和行号的发现;要求模型在报告中排除未被代码证据支持的利用链描述;设置发现数量的软上限(建议不超过 2 个 / 案例),避免为了追求高发现数而产生冗余报告。
监控指标体系:建议安全团队跟踪以下运行时指标:Excellent 率(模型输出被直接采纳的比例,GPT-5.4 当前为 77%)、需要人工复核的 Partial 比例(所有模型均超过 40%)、Invalid 率(当前 Gemini 为 4.5%,其他模型为 0%)以及平均发现数与最终确认漏洞数的比值。后者可以作为模型特异性误报系数的近似估计。
持续评估机制:N-Day-Bench 的月度更新机制本身就是一个值得借鉴的工程实践。建议安全团队建立内部的定期盲测流程:每季度从新发布的安全公告中抽取未公开案例,在隔离环境中评估当前模型的表现变化,及时发现能力退化或新漏洞类型的覆盖缺失。
总结
N-Day-Bench 的评估数据揭示了当前主流 LLM 在真实代码库漏洞检测任务中的能力边界。顶级模型能够在约 80% 的真实漏洞案例上提供可直接使用的完整报告,但仍有超过 40% 的案例需要安全人员进行二次加工。在生产环境中部署时,超时配置、Invalid 案例过滤和误报控制是需要专项优化的工程问题。模型选择应基于组织对准确率、漏报容忍度和人工复核成本的具体权衡,而非单纯追求 leaderboard 排名。
资料来源:N-Day-Bench Leaderboard(https://ndaybench.winfunc.com/leaderboard),N-Day-Bench Methodology(https://ndaybench.winfunc.com/methodology),Hacker News 讨论(https://news.ycombinator.com/item?id=47758347)