论文摘要
随着基于组件的软件开发技术的出现,组件——特别是第三方组件的使用,大大提高了软件开发的效率。组件技术的基础是存在大量的组件,因此,组件的可靠性和安全性就显得尤为重要。然而有关组件的软件测试技术的研究还相对薄弱,组件的安全性测试更是软件测试理论一个新的研究方向,其理论和技术的研究对于促进组件技术的发展具有重要的理论价值和现实意义。由于不同于传统的软件模块,组件以第三方复用为目的进行开发,多数情况下源代码不可见,对组件尤其是第三方组件只能采用基于“黑盒”的安全性测试方法。在当今黑盒安全性测试领域,错误注入技术作为一种模拟攻击和动态执行分析的有效技术,在软件测评和系统安全性分析方面具有明显的优势。它根据软件代码运行所产生的行为而不是简单地从其结构来研究软件的安全漏洞,这种方法有利于发现那些通过静态结构分析所无法发现的新的潜在安全漏洞来源。SDFI(Static and Dynamic Fault Injection)是一种基于错误注入技术的针对组件特别是第三方组件的安全性测试方法。SDFI建立在安全漏洞分类学研究的基础之上,给出一种组件安全错误注入测试模型FIM(Fault Injection Model)。FIM针对组件运行前和运行时两个不同时机,选择两种不同的错误注入检测方法——接口参数错误注入和动态环境错误注入,从而达到有针对性地高效率测试组件安全漏洞的目的。SDFI分别针对接口参数错误注入及动态环境错误注入测试用例“组合爆炸”问题,给出相应的EEC(Exceptional Elements Coverage)和DSW(Division and Sorting by Weight)测试用例约减算法。在研究项目COM组件安全测试系统CSTS(Component Security Testing System)中,设计和实现了自动化错误注入子系统,并使用第三方COM组件进行测试,验证了SDFI的有效性。