论文部分内容阅读
基于构件的软件工程(CBSE)由于可实现构件的复用及“即插即用”的特点,大大缩短了软件开发的周期,降低开发及维护的成本,已经成为面向对象软件工程领域的研究热点。同时,随着构件技术的发展,构件在医疗、银行等安全至关重要行业的应用日益广泛。因此,对构件及构件系统的测试是保证构件功能性、安全性、可靠性的重要措施,为保证构件的质量,要求实现构件开发的提供方和第三方构件的使用者对构件和构件系统实施测试。然而,目前对构件的研究主要集中在构件功能性测试,以确保找到构件在开发和实现过程中的功能性错误,对构件尤其是第三方构件的安全性测试的研究尚少,特别是,第三方构件由于无法获得源代码和详细的设计说明,使得传统的白盒测试技术无法很好地应用,从而给第三方构件安全性测试带来了极大的挑战。 第三方构件的脆弱性本质是指构件中存在的显式和隐式的安全漏洞,显式安全漏洞大多由缓冲区溢出、内存泄漏造成,而隐式安全漏洞指第三方构件的内部执行状态违背了构件的安全需求规约。本文根据构件显式异常的特点,提出了基于条件、参数规约变异的第三方构件安全性测试方法,并且为检测构件的隐式异常,提出了基于状态变异的第三方构件安全性测试方法,同时一个测试第三方构件安全性的原型系统被设计和实现。主要工作阐述如下: 1.针对显式异常的特点,扩充了第三方构件的安全需求说明,定义了方法的前置条件、后置条件、方法参数约束及参数间的约束,提出了基于条件、参数规约变异的第三方构件安全性测试方法。对于前置条件变异方法,提出前置条件变异算法PCMA(the Pre-condition Mutation Algorithm)生成一系列前置条件的变异体,基于前置条件的变异体得到测试用例;对于参数规约变异方法,首先提出单参数变异值方法SPMV(the Single Parameter Mutated Values),该方法根据单个参数的类型作用相关的所有变异算子生成一系列数值,这些值作为参数约束测试用例生成算法TCGPC(the Testcase Generation Algorithm based on the ParameterConstraint)的输入生成违背参数约束的测试用例。最终,显式异常通过设计的条件和参数安全漏洞检测算法检测。 2.为了有效地触发第三方构件隐式的安全漏洞,基于构件方法执行序列、安全需求规约,提出了基于状态变异的第三方构件安全性测试方法。首先将构件方法序列集转换为对应的可扩展的有穷状态机EFSM(Extended Finite StateMachine),使用设计的行为冲突算法OCGA(Operations Conflict SequencesGenerated Algorithm)和条件冲突算法CCGA(Conditions Conflict SequencesGenerated Algorithm)变异EFSM生成冲突序列。根据变异后的冲突序列进行安全性测试,同时借助提出的安全漏洞检测算法,判别构件是否存在隐式安全漏洞,最后得到漏洞测试报告。 3.设计实现了一个第三方构件安全性测试原型系统TCSTS(The Third-PartyComponent Security Testing System),该系统主要包含参数变异模块、条件变异模块、状态变异模块三个部分。其主要功能首先扫描第三方构件的IDL文件,动态解析出构件方法及参数等静态信息;定义构件的安全需求规约RSF,其中包括每个方法的名称、方法前置条件和后置条件、参数约束、参数类型及名称等构件信息;然后对构件的参数规约信息进行参数变异,提取方法前置条件、后置条件信息进行条件变异,将方法序列集转换为关联的EFSM,对构件进行状态变异;最后给出测试报告。