论文部分内容阅读
软件安全是计算机安全的首要问题,各种因为软件漏洞引起的安全问题层出不穷,造成了重大的经济损失。软件测试是保障软件安全的有效手段,但是随着软件的规模和复杂度的提高,软件的安全检测的难度也随之增大。混合执行技术是一种新的软件测试方法,它首先通过插装的方式在程序执行过程中收集路径条件,然后通过SMT求解器求解所收集到的路径条件,以生成可以执行新路径的测试输入。当不能求解所收集到的路径条件时,混合执行技术可以使用具体的值来简化符号表达式,以使迭代测试可以继续下去。混合执行技术在一定程度上解决了缺乏有效的测试用例集的问题,辅以其他技术,还可以对软件进行自动化测试,符合当今软件自动化测试的发展趋势。直接针对二进制程序的安全检测和漏洞挖掘,因可对非开源软件进行测试,近年来成为了软件安全领域研究热点问题。而混合执行是形式化分析软件安全的有效手段,目前国内外在该领域的研究仍然停留在理论验证和初期原型阶段。所以本文研究的基于混合执行的二进制代码检测技术既有理论研究意义,也有实用价值。现有的混合执行软件分析工具都有较大的局限性,所以本文基于Pin插桩平台构建了一个基于混合执行的二进制软件测试系统原型工具CBCTS。通过用CBCTS对MS09-032和CVE-2009-0927两个漏洞的验证,可以得出结论:将混合执行技术和二进制动态分析技术相结合的软件安全测试是可行的、有效的。