中文

SplITS:面向高效固件模糊测试的输入到状态映射分割方法

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

摘要

在嵌入式设备上测试固件的能力对于在漏洞被恶意利用前发现它们至关重要。最先进的自动化测试方法在模拟器中重托管(rehost)固件,并尝试通过多种方法(中断驱动、状态轮询)和大量设备(如调制解调器和 GPS 单元)来提供输入。尽管近期在解决重托管中外设输入生成挑战方面取得了进展,固件期望来自外设输入的多字节魔数字符串用于字符串操作,仍然构成了显著障碍。我们解决了单体固件中多字节魔数字符串带来的阻碍。我们提出了用于输入到状态映射的反馈机制,并为定向替换变异保留种子,以高效方法解决多字节比较。该反馈可在组合解空间上高效搜索。我们用先前工作中使用的 21 个多样化真实世界单体固件二进制文件,以及来自流行开源项目的 3 个新二进制文件评估了我们的原型实现 SplITS。与最先进水平相比,SplITS 自动多解决了 497% 用于保护后续执行以揭示新代码和漏洞的多字节魔数字符串。在 12 个含字符串比较的真实世界固件二进制文件中的 11 个(包括那些被先前工作广泛分析的)上,SplITS 均取得了统计显著的更优表现。我们观察到代码块覆盖率最高提升 161%,并发现了 6 个仍受字符串比较保护的新漏洞。显著的是,先前工作识别出的由比较保护、深藏且难以复现的漏洞被稳定地发现。为促进该领域未来研究,我们在 https://github.com/SplITS-Fuzzer 发布了 SplITS、新固件数据集及漏洞分析。

关键词

引用

@article{arxiv.2308.07860,
  title  = {SplITS: Split Input-to-State Mapping for Effective Firmware Fuzzing},
  author = {Guy Farrelly and Paul Quirk and Salil S. Kanhere and Seyit Camtepe and Damith C. Ranasinghe},
  journal= {arXiv preprint arXiv:2308.07860},
  year   = {2023}
}

备注

Accepted ESORICS 2023