停止饥饿或塞满我:通过按需输入交付提升固件模糊测试效率
密码学与安全
2026-05-19 v1 软件工程
摘要
固件模糊测试因识别固件漏洞而受到关注。然而,当前方法常直接将模糊工具集成到通用软件中。通用软件在遇到I/O函数时会接收输入,但固件输入可独立于固件执行以不确定的时序和数量接收。缺乏对固件异常的完全了解,现有解决方案往往以随意方式将模糊器生成的输入传递给固件。这种情况要么使固件的处理功能被淹没(塞满),要么未能提供足够的输入数据以触发输入处理函数(饥饿)。在这两种情况下,模糊测试能力都受到削弱。本文全面研究了输入交付问题。为确定传递测试案例的最佳时机和数量,我们利用固件必须在使用数据前检查输入可用性的事实。因此,我们采用静态和动态分析将每个输入处理路径映射到三个阶段:输入检索、可用性检查和处理。恢复的语义信息允许模糊器在预期长度范围内的可用性检查点处准确地传递输入。对于多个输入路径问题,我们还优化了调度算法以覆盖更多样化的路径。我们的原型名为FIDO,可作为现有固件模糊器的附加组件来增强其测试案例交付效果。相较于Fuzzware和MULTIFUZZ中使用的随意输入交付方法,FIDO将其中位数代码覆盖率提高最高可达115%和54%;相较于需要人工指定输入交付点的SEmu,FIDO仍将其覆盖率提高最高可达19%。结果表明,FIDO能够显著加快发现已知漏洞的速度,并识别出五个此前未知的漏洞。
引用
@article{arxiv.2605.16798,
title = {Stop Starving or Stuffing Me: Boosting Firmware Fuzzing Efficiency with On-demand Input Delivery},
author = {Shandian Shen and Wei Zhou and Keming Zhao and Peng Liu and Chung Hwan Kim and Le Guan},
journal= {arXiv preprint arXiv:2605.16798},
year = {2026}
}