定向灰盒模糊测试可以引导模糊器探索特定的目标代码区域,在补丁测试等场景中取得了良好的效果。然而,如果有多个目标代码需要探索,现有的定向灰盒模糊测试器(如AFLGo和Hawkeye)往往会忽略一些目标,因为它们使用距离的调和平均值,倾向于测试可达路径较短的目标。此外,现有的定向灰盒模糊测试器由于程序中存在间接调用,无法计算出准确的距离。此外,现有的定向灰盒模糊测试器无法解决探索和利用问题,种子调度效率低下。针对这些问题,我们提出了一种动态种子距离计算方案,当可达路径遇到间接调用时,动态增加种子距离。此外,种子距离计算可以处理多目标场景下的偏差问题。利用种子距离计算方法,我们提出了一种基于置信上限算法的种子调度算法,以解决定向灰盒模糊测试中的探索和利用问题。我们实现了一个原型 RLTG,并在实际程序上对其进行了评估。原型评估表明,我们的方法优于最先进的定向模糊器 AFLGo。在多目标基准测试 Magma 上,RLTG 以 6.9 倍的速度重现错误,并且比 AFLGo 多发现 66.7% 的错误。
主要关键词