信息安全毕业论文

软件安全性测试技术

时间:2022-10-05 22:10:55 信息安全毕业论文 我要投稿
  • 相关推荐

软件安全性测试技术

  软件安全性测试技术【1】

  摘 要 随着网络技术的发达以及计算机技术的使用,软件的普及率越来越高,其复杂程度以及具备的规模也不断提高,软件中的漏洞以及安全性的缺乏给人们造成的损失也不断增加,软件安全性问题突出已经引起了全社会的关注。

  而软件的安全性测试技术正是为了弥补软件运用中所存在的这一缺陷而诞生的。

  软件安全性测试是降低软件运用风险,保证软件使用安全性的重要手段,通晓软件安全性测试技术,将使我们更好、更全面地了解日常使用的软件,以及学会如果更好地规避软件使用中的风险。

  本文将重点关注软件安全性的测试技术,并从软件安全性测试的特点、分类,主要的测试方法和安全性测试工具分类与功能这三个方面进行相关的论述与探析。

  关键词 软件;安全性;测试技术

  软件的安全性主要包括软件的失效安全性以及保密安全性。

  失效安全性是指软件在不间断运行中,不发生系统事故的能力。

  其包括:因安全性失效可能造成单位的财产与人员损失、环境污染等重大安全事故。

  而保密安全性是指软件所具有的可以防止对数据和程序进行非法存取的预防能力。

  在我国,相关的软件技术人员更多的是侧重于软件的失效安全性。

  建立在可靠性理论基础上的失效安全性主要度量标准有软件事故率、失效度、安全度以及平均事故间隔时间。

  目前常有的测试方法有基于最小割集的测试、故障树的测试、ISO9126质量模型、基于模型的测试、基于属性的测试等。

  1 软件安全性测试的特点和分类

  软件安全性测试是通过测试手段,来确定软件的安全性是否与预期结果保持一致的过程。

  软件安全性的测试,是区别与其它软件的测试类型,它具有自身的特殊性、安全性,相关缺陷也与一般软件缺陷相区别的特点。

  软件的安全性测试主要包括验证,渗透测试,安全功能测试的过程。

  与其他传统测试软件相比,软件的安全性测试最大不同之处:软件安全性测试强调软件“不应该做什么”,而不是“应该做什么”,比如软件缺陷所产生的影响甚微,但难以发现的软件漏洞可能是致命错误,能让客户蒙受重大损失。

  软件安全性测试的这种不同,正是由其特殊性、安全性所决定的。

  相比软件中的非安全性测试,安全性测试更强调的是软件的否定需求,比如用户在使用该软件的时候,如果登陆三次失败就锁定账号。

  相比非安全性测试中的违反常规,安全性测试的缺点是由软件的副作用引起的。

  比如,在非安全性测试缺陷下,本来软件应该做G的,但它却做了F;而在安全性测试缺陷下,本来软件应该做G的,但是它在做完G的同时也顺带完成了F。

  软件的安全测试主要包括:安全漏洞的测试与安全功能的测试。

  所谓软件的安全漏洞指软件系统在设计、使用等方面,存在可被利用的漏洞。

  当不法分子发现或者利用这些软件漏洞时,软件便处于不安全的状态。

  所以,利用软件的安全漏洞测试才能发现并识别软件中的这些漏洞,并及时加以修补。

  而所谓的安全功能需求包括数据的机密性,完整性以及可靠性,不可否认性,还包括身份认证,访问设置,跟踪追查,安全管理,隐私保护等。

  而基于软件的安全功能需求的安全功能测试,就是用来测试该软件是否具备与预期相一致的功能的。

  2 软件安全性测试主要方法

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

  故障注入的软件安全性测试,就是指通过构造各类协议数据包来植入故障,以测试目标软件是否能正确处理这些预置故障。

  该测试方法是Wenling Du建立的一种软件与环境交互,将故障注入技术用于软件安全性测试的一种故障模型。

  该项目通过修改某些协议中的数据,支持的协议有HTTP、HIP、WAP、SNMP等。

  故障注入就是通过故障注入函数,进行故障模拟,并使程序强制进入某些特定状态,而使用常规的测试技术是很难查看到的。

  2.2 基于自盒的安全性测试

  基于自盒的安全测试主要是静态分析,主要考察缓冲区溢出、数据竞争等安全性缺陷代码模式,主要的技术分析有数据流分析、技术型推断和约束分析。

  为了在程序运行的时候插入攻击代码,测试安全机制是否真正可用,Lori Pollock和Ben Breech提出一种基于动态编译技术的安全测试框架,主要用来测试基于程序的攻击。

  2.3 攻击树理论与威胁模型

  安全性研究方法大致可分为:基于漏洞的方法、基于威胁的方法。

  前者是为了识别软件的安全漏洞,主要是从软件的内部考虑软件的安全性。

  而后者是通过分解应用程序(识别入口点,出口点,数据流描述),识别要保护的资产等步骤,来识别软件所面临的安全威胁并测试是否能够正常发生。

  最常用的威胁分类方法有篡改、欺骗、信息泄露、否认、拒绝服务等等,简称STRIDE。

  2.4 基于模型的安全功能测试

  Mark blackbum与Robert Busser研究出基于模型的安全功能测试,该模型安全功能测试常用的模型有:UML模型有限状态机两种。

  这种方法的适用范围取决于安全功能的建模能力,是一种较为一般的安全功能测试。

  3 软件安全性测试工具分类与功能

  为了更好地验证系统安全机制是否有效,及时地查找软件中的漏洞,检测系统的运行是否正常,最近几年产生了很多功能强大的安全性测试工具,这不仅大大地提高了软件安全性的测试效率,而且在很大的程度上也降低了软件的安全风险,为软件的顺利运行提供了一个良好的环境。

  在当前的市面上,主流的软件安全测试工具有源代码分析器、字节码扫描器、网络漏洞扫描器、配置分析工具、网络应用漏洞扫描器、网络服务扫描器、动态分析工具、数据库脆弱性扫描器、设计验证工具等,这些安全性测试工具的出现与应用,让软件安全性测试技术得到了进一步的飞跃,加快了软件的发展进程。

  4 结束语

  本文通过具体的案例,分析了软件安全性测试的分类、特点、主要测试方法、安全性测试工具分类与功能,深入探析软件安全性测试。

  软件的安全性测试是通过相关的工程技术,为了尽可能地避免人为很难发现的技术缺陷和安全风险,最大限度地保障人民的生命财产安全而开发的一个工程技术,是软件开发中的一个重要的组成部分。

  如何通过完善的文档资料,技术分析,测试方案,最大限度的实现测试覆盖,并发现软件瑕疵,是所有的软件技术人员面临及应思考的问题。

  参考文献

  [1]毕媛媛,陈锦平.基于模型的安全静态检测技术[J].硅谷,2012(08).

  [2]李明,高勇.基于语法的软件安全检测[J].信息安全与通信保密,2011(06).

  [3]刘东飞.故障树分析技术在软件测试中的运用[J].软件导刊,2011(07).

  [4]王之.参透测试技术与模型研究[J].计算机与信息技术,2011(05).

  软件安全性测试方法【2】

  摘 要为了提高软件研发的安全性,需要对软件的安全性进行测试,笔者根据软件安全测试的主要内容及特征,总结出了相关的软件安全测试的方法,为提高软件质量及安全性提供借鉴。

  【关键词】软件 安全测试 方法 研究

  软件安全性是指在其运行的过程中,采用相关的技术方法将可能发生的风险控制在可以接受的范围内,避免系统发生不能接受的风险,提高软件系统的安全性能。

  虽然作为系统不会直接威胁到人们的生命财产安全,但是一旦人工操作失误也会造成危机。

  例如,在运用航天软件时,一旦飞机比预期的高度低,航天软件就要及时发送警告,避免飞机下坠。

  对软件的安全性进行分析测试,及时发现和排除错误,减少损失。

  目前国内的安全软件测试针对性不强,缺乏测试依据,需要改进。

  1 软件安全性测试的特点和分类

  对软件进行安全测试就是看其安全特性是否和设计时要求的效果一致,包含对软件的功能测试,验证测试及渗透测试。

  软件安全测试有其独特性,安全性的缺陷和普通的软件缺陷不同,安全方面出现漏洞会使很多的用户受到损失,注重强调软件不应该做什么而不是强调让软件做什么,强调的是其否定需求,比如说,未经允许用户没有权利访问数据。

  软件安全测试可以分为两类,安全功能测试(Security Functional Testing)和安全漏洞测试(Security Vulnerability Testing),前者主要从软件功能角度出发,根据安全功能的要求测试软件的安全性是否达标,软件的功能要求主要有软件的完整性、机密性、不可否认性及隐私保护等等;后者相关的漏洞测试主要站在攻击者的层面上看,主要目标是发现软件的安全漏洞,主要的安全漏洞包括,软件在操作、设计、运行方面是否有漏洞或者缺陷。

  因为一旦漏洞被攻击者利用,必然使软件处于危险状态,所以,安全漏洞测试就是辨识软件的缺陷及漏洞。

  2 软件测试的方法

  2.1 静态测试

  在测试软件的代码时,并不真实运行被测试的软件,静态测试还经常被应用于软件文档测试,比如,可以检测或者验证文档,对系统软件设计的文档或者软件代码的检查。

  2.2 动态测试

  和静态测试不同的就是需要在检测时实际运行软件,通过运行检测软件的运行情况及动态的行为。

  所以,在进行动态测试时,一定要运行被测试的软件,真正输入数据进行验证检测。

  2.3 功能测试

  功能测试时建立在刺痛或者程序的功能上,测试的人员无需知道程序的运行过程,重点关注软件程序的功能是否符合标准、规格。

  2.4 结构测试

  结构测试要求测试工作人员了解程序软件的内部结构和逻辑过程,重点关注软件生成的代码,可以忽略功能测试,不关注功能是否匹配。

  3 安全性测试的主要方法

  3.1 形式化安全测试

  形式化安全测试就是通过建立数学模型,运用形式规范的语言,供给软件的说明。

  可以将这种测试方法氛围两类,

  3.1.1 定理证明

  就是把相关的软件程序转变为逻辑公式,运用之前的理论及规则证实程序的合法性。

  3.1.2 模型检测

  在描述软件行为方面使用S代表状态迁移系统,在描述软件执行必须满足的性质方面用计算树逻辑F代表,然后对S这一过程进行自动搜索,找到不能满足F这一公式的状态的方式发现软件漏洞。

  NASA的一个实验室叫JPL曾经进行过形式化安全测试,通过建立形式化模型,比如,状态机,对软件进行形式化安全测试就是通过搜索状态空间,寻找路径使其达到违背规约的不安全状态,模型不断增大,逐渐变得复杂,状态空间也不断增长,JPL研发了一种方式避免状态爆炸。

  3.2 建立在模型基础上的安全功能测试

  通过对软件的行为和机构建模,再将测试模型生成测试软件,一般会用到的测试模型有UML模型、有限状态机及马尔可夫链等等。

  Mark Blackburn、Robert Busser研发了安全功能测试,就是通过利用SCRModeling建模,运用表单的形式建立安全功能行为模型,把相应的表单模型转化为说明模型,运用T-VEC生成向量,包括输入和输出变量,研发测试驱动模式,再将测试向量输入测试驱动模式,运行测试模式。

  通过这种安全功能测试,能够有效测试软件的安全性,但是它只适用于安全功能建模能力达到一定的程度,例如,对授权、访问控制等进行软件应用进行测试。

  3.3 语法测试

  这种测试方法是用来检测软件对各种输入情况的反应,检测软件的功能接口的语法生成测试输入。

  接口的类型有很多,例如,命令行、环境变量等等,接口需要已经规定了所要求输入的语法,这一语法对输入的数据的格式及类型进行了定义。

  测试的一般过程就是辨识接口的语法形式,据此生成测试用例,执行测试。

  测试时正确、错误及畸形的语法都应该包括在测试范围内,检测软件的处理情况及缺陷,语法测试和故障注入技术相结合效果会更好。

  3.4 模糊测试

  在发现软件的安全漏洞方面,模糊测试是一种很重要的方法,它是通过将随机的不完善的数据插入到程序中,观测软件程序是否能够接受胡乱的数据输入,模糊测试一般是不符合逻辑的,通过产生杂乱的数据供给程序来达到测试的目的,通过这种间接的测试方法可以可以检测出来正常逻辑思维难以发现的安全漏洞。

  4 结语

  软件安全测试时软件研发过程中的重要环节,通过发现软件之星时的故障和缺陷,及时更正,避免造成更大的破坏,软件测试的最理想效果就是使用较少的测试用例实现较大的安全测试。

  在进行软件安全测试前,要针对所要测试软件的类型,制定测试方案,分析测试结果,整理测试资料,查找漏洞。

  出了笔者探讨的上述安全测试方法之外,还有建立在故障注入基础上的安全性测试方法,基于属性的安全测试方法等。

  在未来,Web服务软件发展迅速,怎样针对Web服务进行安全测试是需要研究的新课题。

  参考文献

  [1]陆璐,王柏勇.软件自动化测试技术[M].北京:清华大学出版社,2006.

  [2]郭群.软件测试设计技术[J].电脑知识与技术,2007(17).

  [3]游历贞,郭宇春,李纯喜.AJAX引擎的原理和应用[J].微计算机信息,2006(22):2-3.

  [4]黄爱明.国内软件测试现状及对策研究[J].中国管理信息化,2007(02).

  软件安全性检测技术【3】

  摘要:该文阐述了网络软件安全检测的重要性,介绍了现有的主要检测方法,包括形式化安全测试、基于模型的安全功能测试、语法测试、基于故障注入的安全测试、基于属性的测试、模糊测试、基于风险的安全性测试、基于故障树的安全性测试以及基于渗透的安全性测试。

  关键词:安全性检测;功能测试;漏洞测试;安全测试方法

  Abstract: The importance of software security test is described in this paper and the main software security test method is introduced such as model based method, Grammar-based method, Syntax-based method, defects threat tree modeling method and so on.

  Key words: security test; functional test; vulnerability test; security test method

  在互联网普及之前,单机应用程序软件安全问题并不突出。

  但是自从互联网普及后,软件安全问题愈加显加突显,使得软件安全性测试的重要性上升到一个前所未有的高度。

  同时,随着软件的广泛应用和其规模、复杂度的不断提高,软件安全性问题日益突出。

  软件安全性测试是保证软件安全和质量、降低软件安全风险的重要手段。

  软件安全性测试分为安全功能测试(Security Functional Testing)和安全漏洞测试(Security Vulnerability Testing)两个方面,如表1所示。

  表1 安全功能测试和安全漏洞测试

  1 软件安全测试的主要方法

  1.1 形式化安全测试

  建立软件的数学模型,利用形式化规格说明语言对其进行说明[1],形式规格说明语言主要包括以下几类[2]:

  基于模型的Z、VDM和B语言;

  基于有限状态语言,如有限状态自动机、SDI;

  代数语言,如OBJ;

  基于行为的CSP、CCS、Petri Nets等语言;

  混合语言,如离散和连续数学的规格说明语言;

  状态图

  形式化安全测试方法分为定理证明和模型检测两类,如表2所示。

  表2 形式化安全测试方法分类

  [定理证明\&模型检测\&将程序转换为逻辑公式,然后使用公理和规则证明程序是否是一个合法的定理\&运用状态迁移系统描述软件行为,运用时序逻辑、计算树逻辑等表示软件执行所必须满足的性质,通过自动搜索迁移系统中不满足公式或逻辑的状态来发现软件漏洞\&]

  形式化安全测试的特点是数学基础完备,对系统理解深入。

  但,开发成本高,维护困难。

  1.2 基于模型的安全功能测试

  基于模型的安全性测试是通过对软件的行为和结构进行建模,生成测试模型,继而由测试模型生成测试用例,当前主要的软件测试模型有马尔科夫模型、有限状态自动机模型、UML模型[3,4]等。

  Nahid Shahmehri等[5]提出一种基于模型的方法,用以检测和跟踪运行中的软件所存在的漏洞,这是一种被动测试技术。

  开发者可以很容易的确切的知道工具所针对的漏洞类型,并且当新的漏洞被发现时可以通过添加新的方法将工具进行扩展。

  检测模型是基于安全目标模型SGMs的,它可以显示产生漏洞的潜在原因,以及各种原因之间的相互关系。

  SGMs和威胁树模型非常类似,后者是将引发某种威胁的所有因素用树状结构描述,前者则是将引起漏洞的所有可能原因用树状结构描述。

  Mark Blackburn等[6]提出一种基于模型的软件安全自动检测方法,该方法提供了一种端对端的模型构造、分析、自动测试用例生成、自动执行测试以及结果分析的综合技术手段,该方法适用于各种环境。

  该检测方法的基础是对安全函数说明进行建模,利用Oracle和Interbase数据库引擎自动生成模型并进行测试。

  1.3 语法测试

  所谓语法就是定义了软件接受的输入的数据类型和格式。

  语法测试是根据被测软件的功能接口的语法生成测试输入,检测被测软件对各类输入的响应,通过观察被测软件输入与相应之间的关系做出安全性分析[7]。

  其流程如下:

  语法测试适合对组件进行黑盒测试[8],根据组件接口的语法特征,正则表达可以产生正常和非正常输入,进而触发各种安全问题。

  但是其缺点是测试样例的数量巨大,很难保证测试覆盖全面性。

  Patrice Godefroid等[9]研究了输入结构复杂应用程序,利用基于语法的方法对非法输入进行描述,以提高白盒测试的效果,提出了一种新的动态测试用例生成算法。

  1.4 基于故障注入的安全测试

  用户输入、文件系统、环境变量、网络接口等应用程序与环境之间的交互引起的故障均可作为注入的故障。

  人为主动的将故障引入系统,可以加速系统失效,同时也加速了对安全问题进行排查。

  具体的方法包括仿真注入、硬件注入、软件注入等。

  Binbin Qu等[10]提出了一种基于客户机-服务器模式的错误注入测试方法,用于软件组件的安全性测试。

  作者设计了了一种基于API Hooking的错误注入工具,该工具GCDEFI是基于客户机-服务器模式的,由一个服务端和多个客户组成。

  服务器控制客户机,收集反馈信息并与客户机交互;客户机管理API拦截、错误信息和目标组件信息。

  客户机注入到测试驱动,处于驱动的地址范围。

  GCDEFI运行后,控制器从用户得到错误类型信息,该信息被保存在客户机的错误管理模块。

  控制器触发Activator,将目标组件信息送入目标组件信息管理器。

  每当API被拦截,调用者的信息将被获取,我们查找堆栈和目标组件列表,看是否有匹配的组件,如果没有就返回,如果有就进入替代代码,进而执行注入的错误。

  客户机中的替代函数可以与服务器通信。

  该工具通用性不好,只在特定的环境对特定的组件具有较好的检测效果。

  Jinfu Chen[11]设计了一种典型的COM组件安全性测试工具――CSTS,该工具具有获取并分析COM组件、静态分析组件漏洞、自动生成测试脚本、生成测试驱动、注入环境错误、引导组建运行,记录安全隐患并写入日志、安全评级等功能。

  测试流程如下:

  A.创建测试工程

  B.选择测试组件

  C.分析接口信息

  D.生成测试文件

  E.编译测试装置

  F.运行测试驱动

  G.引导运行过程

  H.注入环境错误

  I.开始错误注入测试

  J.结束并保存

  但是该方法的风险评级标准并不明确,有待于进一步细化和明确。

  1.5 基于属性的测试

  基于属性的安全测试方法[12]是将确定的程序编写规则进行编码,将其作为安全属性,以此为依据验证程序代码是否符合规则。

  1.6 模糊测试

  模糊测试是一种基于黑盒的随机性测试,通过随机地变异正常的程序输入进而检测程序响应,以发现软件中存在的漏洞,可用语法规则生成正常输入,也可用试探法指导输入变量的产生。

  模糊测试的最大问题在于代码覆盖率很低。

  Patrice Godefroid等[13]提出了一种白盒模糊测试方法,这种方法受动态测试用例生成方法和象征性执行方法的启发:

  A.记录程序在正常状态下的运行情况;

  B.标记程序运行轨迹、收集输入的限制条件;

  C.将限制条件逐一取消产生新输入,执行不同控制路径;

  D.在启发式高代码覆盖率方法的辅助下重复上述过程,完成测试过程。

  该方法的不足之处在于有限的样本尺寸限制了代码覆盖率。

  1.7基于风险的安全性测试

  风险即错误发生的可能性以及造成的危害程度。

  基于风险的安全测试的出发点和依据是软件安全风险,把风险分析与管理、安全测试以及软件开发过程系统化。

  该方法具有在软件开发的各个阶段可以把有风险的安全漏洞考虑在内,将安全测试与软件开发同步进行的优点[14]。

  Brad Arkin、Gary McGraw等人[15]研究了基于风险的安全测试方法,在软件开发的各个阶段进行异常场景、误用模式、风险分析以及渗透测试等,其实质是将安全测试相关过程集成到软件开发的整个生命周期中。

  1.8 基于故障树的安全性测试

  基于故障树的安全测试技术[16-20]是利用故障分析树和故障树来生成安全性测试用例的方法,故障树(威胁树)[21]实际上是一种将系统故障(威胁)形成原因由上到下柱层细化的过程。

  Huang Song[22,23]等选择了CERT/CC的TOP 10瑕疵用来建立威胁树以生成测试序列。

  1.8.1 威胁树

  威胁树由威胁节点构成,根节点为待检测瑕疵,将其向下分解,生成子节点(即须要实现父节点的必要步骤),子节点继续向下分解直到无可分解)。

  节点分与节点和或节点两种,如图2所示。

  图2 节点类型

  以SQL注入为例,其威胁树和测试序列生成方法如下:

  1.8.2 威胁树生成方法

  A.选择一种典型瑕疵(待测瑕疵)作为根节点;

  B.分析该节点,并将其作为父节点,将其所对应的所有情况作为子节点;标记父节点位与节点或者或节点;

  C.分解子节点;

  D.重复A-C,直到无可分解。

  1.8.3 生成测试序列

  图3为SQL的注入威胁树,其中SQL injection为与节点,其五个子节点为与关系,其中第四个节点为或节点,则其子节点为或关系。

  其测试序列为:a-b-c-e-d和a-b-c-f-d。

  目前该方法还是手动进行的,工作量较大,需要设计自动化的方法才有更大的应用价值。

  1.9基于渗透的安全性测试

  这是一种评估网络安全性和主机系统的模拟攻击过程,安全工程师可以通过这种方式深入探测目标的安全性。

  渗透测试分两类:被动攻击和主动攻击,被动攻击不直接进入目标系统,而主动攻击则要直接侵入目标系统。

  渗透测试步骤[24]如下所示:

  Shu Xiao[25]等设计了一种用于网络协议安全测试的解决方案,建立了一套完整的协议代码健壮性评估环境。

  该环境的核心测试系统包括多功能测试引擎和PDU(协议数据单元)生成工具两部分。

  其中测试引擎工作流程为,首先由预定义资源或者命令行参数来决定内部功能模块的属性,这些内部功能模块包括发送接收模块、反馈模块、测试样本库模块;然后,发送模块从测试样本库获取一个测试样本,发送给指定的后处理单元(TCP/UDP或IP套接字),数据被封装;之后封装的数据传递给虚拟网络接口,由它发送给特定的目的单元。

  与此同时,发送模块还会通知接收单元接收同步响应消息,并将其放入响应池,然后接收模块调用反馈模块分析返回包,根据其做出相应的修正,来决定下一个测试样本。

  如此循环,如图3所示。

  PDU(协议数据单元)生成工具由Perl编写,可以由PDU模版获取规则,由此而生成所有的测试样本。

  该系统在发现一般软件漏洞以及对于网络协议漏洞引起的问题的异常处理是十分有效的。

  适用于现代网络产业环境中的自动检测。

  该系统也支持同步接口错误注入。

  作为一种非传统测试方法,有助于生产更安全的软件产品。

  该方法具有较大的局限性,仅对TCP/IP协议漏洞检测有效,对于其他的协议和网络通讯软件的测试还无能为力。

  Csaba Nagy[26]等提出的基于输入相关错误的静态安全性分析方法是基于这样一个思想:输入数据是沿着一定的路径传递的,而错误可以出现在任何地方,但是当错误出现在该路径上,它就会成为一个安全漏洞。

  该方法的步骤如下:

  A.找到数据输入点

  B.得到程序中的输入点集

  C.列出危险(输入相关函数)函数列表

  D.自动检测

  该方法技术上采用了程序依存图和系统依存图来进行分析,通过输入覆盖指标和输入距离指标来衡量数据距离原始输入的距离以及输入相关函数得到输入的位置,这两个指标可以告诉我们哪些函数是和用户输入相关的。

  得到这些函数后就可以进行自动错误检测了。

  1.10其他分类方法

  此外,根据测试对象的不同,软件安全测试还可分为应用程序安全测试、操作系统安全测试、数据库安全测试、IIS服务器安全测试、网络环境安全测试。

  具体如表3所示:

  2 总结

  软件安全测试的实现有诸多的困难,需要测试工程师拥有高效的工具,丰富的经验、全面的技能,这是一个相互联系的整体。

  丰富的经验包括对软件安全漏洞,以及各种黑客攻击手段的充分了解;全面的技能包括掌握编程、网络、数据库等知识;在此基础上方能开发出高效的软件安全测试工具。

  参考文献:

  [1] 魏怀鉴,鲍皖苏. 形式化方法和测试技术及其在安全中的应用[J].微计算机信息, 2006, 22(11): 55-57.

  [2] Chen H, Wagner D. MOPS: an infrastructure for examining security properties of software[C]//Proceedings of the 9th ACM conference on Computer and communications security. ACM, 2002: 235-244.

  [3] Lodderstedt T, Basin D, Doser J. SecureUML: A UML-based modeling language for model-driven security[M]//? UML? 2002―The Unified Modeling Language. Springer Berlin Heidelberg, 2002: 426-441.

  [4] Sheng Q Z, Benatallah B. ContextUML: a UML-based modeling language for model-driven development of context-aware web services[C]//Mobile Business, 2005. ICMB 2005. International Conference on. IEEE, 2005: 206-212.

  [5] Shahmehri N, Mammar A, Montes de Oca E, et al. An advanced approach for modeling and detecting software vulnerabilities[J]. Information and Software Technology, 2012, 54(9): 997-1013.

  [6] Blackburn M, Busser R, Nauman A, et al. Model-based approach to security test automation[J]. Proccedings of Quality Week 2001, 2001.

  [7] Godefroid P, Kiezun A, Levin M Y. Grammar-based whitebox fuzzing[C]//ACM SIGPLAN Notices. ACM, 2008, 43(6): 206-215.

  [8] Tal O, Knight S, Dean T. Syntax-based Vulnerability Testing of Frame-based Network Protocols[C]//PST. 2004: 155-160.

  [9] Godefroid P, Kiezun A, Levin M Y. Grammar-based whitebox fuzzing[C]//ACM SIGPLAN Notices. ACM, 2008, 43(6): 206-215.

  [10] Qu B, Huang Y, Xie X, et al. A Developed Dynamic Environment Fault Injection Tool for Component Security Testing[C]//Secure Software Integration and Reliability Improvement, 2009. SSIRI 2009. Third IEEE International Conference on. IEEE, 2009: 417-422.   [11] Chen J, Lu Y, Xie X. CSTS: A Prototype Tool for Testing COM Component Security[C]//Hybrid Intelligent Systems, 2009. HIS'09. Ninth International Conference on. IEEE, 2009, 3: 83-88.

  [12] Fink G, Bishop M. Property-based testing: a new approach to testing for assurance[J]. ACM SIGSOFT Software Engineering Notes, 1997, 22(4): 74-80.

  [13] Godefroid P, Levin M Y, Molnar D A. Automated Whitebox Fuzz Testing[C]//NDSS. 2008, 8: 151-166.

  [14] 张泽华,饶若楠,凌君逸.基于风险测试揭错能力分析[J]. 计算机工程, 2004, 30(B12): 72-73.

  [15] Brad Arkin, Scott Stender, Gary McGraw: Software Penetration Testing. IEEE Security & Privacy, 2005, 3(1): 84-87.

  [16] Myers G J, Sandler C, Badgett T. The art of software testing[M]. John Wiley & Sons, 2011.

  [17] Tsipenyuk K, Chess B, McGraw G. Seven pernicious kingdoms: A taxonomy of software security errors[J]. Security & Privacy, IEEE, 2005, 3(6): 81-84.

  [18] Firesmith D. Specifying reusable security requirements[J]. Journal of Object Technology, 2004, 3(1): 61-75.

  [19]Nancy R, Mead G M G. A portal for software security[J]. IEEE Computer society IEEE Security & Privacy, 2005.

  [20] Moberg F. Security analysis of an information system using an attack tree-based methodology[J]. Master's

  [21] C.A. Ericson II, Fault tree analysis ― a history, in: Proceedings of the 17th International System Safety Conference, 1999.

  [22] Song H, Liang W, Changyou Z, et al. A software security testing method based on typical defects[C]//Computer Application and System Modeling (ICCASM), 2010 International Conference on. IEEE, 2010, 5: V5-150-V5-153.

  [23] Huang S, Hui Z W, Wang L, et al. A Case Study of Software Security Test Based On Defects Threat Tree Modeling[C]//Multimedia Information Networking and Security (MINES), 2010 International Conference on. IEEE, 2010: 362-365.

  [24] 唐秀存,杜德慧.渗透测试技术与模型研究[J].计算机与信息技术,2007(5):33-35.

  [25] Xiao S, Deng L, Li S, et al. Integrated tcp/ip protocol software testing for vulnerability detection[C]//Computer Networks and Mobile Computing, 2003. ICCNMC 2003. 2003 International Conference on. IEEE, 2003: 311-319.

  [26] Nagy C, Mancoridis S. Static security analysis based on input-related software faults[C]//Software Maintenance and Reengineering, 2009. CSMR'09. 13th European Conference on. IEEE, 2009: 37-46.

【软件安全性测试技术】相关文章:

软件测试技术服务合同10-09

软件测试技术员求职简历模板10-05

软件测试简历10-06

软件测试实习报告11-25

软件测试的实习报告05-19

软件测试学习总结11-23

软件测试就业方向10-05

测试软件安全的方法10-05

软件测试方法概述10-26