软件安全测试研究

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

江苏大学JIANGSUUNIVERSITY信息安全新进展期末论文题目:软件安全测试研究学院:计算机与通信工程学院专业班级:学号:姓名:指导老师:随着社会信息化的不断深入,以软件为核心的应用系统规模越来越大,也越来越复杂。而当前软件设计及开发人员对安全问题普遍缺乏正确、足够的认识,导致软件本身有很多潜在的缺陷,同时也对外暴露了大量可供攻击者入侵或破坏的安全漏洞。解决软件安全问题的根本方法是提高软件从业人员的素质,增强其安全意识,对其进行针对性培训。但错误是不可避免的,或早或迟程序中总会有地方出错而导致出现非预期的结果。因此,对于软件安全性的测试对于保障软件系统的安全性是必不可少的一环。当前针对软件安全性的测试方法主要有,形式化方法、基于模型的测试、基于故障注入的测试、模糊测试、基于属性的测试、静态分析测试、基于风险的测试、基于故障树的测试和渗透测试。本文将主要介绍这些安全性测试方法和技术。软件安全性测试的特点和分类软件安全性测试是在软件的生命周期内采取的一系列措施,用来防止出现有违反安全策略的异常情况和在软件的设计、开发、部署、升级以及维护过程中的潜在系统漏洞。安全性测试主要针对软件中存在的潜在漏洞进行分析,一般情况下这些漏洞不会影响软件的正常使用,但会给第三方留下攻击的空间和机会。软件安全性测试可分为安全功能性测试和安全漏洞测试。软件功能测试是国际化软件测试最先开始并且贯穿于整个软件开发过程的测试类型,目的是确保软件的特征功能符合软件的设计需求和功能规格说明。通过检测并修补软件系统中存在的漏洞和安全隐患,达到增强系统健壮性、抵挡攻击者对系统进行攻击、破坏的目的。全性测试主要方法静态分析(staticanalysis)是指在不执行代码的情况下对其进行评估的过程。无论使用何种分析技术,所有针对安全编程的静态分析工具,其工作方式大致相同。它们都接受代码为输入,构建一个表示所分析程序的模型,结合大量安全知识来对这个模型进行分析,并最终向用户提交其分析结果。建模的过程就是将要进行分析的代码转换为一种程序模型,即一组代表此代码的数据结构,其中会涉及到诸如词法分析、抽象语法分析、语义分析、程序控制流及数据流分析等内容。规则的定义是进行分析的基础,可使用不同的规则对代码进行分析也提高了静态分析技术的灵活性。得到报告结果后,需要对结果进行审查,以确认问题是否真实存在,为后期对问题的处理提供依据。静态分析技术通过对代码的检查,往往能指出安全问题的根源;能够在开发早期发现错误;而且当安全研究人员发现一种新的攻击时,静态分析工具可以容易地对大量代码进行重新检查。静态分析工具普遍存在的问题是误报和漏报现象,因此要在误报和漏报之间进行平衡。基于模型的安全测试是对软件的结构和行为进行建模,生成相应的测试模型,在由测试模型自动生成测试用例,以驱动安全性测试。当前主要的软件安全测试模型有UML模型、有限状态自动机以及马尔可夫链。以UML模型为例,安全性威胁首先被以UML序列图的形式进行建模。以威胁建模为基础,提取威胁路径的集合,在程序执行过程中这些威胁都是不应该发生的。代码用随机生成的测试用例来执行,执行的路径被收集起来,并与定义好的威胁路径进行比较。如果一个执行路径符合其中某一条威胁路径,则其需要被上报并处理。对软件进行建模之后,可以通过切片技术精简程序以减小检测范围,从而提高效率。切片是通过切片准则对程序进行抽取、简化程序的技术和过程,切片技术可以抽取出程序中与被检测特性相关的成分,忽略无关的成分以达到硪少分析范围、提高检测效率的目的。可以使用通用算法从模型库中提取模型特征对切片后的程序进行匹配.如果切片后的程序和任何一条模型特征都不匹配.则表明程序对于精定的安全模型特征是安全的;否则表明软件中的某些执行路径违背了安全属性,此时应给出安全报告。基于故障注入的安全性测试,故障注入是评测容错机制的一种有效方法。通过人为方式将故障引人到系统当中,加速系境发生故障的失效的过程。当前故障注人的主要方法有,仿真故障注入、硬件故障注入、软件故障注入以及环境混乱故障注入。仿真故障注入需要以较好的目标系统仿真模型为基础;硬件故障注入方法需要专业的硬件设备(也可通过软件方法模拟实现);软件实现的故障注入方法对目标系统硬件环境投有任选损坏,能方便地跟踪目标程序的执行井回收数据,系统开稍小,且有较好的可移植性;基于环境混乱的故障注入把应用程序和其运行环境都纳入系统的范畴t通过改变正常的环境因素(如文件,同培等)来测试系统对环境故障的客错能力。当前有几种比较成熟的软件故障注入工具,如FIAT可能破坏任务的内存映像,FERRARI利用UNIX的ptrace函数在运行期间破坏程序的内存映像,在故障被激活的地方插入陷阱指令,Xeepdon工具在目标处理器内部直接编程间试硬件,并带有许多故障触发器来激活故障。模糊测试,传统的模糊测试(Fuzzingtesting)是一种基于黑盒的随机性测试,它通过随机的变异正常的程序输入来检测程序的响应,以发现程序中隐藏的安全漏洞。模糊测试可以使用语{去规则来产生正常的输入.也可以使用基于特定程序的输入并用试探法来指导输入变量的生成。使用语法规则来生成输入也是基于语法的安全测试主要研究的内容,因此本文不再对基于语法的测试进行分类介绍,只在下面给出其检测原理。尽管模糊测试非常有效,但它作为黑盒测试的局限性也是非常明显的。例如,当:是一个随机的32位输入时,条件语句if(x==7)then的then分支只有2^32分之一的机率被测试到。这可以直观地解释为什么模糊测试经常是低的代码覆盖率的。基于渗透的安全性测试,渗透测试(PenetrationTesting)是一个评估主机系统和网络的安全性时模仿黑客特定攻击行为的过程。安全测试工程师尽可能真实地模拟黑客使用的漏洞发现技术和攻击手段,对目标的安全性作深入的探测,发现系统最薄弱环节的过程。渗透测试一般可分为两类,被动攻击和主动攻击。被动攻击不采用直接进入目标系统的方式去收集信息,主动攻击则直接侵入目标系统或网络内部收集所需要的信息。结束语软件安全是软件质量属性的一个重要方面,也是保证软件能够正常、稳定工作的必备条件之一。但当前软件开发人员普遍缺乏必要的安全意识和知识,开发的软件大多存在安全缺陷,而且不断增加的软件复杂性和可扩展性需求更凸显了软件安全问题的严重性。因此,对于软件安全性检测的研究势在必行。

1 / 3
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功