paperbot · PL 论文追踪

全部论文 待读 收藏

P2 <scp>ClosureX:</scp> Compiler Support for Correct Persistent Fuzzing

ClosureX:面向正确持久化模糊测试的编译器支持
ASPLOS Proceedings of the 30th ACM International Conference on Architectural Support for Programming Languages and Operating Systems, Volume 12025匹配度 2/10 · 该论文研究基于 LLVM pass 的持久化 fuzzing 状态恢复,属于编译技术与动态测试方向;与用户关注的静态分析、LLM/Agent 交叉、浮点程序分析或贝叶斯程序分析均无直接关联。引用 0 inbox
Rishi Ranjan, Ian Paterson, Matthew Hicks
crossref: 2026-09-12dblp: 2026-09-12

AI 速览

一句话:用 LLVM pass 精细恢复测试用例状态,使持久化 fuzzing 兼顾高吞吐与语义正确性。

持久化 fuzzing 通过复用单个进程避免反复创建、初始化和销毁,从而显著提高吞吐;但跨测试用例残留的进程状态会导致语义不一致,造成漏报崩溃、误报崩溃并削弱 fuzzer 有效性。作者将现有执行机制视为状态恢复连续谱,提出 ClosureX:仅重置与测试用例执行相关的状态,以获得接近持久化 fuzzing 的性能和重量级状态恢复的正确性。ClosureX 实现为一组 LLVM pass 并集成到 AFL++。在十个流行开源模糊测试目标上,ClosureX 保持语义正确,测试用例执行率较 AFL++ 平均提升超过 3.5 倍,发现 bug 更稳定且快 1.9 倍,并发现 15 个 0-day 漏洞(4 个 CVE)。

问题
持久化 fuzzing 虽能消除进程创建与初始化开销,但测试用例之间的状态残留会造成语义不一致,导致漏报、误报崩溃并降低模糊测试有效性。
方法
作者将不同执行机制视为状态恢复连续谱,提出 ClosureX,仅重置测试用例执行专属状态,并以一组 LLVM pass 实现并集成到 AFL++。
评估
在十个流行开源模糊测试目标上评估语义正确性、执行率和 bug 发现能力,结果显示执行率平均提升超过 3.5 倍,发现 bug 快 1.9 倍,并发现 15 个 0-day 漏洞和 4 个 CVE。
原文摘要(Abstract)

Fuzzing is a widely adopted and pragmatic methodology for bug hunting as a means of software hardening. Research reveals that increasing fuzzing throughput directly increases bug discovery rate. The highest performance fuzzing strategy is persistent fuzzing, which reuses a single process for all test cases by looping back to the start upon completion, instead of exiting. This eliminates all process creation, initialization, and tear-down costs---which are on-par with execution cost. Unfortunately, persistent fuzzing leads to semantically inconsistent program states because process state changes from one test case remain for subsequent test cases. This semantic inconsistency results in missed crashes, false crashes, and overall incorrectness that undermines fuzzer effectiveness. We observe that existing fuzzing execution mechanisms exist on a continuum, based on the amount of state that gets discarded and restored between test cases. We present ClosureX, a fuzzing execution mechanism that sits at a new spot on this state restoration continuum, where only test-case-execution-specific state is reset. This fine-grain state restoration provides near-persistent performance with the correctness of heavyweight state restoration. We construct ClosureX as a set of LLVM passes that integrate with AFL++. Our evaluation on ten popular open-source fuzzing targets show that ClosureX maintains semantic correctness, while increasing test case execution rate by over 3.5x, on average, compared to AFL++. ClosureX also finds bugs more consistently and 1.9x faster than AFL++, with ClosureX discovering 15 0-day bugs (4 CVEs).

链接与引用

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

BibTeX
@inproceedings{RanjanPH25,
  title = {<scp>ClosureX:</scp>
            Compiler Support for Correct Persistent Fuzzing},
  author = {Rishi Ranjan and Ian Paterson and Matthew Hicks},
  booktitle = {ASPLOS},
  year = {2025},
  doi = {10.1145/3669940.3707281}
}