深入研究:通过以代码覆盖率为导向的模糊检测在嵌入式系统中查找 0DAY 漏洞 (翡翠宴会厅A)
覆盖率导向的模糊检测是发现 PC 等强大系统中漏洞的一种前沿技术,是近几年来对无数 0days 漏洞研究的重要贡献者。
不幸的是,这种突破性的方法尚未应用于发现嵌入式设备(如网络路由器、IP 摄像机等)中的缺陷。我们找到了该问题的一些原因,具体如下:
作为封闭生态系统,嵌入式设备通常没有内置 shell 访问机制,也没有内置编译器和调试器等开发工具。这样可以引入模糊测试工具,直接运行和查找这些封闭生态系统或嵌入式设备中的缺陷。
可下载时(很少),大多数嵌入式固件并非开源的,这限制了导向型模糊测试工具(如 AFL 和 LibFuzzer)的使用,因为这些工具要求在编译时将源代码注入分支工具。
已有工作大多数都集中在英特尔架构上,而所有嵌入式设备都运行在 ARM、MIPS 或 PowerPC 等其他中央处理器(CPU)上。我们的研究表明,针对这些架构的模糊测试工具严重匮乏。
本研究旨在克服上述问题,针对嵌入式系统打造一款新的引导式模糊测试工具。
我们模拟过固件,因此我们推出我们自己的模糊测试工具和调试工具。首先,我们将解释如何直接从物理设备中提取固件,然后使用许多涉及静态二进制依赖性复制的技巧在虚拟机上进行仿真,针对 NVRAM 模拟为固件打补丁,从而为程序配置提供实实在在的响应。
我们将引入一个新的、功能强大的动态二进制插桩(DBI)框架。该框架可以支持如今使用的所有平台和嵌入式架构,包括 Arm、Arm64、Mips、PowerPC 和 Sparc(另外,还支持 Intel X86)。我们将详细解释该框架的设计和实现。因此,除该项目外,读者还可以看到许多其他 DBI 应用程序。
我们还将讨论如何构建一个高级引导式模糊测试工具,以运行仿真固件。核心部分使用我们的 DBI 框架,该框架无需固件源码,并且支持市场上所有嵌入式 CPU 中,漏洞只能在二进制应用程序中被发现。
在短短几个月时间内,我们的模糊测试工具在一些非常流行的嵌入式网络设备中已经发现很多 0days 漏洞。其中,有几个漏洞允许预认证远程代码执行,从而会影响数百万用户,并且可能变成大规模感染的僵尸网络-蠕虫。如果供应商会及时修复这些缺陷,我们将在讲座中公开这些漏洞。
我们会为大家带来技术含量更高,但不失娱乐与趣味性的演示内容,其中不乏激动人心的演示。