一句话:提出面向模糊测试的多架构模拟框架 Icicle,支持架构无关插桩,在多种 ISA 固件中发现新漏洞。
基于模拟的模糊测试可在无源码、真实硬件执行困难时测试固件,但现有工具多改造通用模拟器,插桩与反馈常按 ISA 临时定制,使先进 fuzzing 技术局限于 x86 或 ARM 等少数架构。本文设计并实现面向模糊测试的多架构模拟框架 Icicle,使插桩只需以架构无关方式添加一次且开销低,并将其用作最先进 ARM 固件 fuzzer Fuzzware 的模拟器,复现结果并发现新 bug。评估覆盖 x86-64、ARM/AArch64、RISC-V、MIPS,验证保真度与架构无关插桩有效性;对 TI MSP430 真实固件进行 fuzzing,发现 7 个新 bug。
Emulation-based fuzzers enable testing binaries without source code and facilitate testing embedded applications where automated execution on the target hardware architecture is difficult and slow. The instrumentation techniques added to extract feedback and guide input mutations towards generating effective test cases is at the core of modern fuzzers. But, modern emulation-based fuzzers have evolved by re-purposing general-purpose emulators; consequently, developing and integrating fuzzing techniques, such as instrumentation methods, is difficult and often added in an ad-hoc manner, specific to an instruction set architecture (ISA). This limits state-of-the-art fuzzing techniques to a few ISAs such as x86/x86-64 or ARM/AArch64; a significant problem for firmware fuzzing of diverse ISAs. This study presents our efforts to re-think emulation for fuzzing. We design and implement a fuzzing-specific, multi-architecture emulation framework—Icicle. We demonstrate the capability to add instrumentation once, in an architecture agnostic manner, with low execution overhead. We employ Icicle as the emulator for a state-of-the-art ARM firmware fuzzer—Fuzzware—and replicate results. Significantly, we demonstrate the availability of new instrumentation in Icicle enabled the discovery of new bugs. We demonstrate the fidelity of Icicle and efficacy of architecture agnostic instrumentation by discovering bugs in benchmarks that require a known and specific operational capability of instrumentation techniques, across a diverse set of instruction set architectures (x86-64, ARM/AArch64, RISC-V, MIPS). Further, to demonstrate the effectiveness of Icicle to discover bugs in a currently unsupported architecture in emulation-based fuzzers, we perform a fuzzing campaign with real-world firmware binaries for Texas Instruments’ MSP430 ISA and discovered 7 new bugs.