SplITS: 有效固件模糊测试的分割输入到状态映射

摘要:针对嵌入式设备上的固件进行测试的能力对于在被敌对方利用之前发现漏洞至关重要。先进的自动化测试方法会在仿真器中重新托管固件,并尝试通过多种方法(中断驱动、状态轮询)和多种设备(例如调制解调器和GPS装置)提供输入。尽管最近在重新托管中解决了外设输入生成的挑战,但固件对于从外设输入中提供的用于字符串操作的多字节魔术值的期望仍然是一个重要障碍。本文解决了单体固件中多字节魔术字符串产生的问题。我们提出了一种用于输入-状态映射和保留种子的反馈机制,以及一种解决多字节比较的高效方法。这种反馈机制允许在组合解空间中进行高效搜索。我们使用一组多样化的21个真实世界单体固件二进制文件(这些二进制文件在先前的研究中使用过)和3个来自热门开源项目的新二进制文件,对我们的原型实现SplITS进行评估。与现有技术相比,SplITS可以自动解决多达497%的多字节魔术字符串,以揭示新的代码和漏洞,并且在包含字符串比较的12个真实世界固件二进制文件中(包括先前的研究广泛分析的文件),SplITS具有统计显著的优势。我们观察到覆盖的块增加了多达161%,并且发现了6个以字符串比较保护的新漏洞。值得注意的是,在先前的工作中找到的由于字符串比较而受到保护的深层且难以复现的漏洞被一致地发现。为了促进该领域的未来研究,我们在https://github.com/SplITS-Fuzzer发布了SplITS、新的固件数据集和漏洞分析。

作者:Guy Farrelly, Paul Quirk, Salil S. Kanhere, Seyit Camtepe, Damith C. Ranasinghe

论文ID:2308.07860

分类:Cryptography and Security

分类简称:cs.CR

提交时间:2023-08-16

PDF 下载: 英文版 中文版pdf翻译中