论文部分内容阅读
软件安全漏洞通常是由在软件设计过程中的软件错误引入的,随着软件系统的复杂程度和规模的提高,软件漏洞也越来越多。因此软件错误的分析方法及工具研究对于软件安全漏洞发现具有重要意义。
本文在对路径追踪技术和错误注入系统进行研究的基础上,完成了以下工作:(1)提出了一种“灰盒”分析方法:本文的主要工作集中在一种基于路径追踪的错误注入技术的研究,采用软件的灰盒分析方法,组合白盒分析技术和黑盒输入测试,利用白盒技术收集目标软件的相关信息,通过黑盒分析发现软件错误。该方法与以往的错误注入不同之处在于能够在测试目标软件时能够实现目标软件内部执行空间上的遍历,找到并记录从输入点开始能够执行的所有路径信息。通过使用所设计的基于块的控制流模型以及对汇编程序的分支路径覆盖算法,可以在不借助目标软件的源代码情况下,通过控制目标软件调试信息的输出,检测什么时候会执行分支并判断代码执行的是哪条路径,并保存相应的路径信息。使得软件的错误能够得到精确定位和正确理解。
(2)提出了状态协议分析(STAPA)模型:传统的软件错误注入系统大部分是基于随机数据注入而实现,机制简单但是注入效率不高,针对该问题,本文中设计了状态协议分析(STAPA)模型,减少无效输入数据的生成,提高通过网络接口进行错误注入的效率。并且更加全面的涵盖了输入集的范围,为更全面的测试目标软件的安全性提供了有效的技术支持。
(3)将模糊集合引入注入数据的产生,并提出模糊集合测试方法,针对各种网络协议,接口构造相应的输入。同时,针对网络协议接口,分别构造格式、语义、随机数据以及命令序列方面的不同测试集,扩大了错误注入系统的输入集范围。作者根据以上研究,编程实现了一个原型系统。通过运行实验表明,利用上述技术所设计的系统能够在较短的时间内构造大量合适的注入数据对目标软件进行安全性测试,并能够覆盖目标软件大部分的分支路径。同时,路径追踪技术能够对这些路径分支进行追踪,通过对所生成的路径信息进行分析,能够帮助分析人员更好的理解目标软件的内部逻辑。并且通过这些技术的结合,能够发现软件中存在的错误,并对其进行准确的定位。在注入数据的使用效率以及对错误的分析和定位方面对传统的错误注入系统有所改进。