论文部分内容阅读
随着互联网的发展,软件已经渗透到人们生活的方方面面。由于软件功能的多样化,代码量和复杂度也逐渐变高。随之而来的安全问题引起广泛关注,软件安全问题影响着使用者的信息安全,一旦信息遭到泄露会造成无法挽回的后果。所以提高软件安全性是很有必要的。漏洞检测是改善软件安全性的一种行之有效的方法,因此对漏洞检测技术的研究是很有意义的。本文对基于动态符号执行的模糊测试方法进行研究,主要内容如下:首先,研究基础知识。通过阅读大量文献,将国内外动态符号执行与模糊测试相关研究成果进行对比与总结,抽象出动态符号执行的整体流程。同时研究模糊测试的过程与方法,为下一步研究工作奠定基础。其次,构造测试框架。将动态符号执行方法应用到模糊测试中,给出基于动态符号执行的模糊测试方法的框架,通过将初始用例输入到框架中,经过插桩模块、路径约束生成模块和求解器模块,有效的触发漏洞来降低测试用例生成的随机性,提升测试的效率。再次,对框架进行路径遍历和求解器两方面的优化。一是针对动态符号执行流程中路径遍历策略和测试轮次多的问题,研究基于代的启发式路径遍历策略。通过在基于代的路径遍历策略基础上添加评分函数,将程序经过的路径进行打分操作,将根据分数从小到大排序后的路径作为依次下一次测试的输入,从而提高触发漏洞的效率。二是针对动态符号执行流程中的求解器模块存在的支持约束少的问题,研究综合求解器方法。该方法在求解器模块中添加中间层,完成支持多种约束求解的功能。最后,对求解器模块和路径约束生成模块分别进行实验,从执行时间和测试轮数两个方面进行验证。通过对漏洞库中漏洞的检测,将基于动态符号执行的模糊测试方法与其它方法进行比较,实验结果表明本方法在一定程度上降低漏报率和误报率,从而证明方法的可行性。