论文部分内容阅读
目前,软件开发正在逐渐摆脱代码轻量级、功能单一的特点,开始追求功能的完备性与实用性,这必然导致软件复杂度增加。对于网络安全研究人员来说,软件复杂度的增加带来的就是软件漏洞检验复杂度的增长。人工进行的手动漏洞挖掘已经无法满足软件漏洞挖掘需求,自动化的漏洞挖掘方法成为主流。目前,白盒模糊测试、灰盒模糊测试和黑盒模糊测试是常见的模糊测试类型。白盒模糊测试基于有源代码的漏洞挖掘而导致某些方案无法使用,黑盒模糊测试虽然不依赖于源代码,但其模糊测试效果并不理想,而灰盒的模糊测试方法吸收了二者的优点和相关技术,成为研究主流。定向灰盒模糊测试可以有目标的对开源二进制程序基本块进行检测,提高检测效率,减少覆盖度计算,降低系统开销。但是,待检测开源二进制程序必须已知可能导致程序崩溃的基本块,才能采用定向灰盒模糊测试的方法对其进行检测,这大大缩小了定向灰盒模糊测试的适用范围。为了解决定向灰盒模糊测试只能应用补丁测试、Bug重现的局限性,同时研究提高定向灰盒模糊测试的效率,本文利用静态分析、动态调试、特征提取和机器学习等技术,提出一种开源二进制程序相似基本块检测模型SBFK,该模型为基于灰盒的定向模糊测试技术提供支持。本文基于所提出的开源二进制程序相似基本块检测模型,结合AFLGo定向灰盒模糊测试框架,检测目标程序中是否存在其他具有相似特征的基本块,以加快漏洞模糊的效率。同时研究量子遗传算法优化AFLGo检测效率。通过从LAVA数据集中提取恶意基本块的标准特征,快速模糊这些具有相似特征的基本块,并检测出可能对目标程序造成潜在威胁的漏洞。通过实验,共计发现两百多个LAVAM数据集预置漏洞。优化了定向灰盒模糊测试技术的效率。