漏洞区域感知的灰盒模糊测试
Vulnerable Region-Aware Greybox Fuzzing
-
摘要: 1.研究背景
模糊测试是目前进行软件安全漏洞检测最有效的技术之一,已经被广泛应用于提高软件系统的可靠性与安全性。在模糊测试过程中,合理的分配测试资源是提高模糊测试漏洞检测性能的关键。然而,现有基于AFL的灰盒模糊测试技术在进行测试资源分配时,侧重基于动态指标提升代码覆盖度,缺乏对静态代码指标的利用,从而无法有效感知更有可能出现漏洞的区域并为其分配更多测试资源,造成了测试资源的浪费。
2.研究目标
我们的研究致力于克服现有基于AFL的灰盒模糊测试技术中资源分配策略对漏洞区域无感的局限,使其可以有效感知更有可能出现漏洞的区域并为其分配更多的测试资源,进而提升基于模糊测试进行漏洞检测的效率。
3.方法
我们提出了漏洞区域感知的灰盒模糊测试方法,通过轻量级的静态分析抽取程序漏洞语义相关静态指标,并将抽取语义指标插桩到目标程序,运行时收集对应执行路径的指标权重用于制导测试资源向取得更高权重的路径区域倾斜,从而引导测试资源分配过程中向静态指标标识的更有可能出现漏洞的代码区域分配更多测试资源。具体的,我们设计了四种相关性语义指标用以感知潜在漏洞区域,即敏感度指标、复杂度指标、深度指标、罕至程度指标。在运行时,如果一个测试用例执行走过的路径相应的区域指标权重越高,那么该路径对应的测试用例就会被变异生成更多新的测试用例,该路径就会被分配更多的资源进行测试,进而我们可以实现对那些更敏感、更复杂、更深以及更罕至区域的充分探索。
4.结果
我们拓展AFL实现了上述方法,构建了漏洞区域感知的模糊测试工具RegionFuzz,并通过大规模实验评估工具的有效性与效率。实验结果表明(1)漏洞区域感知可以有效提升模糊测试进行漏洞检测的性能;(2)RegionFuzz相较于其他基于AFL的模糊测试工具在给定的测试集上有较好的表现;(3)RegionFuzz可以有效的识别已知和未知的漏洞,进一步的RegionFuzz已经帮助我们发现了11个新的缺陷,获得3个CVE漏洞编号。
5.结论
我们提出了漏洞区域感知的灰盒模糊测试方法,基于四种静态代码指标(即:敏感程序指标、复杂度指标、深度指标以及罕至程度指标)识别潜在的漏洞区域,基于指标权重量化测试资源分配,从而实现引导模糊测试充分探测更有可能出现漏洞的区域,大规模实验评估验证方法有效性和效率。Abstract: Fuzzing is known to be one of the most effective techniques to uncover security vulnerabilities of large-scale software systems. During fuzzing, it is crucial to distribute the fuzzing resource appropriately so as to achieve the best fuzzing performance under a limited budget. Existing distribution strategies of American Fuzzy Lop (AFL) based greybox fuzzing focus on increasing coverage blindly without considering the metrics of code regions, thus lacking the insight regarding which region is more likely to be vulnerable and deserves more fuzzing resources. We tackle the above drawback by proposing a vulnerable region-aware greybox fuzzing approach. Specifically, we distribute more fuzzing resources towards regions that are more likely to be vulnerable based on four kinds of code metrics. We implemented the approach as an extension to AFL named RegionFuzz. Large-scale experimental evaluations validate the effectiveness and efficiency of RegionFuzz-11 new bugs including three new CVEs are successfully uncovered by RegionFuzz.