论文
Vul4Py:使用配对的漏洞利用和功能预言对 Python 中的自动漏洞修复进行基准测试
Vul4Py: Benchmarking Automated Vulnerability Repair in Python with Paired Exploit and Functional Oracles
摘要
自动漏洞修复 (AVR) 在程序分析、机器学习和 大语言模型 (LLM) 领域取得了快速发展,但仍然缺乏对 Python 上的 AVR 方法进行可验证的、头对头的比较。 Python 支撑着关键的网络、数据和机器学习基础设施,但现有的 Python 基准测试仅接受概念验证漏洞利用的补丁,或者仅对上游项目恰好发布的条目子集应用功能测试。因此,两者都错过了功能回归,即补丁击败了漏洞,但破坏了不相关的行为。我们提出了 Vul4Py,一个 Python AVR 基准测试,其中每个条目都带有一个配对的预言机:一个漏洞利用预言机必须在易受攻击的版本上失败并传递修复版本,以及一个项目本机 pytest 功能预言机必须同时传递这两个预言。 Vul4Py 包含来自 60 个开源项目的 100 个真实漏洞,涵盖 60 个不同的 CWE,时间跨度为 2017 年至 2025 年,每个漏洞都打包有固定的、可重现的每实例环境。使用Vul4Py,我们比较了三类六种方法:专门的漏洞修复工具,直接提示LLM,以及软件工程代理。代理占据主导地位:OpenHands 修复了 100 个漏洞中的 41 个,其中 4 个为最强的直接提示 LLM,2 个为专业工具,尽管这三个漏洞共享相同的骨干模型。配对预言机使这些计数值得信赖:它拒绝了仅利用预言机会接受的 119 个补丁中的 15 个,并且它承认的 104 个补丁中的 98 个经过手动确认在语义上与开发人员的补丁等效