AutoPatchBench包含一系列测试,旨在评估LLM自主生成安全补丁以修复通过模糊测试发现的漏洞的能力。
该基准测试旨在促进对各种AI驱动的修复模糊测试发现的漏洞方法的能力和局限性的全面理解。通过提供一套一致的评估标准,AutoPatchBench促进了研究的透明性和可重复性。
与用于评估软件工程代理的一般基准测试如SWE-Bench和SWE-Bench Verified相比,AutoPatchBench专注于通过模糊测试技术发现的漏洞所带来的特定挑战,这些漏洞通常涉及安全问题。
AutoPatchBench基于ARVO的一个子集,这是一个由Google的OSS-Fuzz在超过250个项目中发现的5000多个真实C/C++漏洞的数据集。ARVO中的每个漏洞都配有一个触发输入和开发者编写的修复补丁。
我们为AutoPatchBench保留了136个样本,这些样本满足补丁生成和验证的必要条件。从这个精简集,我们创建了一个113个AutoPatchBench-Lite样本的下采样子集,以提供一个专注的基准测试AI补丁生成工具。这些子集保留了真实漏洞的多样性和复杂性,包括11种不同的崩溃类型,为推进AI驱动的安全解决方案提供了坚实的基础。
模糊测试是一种通过达到人类测试人员难以遇到的边缘情况来发现安全漏洞和漏洞的技术。正如OpenSSF的Fuzz Introspector的创建者所指出的,模糊测试是一种有前途的方法,但其挑战在于编写有效的模糊器以提供良好的覆盖率。
此外,一旦通过模糊测试发现崩溃,解决它并非易事,需要对崩溃堆栈跟踪进行彻底分析以确定根本原因,然后修补代码并验证修复的有效性。这是AI系统可能提供帮助的地方,正如Google在其关于AI驱动补丁的技术报告以及最近的GITS-Eval基准测试中所展示的。
补丁验证的一个关键方面是确保修补后的程序保持其预期行为,这远远超出了检查程序构建并在输入原始触发崩溃的情况下不崩溃。为了解决这个问题,AutoPatchBench应用了一种特定技术来评估生成的补丁是否在修补函数返回后产生与真实程序相同的程序状态。
除了包含ARVO的完整136个样本的AutoPatchBench,Meta还发布了AutoPatchBench-Lite,这是一个仅包含113个样本的较小子集,其中崩溃的根本原因仅限于单个函数。这使其更适合于早期开发的工具或专注于更简单崩溃场景的工具。
AutoPatchBench是CyberSecEval 4的一部分,这是一个用于评估LLM漏洞防御能力的广泛基准套件。Meta开源了其参考实现供社区在使用模糊测试的开源项目中利用或构建更好的补丁模型。