摘要

模糊测试是一种发现软件中未知漏洞的测试技术。将模糊测试应用于库时,提供随机输入的核心思想保持不变,但是实现良好的代码覆盖率并非易事。库不能作为独立程序运行,而是通过另一个应用程序调用。在库中深层触发代码仍然具有挑战性,因为需要特定的API调用序列来建立必要的状态。到目前为止,图书馆是多种多样的,并且具有独特的界面,这些界面需要独特的模糊器,到目前为止,该分析器是由人类分析师编写的。为了解决这个问题,我们介绍了FuzzGen,这是一种用于在给定环境中自动合成复杂库的模糊器的工具。 FuzzGen利用整个系统分析来推断库的界面,并为该库专门合成模糊器。 FuzzGen不需要人工干预,可以应用于各种库。此外,生成的模糊器利用LibFuzzer来实现更好的代码覆盖率并暴露库深处的错误。在Debian和Android开放源代码项目(AOSP)上对FuzzGen进行了评估,选择了7个库来生成模糊器。到目前为止,我们发现了17个先前未修补的漏洞,其中包含6个分配的CVE。生成的模糊器平均可实现54:94%的代码覆盖率;与手动编写的模糊器相比,改进了6:94%,证明了FuzzGen的有效性和通用性。

介绍

现实问题

待解决的问题

主要思路

主要思路

FuzzGen背后的主要思路。 为了合成Fuzzer,FuzzGen执行整个系统分析以提取所有有效的API交互。

主要贡献

之前研究的不足

方法设计

image-20201019172744547

FuzzGen工作流。 FuzzGen以CFG(a)开头,并提取相应的A2DG(b)(有关其他模块的图,请参阅(c))。 然后将两个A2DG图合并(d)。 然后,合并的A2DG用于根据功能顺序(e)创建模糊器。 这些图由FuzzGen自动生成。

实现

FuzzGen实施概述。

实验评估

数据集

实验方法

实验效果

讨论

总结

作者介绍

收获

本文优势

可扩展结合的点

论文评价

评分: ⭐⭐⭐⭐⭐

评价:

参考资料及附件