论文

MASFuzzer:通过多维 API 序列生成模糊驱动程序和自适应调度

MASFuzzer: Fuzz Driver Generation and Adaptive Scheduling via Multidimensional API Sequences

摘要

软件库的模糊测试依赖于模糊驱动程序来调用库 API。传统上,这些驱动程序是由开发人员手动编写的,这个过程非常耗时,而且通常不足以执行复杂的程序行为。虽然最近的研究探索了使用 大语言模型 (LLM) 来自动生成模糊驱动程序,但生成的驱动程序通常无法覆盖深层程序分支。为了应对这些挑战,我们提出了 MASFUZZER,这是一个模糊测试框架,它将多维 API 序列构造与自适应模糊测试调度策略相结合,以改进库测试。 MASFUZZER 的核心是通过参考代码库中的 API 使用示例并应用基于突变传播和语义感知的 API 序列挖掘来合成上下文相关的 API 调用序列。这些多维 API 序列作为 LLM 生成有效初始驱动程序的基础。此外,MASFUZZER 还采用了覆盖引导调度程序,优先考虑最有前途的驱动程序的测试时间,以及驱动程序突变策略来改进它们。这使得模糊驱动程序的系统生成能够探索以前未经测试的代码区域。我们在 12 个广泛使用的开源库上评估 MASFUZZER。结果表明,MASFUZZER 的代码覆盖率比最先进的技术高出 8.54%。此外,MASFUZZER 在经过广泛测试的库中发现了 16 个以前未知的漏洞,其中 14 个已得到开发人员确认,9 个已分配 CVE 标识符。这些结果表明 MASFUZZER 为模糊测试软件库提供了一种高效实用的方法。