paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Accelerating Fuzzing through Prefix-Guided Execution

通过前缀引导执行加速模糊测试
OOPSLA 7(OOPSLA1)2023匹配度 2/10 · 该论文属于动态程序分析与模糊测试领域,与用户核心方向(PL与AI交叉、静态分析、浮点程序分析、贝叶斯程序分析)无直接关联;虽在AFL++上实现并在真实项目基准MAGMA评估,符合用户对工业落地和问题驱动研究的偏好,但主题不匹配。引用 20 inbox
Shaohua Li, Zhendong Su
crossref: 2026-09-10

AI 速览

一句话:提出前缀引导执行(PGE),在执行前缀显示变异用例难以提升覆盖率时提前终止,从而加速覆盖率引导的模糊测试。

覆盖率引导的模糊测试需要执行所有变异用例,但绝大多数不会增加代码覆盖率,造成大量无效执行开销。本文提出前缀引导执行(PGE):观察到只有极小部分变异用例能增加覆盖率,且其能否增加覆盖率可从部分执行中准确推断。PGE 监控用例执行,一旦执行前缀表明该用例不太可能提升覆盖率,就提前终止。作者在 AFL++ 上实现原型 AFL++-PGE,并在 MAGMA 基准(来自 9 个真实项目的 21 个程序)上评估。48 小时模糊测试后,AFL++-PGE 发现更多缺陷、发现速度更快且覆盖率更高,该方法通用,可惠及基于 AFL 的模糊器家族。

问题
覆盖率引导的模糊测试需执行全部变异用例,但大多数用例不增加覆盖率,造成显著性能开销;不完整执行就判断用例能否增加覆盖率是一个矛盾性挑战。
方法
提出前缀引导执行(PGE),通过监控执行前缀,在判断用例不太可能增加覆盖率时提前终止,并在 AFL++ 上实现原型 AFL++-PGE。
评估
在 MAGMA 基准(21 个程序,来自 9 个真实项目)上评估,48 小时模糊测试中 AFL++-PGE 相比基线发现更多缺陷、发现更快且覆盖率更高。
原文摘要(Abstract)

Coverage-guided fuzzing is one of the most effective approaches for discovering software defects and vulnerabilities. It executes all mutated tests from seed inputs to expose coverage-increasing tests. However, executing all mutated tests incurs significant performance penalties---most of the mutated tests are discarded because they do not increase code coverage. Thus, determining if a test increases code coverage without actually executing it is beneficial, but a paradoxical challenge. In this paper, we introduce the notion of prefix-guided execution (PGE) to tackle this challenge. PGE leverages two key observations: (1) Only a tiny fraction of the mutated tests increase coverage, thus requiring full execution; and (2) whether a test increases coverage may be accurately inferred from its partial execution. PGE monitors the execution of a test and applies early termination when the execution prefix indicates that the test is unlikely to increase coverage. To demonstrate the potential of PGE, we implement a prototype on top of AFL++, which we call AFL++-PGE. We evaluate AFL++-PGE on MAGMA, a ground-truth benchmark set that consists of 21 programs from nine popular real-world projects. Our results show that, after 48 hours of fuzzing, AFL++-PGE finds more bugs, discovers bugs faster, and achieves higher coverage. Prefix-guided execution is general and can benefit the AFL-based family of fuzzers.

链接与引用

DOI 原文 · PDF(开放获取) ·

BibTeX
@article{paperbot2038,
  title = {Accelerating Fuzzing through Prefix-Guided Execution},
  author = {Shaohua Li and Zhendong Su},
  journal = {Proceedings of the ACM on Programming Languages},
  volume = {7},
  number = {OOPSLA1},
  year = {2023},
  doi = {10.1145/3586027}
}