ES-FUZZ:利用有状态且自适应的 MMIO 模型提升固件模糊测试的覆盖率
密码学与安全
2025-04-21 v3
摘要
灰盒模糊测试被广泛用于测试嵌入式系统(ESes)。最先进的(SOTA)灰盒模糊测试器在没有真实外设的全仿真环境中测试 ES 固件。它们通过仿真缺失的外设来获得良好的代码覆盖率。一些模糊测试器从固件二进制文件中推断固件外设的内存映射 I/O(MMIO)行为。我们发现这些模糊测试器使用无状态且非自适应的 MMIO 模型来仿真推断出的 MMIO 行为,在处理 ES 固件通过 MMIO 读取共同检索数据块时表现不佳。这为提升这些模糊测试器的代码覆盖率留下了充足的空间。我们提出 ES-Fuzz,利用自适应的有状态 MMIO 模型来克服模糊测试器的覆盖率瓶颈,从而提升每个此类模糊测试器的代码覆盖率。ES-Fuzz 与给定的模糊测试器并发运行,并在后者的覆盖率停滞时启动新一轮运行。在每次运行中,ES-Fuzz 利用高覆盖率测试用例生成新的有状态 MMIO 模型,以进一步提升覆盖率。我们在 Fuzzware 之上实现了 ES-Fuzz,并使用 24 个流行的 ES 固件对其进行了评估。结果显示,ES-Fuzz 在其中 11 个固件中将 Fuzzware 的覆盖率最高提升了 54%,并在其中 5 个固件中触发了额外的漏洞,而在其余固件中未损害覆盖率。结果表明,ES-Fuzz 的 MMIO 模型能够描述各种由 MMIO 检索的数据块,以及固件在不同上下文中对同一数据块的使用情况。
引用
@article{arxiv.2403.06281,
title = {ES-FUZZ: Improving the Coverage of Firmware Fuzzing with Stateful and Adaptable MMIO Models},
author = {Wei-Lun Huang and Kang G. Shin},
journal= {arXiv preprint arXiv:2403.06281},
year = {2025}
}
备注
15 pages, 3 figures, 4 tables