一句话:将 bug 合成建模为迷宫生成,通过迷宫路径生成带精确 ground truth 的整程序模糊测试基准。
随着模糊测试技术发展,自动合成含 bug 程序成为评估 fuzzer 的重要需求。已有方法多向现有程序注入 bug,难以保证 ground truth,因为生成程序可能包含意外 bug。本文将 bug 合成问题重新表述为迷宫生成问题:把迷宫中一系列移动编码为函数调用链,从而合成一个完整的含 bug 程序。该设计天然提供精确的 ground truth,并可利用从已有漏洞中提取的真实路径约束生成基准。作者实现工具 Fuzzle,并用五个先进 fuzzer 进行评估,实证表明其在评测 fuzzer 方面的价值。
With rapidly growing fuzzing technology, there has been surging demand for automatically synthesizing buggy programs. Previous approaches have been focused on injecting bugs into existing programs, making them suffer from providing the ground truth as the generated programs may contain unexpected bugs. In this paper, we address this challenge by casting the bug synthesis problem as a maze generation problem. Specifically, we synthesize a whole buggy program by encoding a sequence of moves in a maze as a chain of function calls. By design, our approach provides the exact ground truth of the synthesized benchmark. Furthermore, it allows generation of benchmarks with realistic path constraints extracted from existing vulnerabilities. We implement our idea in a tool, named Fuzzle, and evaluate it with five state-of-the-art fuzzers to empirically prove its value.