背景

可参考模糊测试综述 还有firm-afl等缝缝补补

物联网,嵌入式设备近几年广泛地普及,迅速地应用于人们生活的方方面面。然而,作为一个新兴领域,标准、系统、有效地安全管理还没有完全形成,又由于物联网网络的分布式和大规模等特性,该领域的安全问题极易给用户和企业的权益、国家社会稳定带来重大威胁,如震网病毒、MIRAI病毒。如何高效地发掘物联网设备的漏洞,及时修补漏洞,是应该研究的。

模糊测试是一种安全漏洞发掘方法,分为白盒、黑盒、灰盒测试三类方法。其中,白盒测试需要对源代码进行分析;黑盒测试完全不借助程序内部信息,生成一定格式的输入;而灰盒测试结合两者特点,利用少量目标测试程序的内部信息,再配合良好的测试策略,可以达到资源消耗和检测能力的平衡,但设计实现复杂、系统开销大。灰盒测试中,影响最大的革命性成果是AFL。AFL通过静态或者动态的二进制插桩,获得目标程序的边缘覆盖率,并以边缘覆盖率为导向进行变异,即不断挑选使边缘覆盖率增加的变异输入为种子,结合它优秀的变异策略产生新的有效输入。其模糊测试的效果很好,发现了大量的漏洞。

模糊测试这种有效的漏洞发掘技术,并没有很好地在嵌入式设备上运用。大部分厂商的固件不会公开其源码,故白盒测试行不通;黑盒测试完全不依靠程序内部信息,只是按照给定格式生成输入,虽然设计简单且适合闭源的嵌入式设备,但大多数情况下发现漏洞的效率不高;灰盒测试比黑盒和白盒测试效率更高而且不需要完全依赖源代码,但要消耗大量的系统开销和时间,而大部分嵌入式设备无法满足灰盒测试所需的吞吐率。多项研究表明,在PC端或服务器端借助虚拟化技术,对完全仿真的物联网设备进行模糊测试,可以获得远高于直接在物联网设备上进行模糊测试的吞吐量,因为真实物联网设备的硬件配置相比PC或者服务器要差得多。

方向

所以方向就是,虚拟化+灰盒测试,虚拟化部分要搞懂底层操作系统的很多东西,为什么嵌入式系统会出现仿真失败的结果,对仿真失败如何处理。灰盒测试,基本上还是AFL,因为AFL好像还是最好用的,而且它自带动态二进制插桩模式(qemu,AFL++还有),可以对它的覆盖率导向做改进,已经有人做了这些工作了,那个什么计算机发展的期刊上的模糊测试综述中概括了这些研究者做的工作。

核心还是虚拟化,虚拟成功,功能起码实现了。AFL的qemu模式,之前还看到了一些技术文档对这个模式进行了改进,看不懂也没有及时记录。