本文研究了自动化代码审查工具在拉取请求(PR)安全评审中的可靠性问题,揭示了一个被忽视的“裁决-诊断差距”(Verdict-Diagnosis gap):现有评估往往只关注审查工具是否阻止了恶意变更(裁决),却忽略了阻止原因是否真正指向目标漏洞(诊断)。如果一个PR因无关问题被阻止,而真正的漏洞未被识别,修复报告的问题后漏洞依然可利用,这会导致安全评估虚高。为解决这一问题,作者提出了MalPR-Bench基准,包含89个恶意PR和50个配对良性PR,覆盖44个仓库、8种语言族。每个恶意案例都预先定义了评估细则,明确目标漏洞、接受的机制描述、所需仓库证据以及不获评分的非目标发现。审查结果从裁决正确性、目标漏洞识别能力和证据验证三方面分别打分,只有三者全部满足才算“可归因阻止”。作者进一步提出了PRGuard,一个可归因的PR安全审查器,它通过非执行工具和有界检索,针对候选漏洞在仓库证据中验证其前提,以确定性方式工作。在31个公共覆盖的留出恶意PR上,PRGuard和CodeRabbit的总阻止数相近(22/31对24/31),但PRGuard正确识别目标漏洞数为22,而CodeRabbit为16,达到1.38倍差距。对于14个“缺失型”(absence-type)案例,两者都阻止了9个,PRGuard识别出9个目标漏洞,而CodeRabbit仅识别出3个。进一步分析显示,CodeRabbit在必需证据位于改动文件内时能识别16/24个目标,但当证据位于改动文件之外时,0/7个目标被识别。PRGuard还发现了五个项目中的12个此前未公开、有概念验证支持的安全漏洞。在对这些发现型PR的测试中,PRGuard/DeepSeek和CodeRabbit都阻止了10/12个,但可归因阻止分别为10/12和4/12。这一结果表明,仅看裁决(阻止与否)会显著高估自动审查的安全价值。本文的贡献在于提出了VD差距这一新视角,构建了机制级基准MalPR-Bench,并引入了更可靠的归因审查方法PRGuard,为安全代码审查的评估和工具设计提供了更严谨的方向。适合自动化安全分析、软件供应链安全及代码审查工具开发者阅读。
💡 推荐理由: 该研究揭示了当前自动化PR审查评估的盲区:仅以“是否阻止”作为指标会高估工具安全价值,导致漏洞被隐藏。PRGuard的可归因验证思路为蓝队增强代码审查能力、防止误报/漏报提供了可落地方案。
🎯 建议动作: 研究跟进