主要观点总结
本文介绍了在模糊测试中引入数据覆盖的概念,通过实现数据覆盖来提高模糊测试的性能和发现更多程序中的隐藏问题。文章详细描述了数据覆盖的实现方法,包括静态分析和插桩、运行时数据捕获、动态调整测试方向等技术。同时,作者通过实验评估了数据覆盖的效果,并与其他模糊测试工具进行了对比。最后,作者介绍了WingTecher团队的研究背景和成果,并提供了联系方式。
关键观点总结
关键观点1: 数据覆盖的概念和重要性
在模糊测试中,数据覆盖是一个重要的概念,它允许测试工具更深入地探索程序中的数据结构,从而提高测试的效率和发现更多潜在的bug。
关键观点2: 数据覆盖的实现方法
作者通过静态分析和插桩、运行时数据捕获、动态调整测试方向等技术实现了数据覆盖。其中,插桩策略、数据结构和调度算法是数据覆盖实现的关键部分。
关键观点3: 实验评估结果
作者通过实验评估了数据覆盖的效果,并与其他模糊测试工具进行了对比。实验结果表明,数据覆盖可以显著提高模糊测试的性能和发现更多潜在的bug。
关键观点4: WingTecher团队介绍
软件安全保障小组隶属于清华大学软件学院,专注于保障大规模软件系统安全的研究。该团队在软件缺陷的自动挖掘与理解、大规模软件系统的安全测评等方面取得了重要成果。
文章预览
今天要为大家推荐的论文是来自USENIX Security 2024的 D ata Coverage for Guided Fuzzing ,由清华大学WingTecher 团队完成并投稿。 1. 代码覆盖和模糊测试 今天来聊聊模糊测试中的一个经典话题——代码覆盖率。作为软件测试中的重要技术,代码覆盖率具有不可忽视的地位。简单来说,要找到程序中的 bug,首先需要确保测试覆盖到相关的代码段,这就是代码覆盖率的意义所在。特别是在导向式模糊测试(Guided Fuzzing)中,代码覆盖率的作用尤为显著。 提到代码覆盖率的具体实现,不得不提到 2014 年面世的 American Fuzzy Lop(AFL)。AFL 巧妙地将代码覆盖率转化为控制流特征,并用一个固定大小的计数器数组来存储这些特征。数组的索引代表不同的控制流转移(例如,if-then 和 if-else 就会有两个不同的计数器索引)。数组中计数器的值则代表控制流的转移次数(例
………………………………