一句话:提出硬件在环的微控制器固件模糊测试框架 μAFL,用 ARM ETM/DWT 收集覆盖率并发现多个零日漏洞。
微控制器固件模糊测试面临挑战:重托管方案难以准确建模外设行为,无法测试相应驱动代码。μAFL 采用硬件在环方式,利用嵌入式调试工具构建与 AFL 兼容的框架,用调试器连接 PC 端测试环境与 MCU 目标固件。为在无插桩下收集覆盖率,它依赖 ARM ETM 硬件调试特性透明收集指令轨迹并传输到 PC;针对原始 ETM 数据难解析、计算开销大的问题,提出保持 AFL 路径敏感度且可直接处理原始 ETM 的覆盖率表示,并用 DWT 选择性收集运行时信息。在 NXP 与 ST 真实开发板上评估,发现 ST SDK 驱动 10 个、NXP SDK 3 个零日漏洞,其中 8 个获 CVE 编号。
Fuzzing is one of the most effective approaches to finding software flaws. However, applying it to microcontroller firmware incurs many challenges. For example, rehosting-based solutions cannot accurately model peripheral behaviors and thus cannot be used to fuzz the corresponding driver code. In this work, we present $\mu$ AFL, a hardware-in-the-loop approach to fuzzing microcontroller firmware. It leverages debugging tools in existing embedded system development to construct an AFL-compatible fuzzing framework. Specifically, we use the debug dongle to bridge the fuzzing environment on the PC and the target firmware on the microcontroller device. To collect code coverage information without costly code instrumentation, $\mu$ AFL relies on the ARM ETM hardware debugging feature, which transparently collects the instruction trace and streams the results to the PC. However, the raw ETM data is obscure and needs enormous computing resources to recover the actual instruction flow. We therefore propose an alternative representation of code coverage, which retains the same path sensitivity as the original AFL algorithm, but can directly work on the raw ETM data without matching them with disassembled instructions. To further reduce the workload, we use the DWT hardware feature to selectively collect runtime information of interest. We evaluated $\mu$ AFL on two real evaluation boards from two major vendors: NXP and STMicroelectronics. With our prototype, we discovered ten zero-day bugs in the driver code shipped with the SDK of STMicroelectronics and three zero-day bugs in the SDK of NXP. Eight CVEs have been allocated for them. Considering the wide adoption of vendor SDKs in real products, our results are alarming.