# 基于符号执行和模糊测试的混合模糊测试技术综述
**摘要**:模糊测试现在已经发展成为一种高效的漏洞挖掘方法,符号执行也是当前流行的
软件漏洞挖掘技术,两者都是网络与信息安全领域的研究热点。混合模糊测试是在传统模糊
测试的基础上加入了符号执行技术,目前已经发展成为模糊测试的新分支。文章对现有的混
合模糊测试方法进行研究,综述了混合模糊测试的发展演变过程和技术核心,并通过一种基
于符号执行的实验方法对目前知名的混合模糊测试进行性能对比。最后讨论了目前混合模糊
测试领域研究存在的问题,并尝试对其未来发展趋势进行了展望。
**关键词**:混合模糊测试、模糊测试、符号执行、覆盖率
## 1. 引言
近年来,漏洞已经成为安全领域,漏洞报告数量由 2010 年的 5,223 起【引-cnvd 报告】增
长为 2019 年的 16,016 起【引-cnvd 报告】,已经对人们的日常生活产生了严重影响【引-
报告】。随着软件数量的井喷式增长,以及恶意软件漏洞利用事件的相继爆发,自动化软件
漏洞挖掘技术开始变得尤为重要。在自动化软件漏洞挖掘领域中,有两项发展迅猛的技术:
模糊测试技术和符号执行技术。
模糊测试发展至今已经成为新世纪以来实践效果良好,且得到学术界和工业界广泛应用的软
件漏洞挖掘技术【引-操作系统内核综述】。
模糊测试(Fuzzing)是目前最流行的自动化软件漏洞挖掘工具,通过将大量随机的测试用例
输入到待测试程序(经过插桩处理的测试程序),获取覆盖率等测试信息以及可能会出现的
崩溃信息。模糊测试具有自动化程度高、消耗率低、计算资源利用率高等优点,属于程序动
态分析技术,已经被很多实践证实效果良好[1],[2],[3],得到了学术界和工业界广泛应用。在
漏洞挖掘方面,模糊测试已经发挥了非常惊艳的效果,仅拿 AFL(America Fuzzy Lop,以下
简称 AFL)[1]这一典型基于变异的模糊测试工具举例,从 2014 年开发至今,已经发现了数
百 CVE,这还不包括诸多基于 AFL 的论文所发现的 CVE 漏洞[4],[5],[6],以及未被披露的
漏洞。但是高度自动化同时也导致模糊测试做不到对待测试程序的所有可能路径进行测试,
不能覆盖待测试程序的所有状态,因此面对分支复杂的应用程序只能做到尽快达到路径的深
度,做不到全覆盖状态的广度。
符号执行是一种程序分析技术,关键思想在于将程序的输入(input)用符号来表征而不是
具体值,然后通过分析程序来得到程序的输入,并保证输入可以让特定区域代码执行[7]。
如果将待测试程序按照符号执行树的形式进行直观展示,就可以很容易的理解了,符号执行
在复杂分支面前有很大的优势,通过程序路径探索可以突破浅位置的复杂分支,做到程序状
态全覆盖,但是因为计算量限制等问题并不能到达更深的路径。显然模糊测试和符号执行各
有优缺点,混合模糊测试技术就是结合了双方的优点,从而到达更深的路径,获得更高的覆
盖率。混合模糊测试比单独使用符号执行或者模糊测试效果都要更好[8],[9]。
本文将对混合模糊测试这一自动化软件漏洞挖掘技术进行发展回顾,对关键技术进行讨论,
对技术发展过程中的典型工具进行综述。最后讨论了混合模糊测试今后的发展方向,并对本
文进行了相关总结。
## 2. 技术概述
### 2.1 漏洞挖掘技术
当前用于漏洞挖掘的技术有很多,最主要的有三种:静态分析、动态分析和符号执行[10],
评论0