paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Crash-avoiding program repair

避免崩溃的程序修复
ISSTA Proceedings of the 28th ACM SIGSOFT International Symposium on Software Testing and Analysis2019匹配度 2/10 · 该论文属于程序修复与灰盒模糊测试,虽与程序分析/软件工程相关,但未涉及用户核心方向(LLM/Agent、静态分析、浮点程序分析或贝叶斯程序分析),也没有形式化验证或工业落地案例的核心交叉。引用 60 inbox
Xiang Gao, Sergey Mechtaev, Abhik Roychoudhury
crossref: 2026-09-12

AI 速览

一句话:融合补丁生成与测试生成,用灰盒模糊测试优先区分候选补丁,避免修复程序崩溃。

现有程序修复系统生成的补丁虽能通过给定测试,但可能过拟合,甚至引入崩溃或漏洞,不满足无崩溃正确性要求。本文提出将测试生成与补丁生成融合为单一过程:补丁以通过现有测试为目标生成,新测试以区分候选补丁行为、过滤过拟合补丁为目标生成。核心是灰盒模糊测试策略,优先选择能区分在已有测试上行为等价的补丁的新测试,以减少过拟合。在真实漏洞和 Google OSS-Fuzz 项目上评估工具 Fix2Fit,其能产生避免崩溃的补丁;虽无形式化保证,但通过模糊测试工具及 sanitizer 交叉验证,提高了补丁无崩溃性的置信度。

问题
现有程序修复系统仅以通过给定测试为目标,生成的补丁可能过拟合测试数据,甚至引入崩溃或漏洞,不满足最基本的无崩溃正确性。
方法
将测试生成与补丁生成融合为单一过程:补丁生成以通过现有测试为目标,新测试生成以区分候选补丁行为、过滤过拟合补丁为目标;核心是一种灰盒模糊测试策略,优先选择能区分在已有测试上行为等价的补丁的新测试。
评估
在真实漏洞和 Google OSS-Fuzz 开源项目上评估工具 Fix2Fit,表明其能产生避免崩溃的补丁;虽无形式化保证,但通过模糊测试工具及其 sanitizer 的交叉验证提高了补丁无崩溃性的置信度。
原文摘要(Abstract)

Existing program repair systems modify a buggy program so that the modified program passes given tests. The repaired program may not satisfy even the most basic notion of correctness, namely crash-freedom. In other words, repair tools might generate patches which over-fit the test data driving the repair, and the automatically repaired programs may even introduce crashes or vulnerabilities. We propose an integrated approach for detecting and discarding crashing patches. Our approach fuses test and patch generation into a single process, in which patches are generated with the objective of passing existing tests, and new tests are generated with the objective of filtering out over-fitted patches by distinguishing candidate patches in terms of behavior. We use crash-freedom as the oracle to discard patch candidates which crash on the new tests. In its core, our approach defines a grey-box fuzzing strategy that gives higher priority to new tests that separate patches behaving equivalently on existing tests. This test generation strategy identifies semantic differences between patch candidates, and reduces over-fitting in program repair. We evaluated our approach on real-world vulnerabilities and open-source subjects from the Google OSS-Fuzz infrastructure. We found that our tool Fix2Fit (implementing patch space directed test generation), produces crash-avoiding patches. While we do not give formal guarantees about crash-freedom, cross-validation with fuzzing tools and their sanitizers provides greater confidence about the crash-freedom of our suggested patches.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot5379,
  title = {Crash-avoiding program repair},
  author = {Xiang Gao and Sergey Mechtaev and Abhik Roychoudhury},
  booktitle = {ISSTA},
  year = {2019},
  doi = {10.1145/3293882.3330558}
}