中文

FishFuzz:撒下更大的网以捕获更深的漏洞

密码学与安全 2022-07-28 v1

摘要

灰盒模糊测试(greybox fuzzing)是开发过程中发现漏洞的事实标准。模糊测试器执行大量输入以最大化所覆盖代码的数量。近年来,定向灰盒模糊测试器(DGFs)提出了一种超越“仅”覆盖的替代策略:通过选择“更近”的种子将测试驱动至特定代码目标。DGFs经历不同阶段:探索(即到达有趣位置)和利用(即触发漏洞)。在实践中,DGFs利用覆盖率直接度量探索,而利用至多通过在不同目标间交替来间接度量。具体而言,我们观察到现有DGFs存在两个局限:(i)其距离度量缺乏精度,即将多条路径和多个目标平均化为单一分数(以决定优先处理哪些种子);(ii)它们以轮询方式为种子分配能量,而不调整目标的优先级(已充分探索的目标应被丢弃)。我们提出FishFuzz,其灵感来自拖网捕鱼:先撒下宽网刮取高覆盖率,再缓缓收网以最大化收获。我们模糊测试器的核心是一种新颖的种子选择策略,建立在两个概念之上:(i)一种新颖的多距离度量,其精度与目标数量无关;(ii)一种动态目标排序以自动丢弃已耗尽的目标。该策略使FishFuzz能够无缝扩展到数万个目标,并在探索与利用阶段间动态交替。我们通过将所有消毒器(sanitizer)标签作为目标来评估FishFuzz。将FishFuzz与现代DGFs及覆盖引导模糊测试器进行广泛比较表明,与直接竞争者相比,FishFuzz达到了更高覆盖率,复现已有漏洞(快70.2%),并最终在44个程序中发现了25个新漏洞(18个CVE)。

关键词

引用

@article{arxiv.2207.13393,
  title  = {FishFuzz: Throwing Larger Nets to Catch Deeper Bugs},
  author = {Han Zheng and Jiayuan Zhang and Yuhang Huang and Zezhong Ren and He Wang and Chunjie Cao and Yuqing Zhang and Flavio Toffalini and Mathias Payer},
  journal= {arXiv preprint arXiv:2207.13393},
  year   = {2022}
}