摘要
灰盒模糊测试技术已被证实是一种高效实用的漏洞挖掘技术,在漏洞挖掘领域应用广泛,有大量的高危漏洞都是通过灰盒模糊测试找到的.AFL是灰盒模糊测试的经典代表之作,大量后续灰盒模糊测试都是在AFL的基础上根据不同条件进行改进得到的,可以说AFL是主流灰盒模糊测试的奠基之作.但是AFL仍然存在一些问题,AFL在对目标待测程序进行插桩时采用随机数代表桩点,在测试过程中采用两个桩点的随机数进行异或运算,得到结果用来表示一条边.这种方式使得在进行边的统计时就会出现HASH碰撞问题,导致有一定的概率新边无法被发现,从而影响AFL的漏洞挖掘效率.这个问题会随着待测程序的代码规模变大而显得愈发突出.本文通过改进汇编级插桩的方式,将基本块敏感的插桩改为分支敏感的插桩,从而将程序的控制流图改变为二叉树的形式,并采用非随机编码来标记各个桩点,较好地解决了HASH碰撞的问题.实验证明该方法有效,且由于该改进对于上层是透明的,可以应用于各个基于AFL的灰盒模糊测试工具中,从而提高模糊测试的效率.
- 单位