paperbot · PL 论文追踪

全部论文 待读 收藏

P2 Terminator: Enabling Efficient Fuzzing of Closed-Source GUI Programs by Automatic Coverage-Guided Termination

Terminator:通过自动的覆盖率引导终止实现闭源 GUI 程序的高效模糊测试
ASE 2025 40th IEEE/ACM International Conference on Automated Software Engineering (ASE)2025匹配度 2/10 · 该论文属于软件测试/模糊测试与二进制改写领域,核心是让闭源 GUI 程序在覆盖率不再增长时自动终止,并未涉及用户关注的静态分析、LLM/Agent、浮点程序分析或贝叶斯程序分析等方向;与程序分析仅有较远的动态分析关联。引用 0 inbox
Jonas Zabel, Philip Kolvenbach, Steven Arzt
crossref: 2026-09-12

AI 速览

一句话:提出 Terminator,改写二进制使闭源 GUI 程序在覆盖率不再增长时自动终止,从而高效 fuzzing。

对专有文件处理程序做模糊测试时,通常要反复执行整个程序并根据正常/异常终止判断结果,但 GUI 程序(图像编辑器、媒体播放器、文档阅读器等)在解析完输入后往往不会自行退出,fuzzer 必须人为界定执行范围并强制终止。现有做法或需源码、或需专家逆向以构造测试 harness;直接作用于未修改二进制的方案则依赖固定超时、CPU 占用下降阈值等启发式,作者证明这些启发式实现简单但低效且不可靠。为此提出 Terminator:它自动改写被测程序二进制,以代码覆盖率为信号,当覆盖率在无用户交互的情况下不再增长时自动终止程序。该机制一方面保证输入处理结束后尽快退出,另一方面避免在输入处理过程中被过早终止。实验表明 Terminator 优于超时与 CPU 占用两类启发式,显著提升模糊测试效率。

问题
闭源 GUI 文件处理程序在解析完输入后不会自动退出,fuzzer 难以界定单次执行的范围;已有的超时或 CPU 占用阈值启发式效率低、效果差,而构造 harness 又需要源码或人工逆向。
方法
Terminator 自动改写被测程序的二进制,注入以代码覆盖率为信号的终止逻辑:当覆盖率停止增长且无用户交互时终止程序,从而在输入处理完成后及时结束、又不会过早终止。
评估
在闭源 GUI 文件处理程序上与固定超时启发式和 CPU 占用阈值启发式进行对比实验,表明 Terminator 显著提高 fuzzing 效率。
原文摘要(Abstract)

When fuzzing a proprietary file-processing program, one typically executes the whole program repeatedly with sampled input files, and distinguishes between normal and abnormal termination. While this works well for many command-line utilities, it is more complicated for programs that usually do not terminate after input file processing. Many real-world applications are examples of such programs, in particular, those with a graphical user interface (GUI), such as image editors, media players and document viewers. In these cases, the fuzzer has to define the scope of the execution and forcefully terminate the program under test.In order to efficiently fuzz test file-processing programs with a GUI, a standard approach is to define a dedicated testing harness, which executes the file processing in isolation and strips irrelevant program parts. However, this either requires the source code of the program or an expert’s effort in reverse engineering. Alternative approaches work on the unmodified binary of the program, and use a heuristic to decide when the input processing is likely done. For example, one can terminate the program after a fixed timeout or once its CPU usage has dropped below a threshold. We show that these heuristics, while simple to implement, are inefficient and ineffective.We present Terminator, a fully-automated approach to facilitate efficient fuzzing of closed-source file-processing programs with a GUI. Terminator modifies the binary of the program under test so that it automatically terminates when code coverage stops increasing without user interaction. Consequently, Terminator (1) ensures that the program terminates soon after the input processing instead of waiting for user interaction, and, at the same time, (2) prevents premature termination during input processing. We show that Terminator outperforms the timeout and CPU usage heuristics and significantly increases fuzzing efficiency.

链接与引用

DOI 原文 ·

BibTeX
@inproceedings{paperbot9207,
  title = {Terminator: Enabling Efficient Fuzzing of Closed-Source GUI Programs by Automatic Coverage-Guided Termination},
  author = {Jonas Zabel and Philip Kolvenbach and Steven Arzt},
  booktitle = {ASE},
  year = {2025},
  doi = {10.1109/ase63991.2025.00136}
}