$\mu$AFL:面向微控制器固件的非侵入式反馈驱动模糊测试
密码学与安全
2022-04-20 v3 软件工程
摘要
模糊测试是发现软件缺陷最有效的方式之一。然而,将其应用于微控制器固件面临诸多挑战。例如,基于重宿主(rehosting)的方案无法准确建模外设行为,因而不能用于模糊测试相应的驱动代码。本工作中,我们提出AFL,一种用于模糊测试微控制器固件的硬件在环方法。它利用现有嵌入式系统开发中的调试工具构建兼容AFL的模糊测试框架。具体而言,我们使用调试适配器(debug dongle)来桥接PC上的模糊测试环境与微控制器设备上的目标固件。为在不进行昂贵代码插桩的情况下收集代码覆盖率信息,AFL依赖ARM ETM硬件调试特性,该特性透明地收集指令跟踪并将结果流式传输至PC。然而,原始ETM数据晦涩难懂,需要大量计算资源来恢复实际指令流。因此我们提出了一种替代性的代码覆盖率表示,其保留了与原AFL算法相同的路径敏感性,但可直接作用于原始ETM数据而无需与反汇编指令进行匹配。为进一步降低工作负载,我们使用DWT硬件特性有选择地收集感兴趣的运行时信息。我们在来自两大主要供应商NXP和STMicroelectronics的两块真实评估板上评估了AFL。借助我们的原型,我们在STMicroelectronics随SDK发布的驱动代码中发现了十个零日漏洞,在NXP的SDK中发现了三个零日漏洞。已为这些漏洞分配了八个CVE。考虑到供应商SDK在实际产品中的广泛采用,我们的结果令人警醒。
引用
@article{arxiv.2202.03013,
title = {$\mu$AFL: Non-intrusive Feedback-driven Fuzzing for Microcontroller Firmware},
author = {Wenqiang Li and Jiameng Shi and Fengjun Li and Jingqiang Lin and Wei Wang and Le Guan},
journal= {arXiv preprint arXiv:2202.03013},
year = {2022}
}
备注
44th International Conference on Software Engineering (ICSE 2022)