技术分享|自研引擎ABFast如何突破模糊测试效率瓶颈
模糊测试
5/12/2023
来源

首图.gif


模糊测试是目前最为有效的漏洞挖掘技术之一,它通过生成大量的随机测试用例来运行目标程序,监控运行时crash以报告漏洞。然而,即使是当下最为流行的模糊器AFL,其覆盖机制、引导机制、种子调度、变异策略等方面都存在着改进空间,模糊测试效率仍有待提升。


安般科技依托在模糊测试领域较为前沿的思想和强劲的技术,自主研发了模糊测试引擎ABFast,在种子调度、变异方法、覆盖策略等多个方面优化模糊测试核心机制,显著提高模糊测试性能,实力保障测试目标的安全和稳定。


与AFL将所有模糊测试相关代码放在afl-fuzz.c一个文件中不同,ABFast实现了功能模块化,依据功能的不同,将代码拆分成多个文件,同时将很多的AFL全局变量封装到一个结构体中,便于后续的产品管理和维护升级。


在模糊测试核心机制优化方面,ABFast针对覆盖率、变异策略、调度策略、引导机制等方面进行修改升级。经过反复的对比测试,ABFast在覆盖率、执行速度、漏洞发现等指标的测试效率上都具备较为明显的优势。

image1.png


功能原理一:cmplog插桩方案提升覆盖率

以AFL为代表的大量灰盒模糊器存在着绕过检查(bypass check)能力较差的问题,而只有绕过各种各样的check才能覆盖到新的代码空间,因此这些模糊测试框架在代码覆盖率方面表现不佳。如下图所示,这是一个简单的魔数检查,这种检查在真实的应用程序中十分普遍,而AFL要绕开这种检查需要非常大的开销。


因此,由于变异方法简单且真实程序中的check条件复杂,AFL等框架探索深层代码空间的能力较差。

image2.png

图 1 魔数


针对以上问题,ABFast融合了相应的解决方案。

image3.png

图 2 cmplog插桩


ABFast使用cmplog插桩,记录分支条件的比较情况,通过hook比较指令,得到一系列变异规则用于变异。该方法相当于间接污点分析得到输入偏移和比较指令操作数的对应关系,只关注输入点和比较指令两个点,减少了传统动态污点分析的开销,大大提高分析的效率。在获得变异规则后,ABFast通过一些常见的编码对输入进行处理,比如大小端字节序、16进制编码、无符号与有符号转换、base64等,进一步提高了变异的适用性。


功能原理二:局部路径引导探索更细粒度状态空间

与原AFL通过单边之间异或的覆盖率反馈引导机制不同,ABFast采用局部路径的思想进行引导,可以探索更细粒度的覆盖率。局部路径是指相邻的两条边组成的路径,ABFast采用AFL的边覆盖率类似的方式,做两条边的异或,作为局部路径,使用局部路径来替代原有的边。

image4.png

图 3 局部路径引导


功能原理三:变异策略提高测试用例的有效性

ABFast修改了AFL的原生变异策略,以保护与验证检查相关的字节。验证检查是指保护错误处理代码的路径约束,如果对验证检查相关的字节进行变异,容易导致执行错误处理代码使得进程提前退出,降低fuzz效率。

image5.png

图 4 验证检查


如果路径转换导致执行路径明显缩短,大概率是因为转换导致提前执行错误处理代码,所以该转换很可能与验证检查有关。ABFast基于此观点,在变异阶段首先执行确定性变异识别与验证检查相关的关键字节。如果变异后导致路径边数减小越多,则该字节更为关键,在后续变异到关键字节时,以小概率保留变异,大概率跳过变异。这样既可以提高有效执行次数,也不会漏掉一些类似于checksum导致的漏洞。


功能原理四:智能调度策略进一步提高代码覆盖率

如果路径转换发现了包含新边的执行路径,则说明其很可能会探索到未发现的区域。换言之,路径中覆盖更多新边可能会引导模糊器找到更多未发现后代,触及更多的新代码区域。因此,在模糊测试过程中,对于执行路径包含更多未发现的新边的种子,给予其更高的优先级可能会进一步提高代码覆盖率。

「ABFast」&「AFL++」测试数据对比

ABFast与AFL对比,显然性能会更加优越。我们将ABFast与更为先进的模糊测试工具AFL++针对libexif进行对比测试,以下是部分指标的测试结果:

1. corpus count

image6.png


2. new edges on

image7.png


3. own finds

image8.png


4. saved crash

image9.png


综合测试之后可以发现,ABFast的模糊测试效率指标均优于AFL++,也充分证明了ABFast在优化模糊测试效率方面的能力处于业界领先水平。


ABFast针对模糊测试核心机制,设计了新颖的算法进行优化,同时将功能组件模块化,具备性能强大、测试效率优越、产品易于维护升级等特点。目前安般科技在ABFast的基础上实现了数据库、协议、多参数API、定向等各个领域的扩展。未来,安般科技将持续深耕模糊测试领域,在现有成果的基础上,不断优化产品性能、扩展涉足领域、完善框架建设,推动各行各业高质量发展。