
AutoPatchBench 是一个标准化的基准测试,用于帮助研究人员和开发人员评估和比较 LLM 智能体自动修补 C/C++ 原生代码安全漏洞的有效性。
AutoPatchBench 包含了一系列测试,用于评估 LLM 为模糊测试发现的漏洞自动生成安全补丁的能力。
该基准测试旨在全面了解各种 AI 驱动的模糊测试漏洞修复方法的能力和局限性。通过提供一套一致的评估标准来促进研究的透明度和可重复性。
与用于评估软件工程智能体的通用基准测试(如 SWE-Bench 和 SWE-Bench Verified)相比,AutoPatchBench 专注于应对模糊测试发现的漏洞,这些漏洞通常涉及安全问题。
AutoPatchBench 基于 ARVO 数据集的一个子集,ARVO 是一个包含 5000 多个真实世界 C/C++ 漏洞的数据集,这些漏洞由谷歌 OSS-Fuzz 从 250 多个项目中发现。ARVO 中的每个漏洞都有一个触发输入和开发者编写用于修复问题的规范补丁。
我们为 AutoPatchBench 保留了 136 个符合补丁生成和验证条件的样本,并从中进一步筛选出 113 个样本组成 AutoPatchBench-Lite 子集,专门用于测试 AI 补丁生成工具。这些子集涵盖了真实世界漏洞的多样性和复杂性,包含 11 种不同的崩溃类型,为推动 AI 驱动的安全解决方案奠定了坚实基础。
模糊测试是一种通过触发人类测试人员难以触及的极端情况来发现安全漏洞的技术。正如 OpenSSF 的 Fuzz Introspector 团队所指出的,模糊测试前景广阔,但其挑战在于编写能够提供良好覆盖范围的有效模糊器。
此外,通过模糊测试发现崩溃问题后,要解决这些问题并非易事。这需要全面分析崩溃堆栈跟踪以确定根本原因,然后修补代码并验证修复的有效性。AI 系统可能可以在这方面提供帮助,正如谷歌在其关于 AI 驱动补丁的技术报告以及最近的 GITS-Eval 基准测试所展示的那样。
补丁验证的一个关键方面是确保修补后的程序能够保持预期的行为,而不只是检查程序是否能够通过构建并在输入最初触发崩溃时不发生崩溃。为了解决这一问题,AutoPatchBench 应用了一种特定的技术来评估生成的补丁是否在修补函数返回后产生与真实程序相同的状态。
除了完整的包含 136 个样本的 AutoPatchBench 外,Meta 还发布了 AutoPatchBench-Lite,一个仅包含 113 个样本的子集,其中崩溃的根本原因仅限于单个函数,更适合用于处于早期开发阶段或专注于修复简单崩溃场景的工具。
AutoPatchBench 是 CyberSecEval 4 的一部分,CyberSecEval 4 是一个用于评估 LLM 漏洞防御能力的基准测试套件。Meta 开源了参考实现,供社区在采用模糊测试的开源项目中使用,或构建更好的补丁模型。
【声明:本文由 InfoQ 翻译,未经许可禁止转载。】
查看英文原文:https://www.infoq.com/news/2025/05/meta-autopatchbench-ai-patching/
评论