中文

HOPPER:面向库的可解释模糊测试

密码学与安全 2023-09-08 v1

摘要

尽管最先进的模糊测试器能够高效地生成输入,现有的模糊驱动仍无法充分覆盖库中的入口点。这些模糊驱动大多由开发人员手工编写,其质量取决于开发人员对代码的理解。已有工作尝试通过从代码和执行轨迹中学习 API 用法来自动生成模糊驱动,然而所生成的模糊驱动受限于被学习代码的少数特定调用序列。为应对这些挑战,我们提出 HOPPER,它无需任何领域知识来编写模糊驱动即可对库进行模糊测试。它将库模糊测试问题转化为解释器模糊测试问题。与待测库链接的解释器能够解释描述任意 API 用法的输入。为给解释器生成语义正确的输入,HOPPER 学习库中的 API 内与 API 间约束,并以语法感知方式对程序进行变异。我们实现了 HOPPER,并在 11 个真实世界库上针对手工编写的模糊测试器及其他自动化方案评估了其有效性。结果表明,HOPPER 在代码覆盖率和漏洞发现方面均大幅优于其他模糊测试器,发现了 25 个其他模糊测试器未能发现的未知漏洞。此外,我们证明了所提出的 API 内与 API 间约束学习方法能够正确学习库所隐含的约束,从而显著提升模糊测试效率。实验结果表明,HOPPER 能够开箱即用地探索库模糊测试中广泛的 API 用法。

关键词

引用

@article{arxiv.2309.03496,
  title  = {HOPPER: Interpretative Fuzzing for Libraries},
  author = {Peng Chen and Yuxuan Xie and Yunlong Lyu and Yuxiao Wang and Hao Chen},
  journal= {arXiv preprint arXiv:2309.03496},
  year   = {2023}
}

备注

To appear in the ACM CCS 2023