background image

  

Mark Blackburn、Robert Busser 研究了基于模型的安全功能测试[4]。主要项目支撑是

NIST CSD(computer security division)部门的项目 Automated Security Functional Testing。主
要思路是利用

SCRModeling 工具对软件的安全功能需求进行建模,使用表单方式设计软件

的安全功能行为模型,将表单模型转换为测试规格说明模型,利用

T-VEC 工具生成测试向

量(由一组输入变量,期望输出变量组成),开发测试驱动模式和目标测试环境的对象映
射,将测试向量输入测试驱动模式执行测试。这种方法是一种一般的安全功能测试方法,它
的适用范围取决于安全功能的建模能力,特别适用于建模用与或子句表达逻辑关系的安全
需求,对授权、访问控制等安全功能测试比较适用。

 

  

2.3 语法测试 

  语法测试是根据被测软件的功能接口的语法生成测试输入,检测被测软件对各类输入
的响应。接口可以有多种类型,命令行、文件、环境变量、套接字等。语法测试基于这样一种思
想,软件的接口或明确或隐含规定了输入的语法。语法定义了软件接受的输入数据的类型、
格式。语法定义可采用

BNF 或正则表达式。语法测试的步骤是识别被测软件接口的语言,定

义语言的语法,根据语法生成测试用例并执行测试。

 

  生成的测试输入应当包含各类语法错误,符合语法的正确输入,不符合语法的畸形输
入等。通过察看被测软件对各类输入的处理情况,确定被测软件是否存在安全缺陷。语法测
试适用于被测软件有较明确的接口语法,易于表达语法并生成测试输入的情况。语法测试结
合故障注入技术可得到更好的测试效果。

 

  

2.4 基于故障注入的安全性测试 

   

Wenliang  Du 将 故 障 注 入 技 术 用 于 软 件 安 全 性 测 试 , 建 立 软 件 与 环 境 交 互

environment-application interaction,EAI) 的故障模型。故障注入针对应用与环境的交互

点,主要包括用户输入、文件系统、网络接口、环境变量等引起的故障。相关项目有
OUSPG(university of oulu,secure programming group)的项目 PROTOS SecurityTesting of 
Protocol Implementations,该项目的目标是测试协议实现的安全性。主要思路是通过构造各
类协议数据包测试目标软件是否能正确处理。实质是在各类协议数据包中植入故障,如修改
某些协议字段的值等,支持的协议有

HTTP、SIP、WAP、SNMP 等。故障注入可以有效地模拟

各种各样的异常程序行为,通过故障注人函数能够强制性地使程序进入到某些特定的状态
而这些状态在采用常规的标准测试技术的情况下一般是无法到达的。

 

  

2.5 模糊测试 

  模糊测试是一种发现安全漏洞的有效的测试方法,在安全性测试中越来越受到重视。模
糊测试将随机的坏数据插入程序,观察程序是否能容忍杂乱输入。模糊测试是不合逻辑的,
只是产生杂乱数据攻击程序。采用模糊测试攻击应用程序可发现其它采用逻辑思维来测试很
难发现的安全缺陷。

 

  

2.6 基于属性的测试 

  描述了基于属性的测试方法,采用

TASPEC 语言对软件的安全属性进行描述,生成安

全属性规格说明,利用程序切片技术抽取与这个安全属性相关的代码,并测试这部分代码
是否违反安全属性规格说明。基于属性的测试有针对性的测试目标软件的特定安全属性,可
满足安全属性的分类和优先级排序要求,且部分与具体软件无关的属性规格说明是可重用
的。

 

  

3.结束语 

  软件测试是所有工程学科的基本组成单元,是软件开发的重要部分。软件测试是为了发
现故障而执行程序的过程,其目的是以尽可能少的时间和人力发现并改正软件中潜在的各
种故障及缺陷。如何利用较少的测试用例,实现最大的测试覆盖,最大限度地发现软件瑕疵,
是软件测试的目标之一;制定完善的测试计划、测试方案、结果分析、文档资料管理,亦是保