论文部分内容阅读
本文研究如何通过软件测试有效提高软件的安全性。首先研究了目前已有的提高软件安全性的相关工作,并进行了分析比较。软件安全测试是各高校和研究机构用来提高软件安全性的研究焦点之一,由于软件生产成本相对硬件较低,而且比较灵活,它既有静态扫描源代码的方法,也有动态跟踪运行程序的测试方法,目前存在大量此类专门性的测试工具。其中,故障注入技术是一个相对特殊的方法,它最大的特点是高度灵活性,它既能开发特殊的硬件辅助设备进行硬件方法的测试,也能实现软件方法的故障注入测试技术。软件测试方面,它可以对软件的容错性、可靠性、安全性进行测试。在软件故障注入测试方式上,既可以采用静态故障注入也可以采用动态故障注入。软件故障注入测试技术虽然已经取得了很大的进展,但同时也存在故障的精确模拟、故障的有效注入、通用性和移植性等问题。本文首先讨论了故障模型,故障测试用例的生成,故障注入方式和测试结果分析等几个关键问题,并提出了两种方案从不同侧重点改善上述问题:第一种方案重点关注故障测试用例的生成和测试结果的分析判断,根据反映软件产品的用户使用情况的操作剖面生成故障测试用例模拟运行时的异常行为,从而触发软件脆弱性,在目标系统运行时动态修改程序状态引入故障,开发安全需求规格说明作为测试数据的判断准则,确定安全性,此方法不需要获取程序源码,独立于软件开发过程执行测试,更加准确地模拟了漏洞利用情景。第二种方案则结合了简单方便的静态源码扫描技术和灵活高效的动态故障注入技术,并且在程序与环境的交互点注入故障,为了降低测试工具的复杂度,将注入故障后的测试结果与参照运行(Golden Run)后的系统状态数据进行比较。此外,第二种方案中还引入了虚拟机技术,将测试环境配置在虚拟机中,提高了测试工具本身的健壮性和灵活性。最后使用FTP协议的两个流行服务器软件进行了演示和验证工作,证明了方法的有效性。