我们用 RealVuln 测试了 AI 代码扫描工具:召回率、精确率与误报对比

摘要(更新于 2026 年 7 月 20 日) :2026 年 6 月 17 日,我们拿 RealVuln 测了一遍 MonkeyScan,也记录了 DeepAudit 的内部测试结果。MonkeyScan 完成统计的 23 个 Python 项目,召回率 81.4%、精确率 54.2%、F3 为 77.5。DeepAudit 使用 Kimi K2.6,召回率 40%、精确率 35%,换算后的 F3 约为 39.4。这里分享的是一次内部测试,数据没有提交到 RealVuln 官方榜单。

现在用 AI 写出一个能跑的应用,只需要几分钟。接下来那个更麻烦的问题是:这些代码安全吗?Cursor、Claude Code、Codex 写进项目里的漏洞,AI 扫描工具究竟能找到多少,又会报出多少无效结果?

我们用开源的 RealVuln Benchmark 跑了一轮测试,并把 MonkeyScan 的结果和国产开源 Multi-Agent 代码审计工具 DeepAudit 的内部测试记录放在一起看了看。

结果很直观。MonkeyScan 在这次记录中的 Recall 和 Precision 都更高,F3 约为 DeepAudit 的 1.97 倍。不过,这只能说明两款工具在各自这次运行中的表现。测试条件没有完全拉齐,也不适合拿这个数字给产品下一个长期排名。

RealVuln 测的是什么?

RealVuln 是一个面向真实代码仓库的开源漏洞扫描 Benchmark。扫描器面对的是完整项目,需要处理调用关系、数据流和业务逻辑,难度比扫描孤立代码片段高得多。

RealVuln v1.0 的论文版本覆盖 26 个有意包含漏洞的 Python 仓库,并提供人工标注的真实漏洞与误报陷阱。它使用三个关键指标:

  • Recall(召回率) :真实漏洞中有多少被发现。召回率越高,漏掉的漏洞越少。
  • Precision(精确率) :工具报告的问题中有多少是真实漏洞。精确率越高,需要人工排查的误报越少。
  • F3 Score:同时考虑 Recall 和 Precision,其中 Recall 的权重是 Precision 的九倍。安全扫描更怕漏掉真实漏洞,F3 会把这种风险体现得更明显。

这里说的 Precision(精确率) ,指报告结果中有多少能够匹配 Ground Truth。它和传统分类指标中的 Accuracy(准确率)含义不同。

MonkeyScan 和 DeepAudit 的测试结果是什么?

2026 年 6 月 17 日的 MonkeyScan 评分结果覆盖 23 个 RealVuln Python 项目,共包含 629 条 Ground Truth。扫描共报告 945 条发现,其中 512 条匹配为 TP、433 条计为 FP、117 条为 FN;总成本为 142.80 美元。由此得到 81.4% 的 Recall、54.2% 的 Precision 和 77.5 的 F3。

工具 F3 Score Recall Precision TP / FP / FN 运行说明
MonkeyScan 77.5 81.4% 54.2% 512 / 433 / 117 23 个项目,629 条 Ground Truth
DeepAudit 约 39.4* 40.0% 35.0% 暂未保留 使用 Kimi K2.6
  • DeepAudit 的 F3 未由用户直接提供,本文依据 RealVuln 的 F3 公式,以 Recall 40% 和 Precision 35% 计算:F3 = 10 × Precision × Recall ÷ (9 × Precision + Recall),结果约为 39.4。

MonkeyScan 这次测出了 81.4% 的 Recall,测试范围内大部分已标注漏洞都被找到了,这也是 F3 较高的主要原因。

54.2% 的 Precision 也提醒我们,高召回有代价。每 100 条 MonkeyScan 报告的结果中,大约有 54 条能够匹配 RealVuln 标注的真实漏洞。剩下的结果里既有误报,也可能有 Benchmark 没有标注到的发现,仍然需要开发者复核。

DeepAudit 的内部测试记录显示 Recall 为 40%,意味着它发现了约四成纳入评分的已标注漏洞;Precision 为 35%,意味着每 100 条报告结果中约有 35 条匹配已标注漏洞。在本次记录的结果中,MonkeyScan 同时表现出更高的漏洞覆盖率和更高的报告命中比例。

1 - Precision 可以用来粗略感受告警排查量,但它并不等于严格的总体误报率。RealVuln 的匹配规则、未标注发现和扫描结果去重,都会影响这个数字。

数据边界:这次结果来自内部测试。MonkeyScan 留下了 23 个项目的汇总数据;DeepAudit 使用 Kimi K2.6,我们保留了 40% Recall 和 35% Precision 两个汇总数字,没有保留原始截图和 TP、FP、FN 明细。两次运行的配置也没有完全统一,所以这份对比更适合当作一次测试记录来看。

MonkeyScan 和 DeepAudit 有什么不同?

两款产品都使用 AI 和 Multi-Agent 思路分析代码,但它们当前的产品形态并不相同。

维度 MonkeyScan DeepAudit
产品形态 在线 AI 代码安全扫描服务 开源、可自行部署的 Multi-Agent 审计系统
代码接入 GitHub 仓库、ZIP 源码包 GitHub、GitLab、Gitea 导入,也支持即时分析
分析思路 SAST 与 AI 结合,关注漏洞位置、成因、影响和修复建议 Multi-Agent 协作审计,支持沙箱 PoC 验证与审计流程展示
交付方式 扫描结果与修复建议,降低开发者使用门槛 Web 工作台,可导出 PDF、Markdown、JSON 报告
部署门槛 无需自行部署,适合希望快速扫描的开发者和团队 需要自行准备环境和模型,更适合希望私有化与可控部署的用户
RealVuln 数据 内部测试:23 个项目,F3 77.5、Recall 81.4%、Precision 54.2% 内部测试:使用 Kimi K2.6,F3 约 39.4、Recall 40%、Precision 35%

DeepAudit 官方仓库披露,其闭源版本已经获得 49 个 CVE 编号和 6 个 GHSA 安全公告。这些是真实漏洞发现案例,与本文这次 RealVuln 测试各自回答不同的问题,放在一起参考即可。

怎么选,可以直接看使用场景:

  • 如果希望不部署环境、快速扫描一个真实项目,并获得相对清晰的风险解释,可以体验 MonkeyScan。
  • 如果重视开源、自托管、模型可配置和完整的 Agent 审计过程,DeepAudit 更值得研究。
  • 本文记录的两组 RealVuln 内部测试中,MonkeyScan 的 Recall 与 Precision 都更高。由于运行配置和原始材料并不完整,这个结果先作为阶段性参考。

为什么不能只看"发现了多少漏洞"?

扫描器报告 1,000 个问题,看起来声势很大,实际未必比报告 100 个问题更强。它可能扫得更激进,把代码异味、低风险配置和重复调用链也算了进去。

Precision 很高也不代表万事大吉。如果认证绕过、权限控制或注入漏洞被漏掉了,它就很难承担上线前的安全兜底。

评估 AI 代码扫描工具,至少要同时看:

  1. Recall:真实漏洞漏掉了多少;
  2. Precision:开发者需要处理多少无效告警;
  3. 完成率:工具是否完成全部仓库,还是在复杂项目中途失败;
  4. 漏洞类型覆盖:是否只能发现模式明显的问题,还是能理解跨文件数据流与业务逻辑;
  5. 可复现性:测试集、版本、配置和原始输出是否可以被第三方检查。

这次比较有哪些限制?

要把这次测试做成任何人都能复现的公开 Benchmark,我们还缺少下面这些材料:

  • RealVuln 的版本与仓库 commit;
  • MonkeyScan 和 DeepAudit 的具体版本;
  • MonkeyScan 使用的模型,以及两款工具的提示词、并发、超时和成本限制;
  • DeepAudit 的逐项目 TP、FP、FN 与扫描原始报告;
  • 结果匹配、去重和人工复核过程。

RealVuln v1.0 主要由漏洞密度较高的 Python 项目组成。它很适合观察扫描器发现漏洞的能力。换到 Java、Go、JavaScript 项目,或者进入"正常代码很多、漏洞很少"的生产仓库,结果可能会发生明显变化。

参考资料

相关推荐
吃饱了得干活19 小时前
从0到1实现消息已读未读:从基础设计到高并发架构
java·后端·架构
QN1幻化引擎19 小时前
认知架构调度与语言模型辅助:DalinX V8 Track 1 实验报告
人工智能·语言模型·架构
小码哥哥19 小时前
企业AI知识库本地部署的安全真相
人工智能·安全
小码哥哥20 小时前
本地部署企业AI知识库的技术实现与安全架构深度分析
人工智能·安全·安全架构
索西引擎20 小时前
【React】状态提升模式:设计原理、权衡分析与架构决策框架
前端·react.js·架构
heimeiyingwang20 小时前
【架构实战】GitOps实践:Kubernetes上的声明式交付
elasticsearch·架构·kubernetes
heimeiyingwang1 天前
【架构实战】JVM调优:GC选择与堆内存分配策略
jvm·架构
有浔则灵1 天前
GORM钩子函数详解
网络·安全·web安全