Breaking Through Binaries: Compiler-quality Instrumentation for Better Binary-only Fuzzing (SEC 2021)
根据二进制程序的源码是否可得,Fuzzing主要分为了两种形式,一种是基于编译器的,另一种是只有二进制的(黑盒)。目前研究对基于编译器的Fuzzer有大量的研究,却忽视了对只有二进制的研究。这方面主要的挑战在于应用Fuzzing-enhancing Program Transformations,同时尽量减少性能上的损失。
为了解决上述问题,本文提出了ZAFL,并与AFL-QEMU和AFL-Dyninst进行了比较,在Crash的产生率和Fuzzing吞吐率上有较大的提升。通常情况下,Fuzzing的流程图如下。
ZAFL的整体架构和工作流程如下图所示。其主要工作是对原始二进制文件进行IR层级的静态分析,然后对目标IR代码块进行插桩输出修改后的二进制程序。
具体细节见原文。论文代码已开源。