软件安全性检测技术综述

2017-07-09 14:56黎慧华
科学与财富 2017年18期
关键词:概述检测技术

黎慧华

摘 要:在网络技术被大面积的覆盖之前,单机的应用程序软件所产生的安全冲突的问题并不多。而随着现在互联网技术的深入,软件的安全问题所造成的影响也越来越严重。在实际的发展中我们开始重视软件安全的重要性。目前软件的广泛应用以及其规模空前的增加,相应的难度也被提高,这种背景下的软件安全问题不得不引起重视。本文主要阐述关于网络软件的安全监测的主要内容,其中会介绍目前发展的主要监测方法,比如形式化的安全测试、模糊测试、语法测试等方法,笔者会对软件安全性的技术发展做一定的回顾,希望能够从这些技术中能够得到更多安全性检测的思路。

关键词:软件安全;检测技术;概述;

1.软件安全性测试概述

软件安全性测试主要可以分为两个方面,一方面是对安全功能的测试,另外一方面则是对安全漏洞的测试。首先,我们对于安全功能的测试的主要目的是为了判定软件的设计功能是否能够符合用户对软件的要求,而这种设计是否能够帮助他们需求的实现。当然对漏洞的测试的主要目的是从漏洞的攻击者的角度考虑,确保软件的安全漏洞不受到威胁【1】。另外,在内容上,安全功能测试主要会涉及到数据的机密完整性以及其隐私保护等内容,而安全漏洞测试的重点在于对系统的设计和操作等出现的弱点,一旦被利用就容易受到外界的攻击而进入不安全的状态。从以上两个方面我们可以得知,在软件安全性测试中我们应该确保以下几个方面:第一,全面检测出软件一旦陷入不安全的状态所产生的反应。第二,测试软件在设计时需要尽可能的提高其安全性,包括在算法冗余、容错等做好优化。第三,了解软件在异常情况下的反应。第四,对于软件中的模块以及部件要做好单独的测试并加强整个测试流程的进行。

2.软件安全测试的主要技术

2.1形式化安全测试

形式化的主要运用思路通过建立软件的数学模型来进行测试的一种方法。它可以分为两种类型,一种是定理证明,另外一种是模型检测。首先,前者是将程序切换成逻辑的公式,运用相关的规则来证明该程序是一种合法的定理。而后者用迁移系统S用来描述软件的模式,通过逻辑公式来达到软件需要形成的目的,如果能够在自动搜索系统S中发现存在的不满足函数F的问题,则可以确认相应的软件漏洞。NASA中的JPL曾经做过此类技术的项目【2】。他们在实验中的主要思路是通过建立针对安全需求的形式化模型,来判断是否从起始之后没有发现存在违约的不安全的状态。这种技术存在着一定的不足。比如定理的证明方法无法确保全面的自动化操作,它依然需要分析人员参与运行过程,这期间非常耗费人力,而模型的检测方法需要将所有的可能性进行执行,因此检测时的效率较低。

2.2基于模型的测试方法

基于模型的安全性测试是通过对软件中的行为以及结构建立模型,然后运用生成的测试模型产生测试的用例。Nahid Shahmehri等在研究中提出一种基于模型的软件安全性测试方法,这种模型用来检测以及追踪软件中存在的缺陷,是一种较为被动的技术类型。因此,开发者很容易准确的了解到软件中软件的类型,当发现新的漏洞是会添加相应的方法对工具进行扩展。检测模型是在SGMs的基础上可以表明漏洞产生的原因,以及与其他原因之间的关系【3】。其中SGMs将漏洞的模型运用树状结构来进行描述。

Mark Blackburn等曾经提出一种端对端的基于模型的全自动检测方法,这种测试技术可以被运用到各个环境中,具有一定的广泛性。它的基础在于对安全函数的说明建立模型,Orale以及Interbase两种数据库引擎的在其中的运用帮助自动形成模型并做后续的测试。

2.3语法测试

对语法的定义在于软件接受了输入中的数据类型以及数据格式。语法测试的主要环节是可以根据软件上相关的功能接口中的语法再生成相应的测试语法的输入,在这样的形式下来检测软件对输入产生的反应,然后对输入以及反应之间的联系做出安全性的分析。语法测试比较适用于黑盒测试实验中,根据相应的语法特征,产生正常和不正常的输入方式,然后引发各种安全中的问题。不过它存在的缺点在于所需要测试的数据量极大,因此很难全部覆盖到。Patrice Godefroid等通过研究,在语法的基础上对非法输入的形式作出描述,用这种方法是来提高白盒测试产生的效果,形成一种新的动态测试算法。

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

应用程序和其应用的环境两者之间的交互包括用户输入、环境变量等,这些过程中产生的故障将被作为注入故障。人为的把故障注入到系統里,可以让系统加速失效,与此同时也加强了对安全的排查。

Binbin Qu等学者曾经提出一种在客户机和服务器模式下错误的注入方式,这种方式被用在对软件组件的测试上。在API Hooking的基础上设计的错误注入工具,这种工具中的GCDEFI是在客户机—服务器模式的基础上形成的,它的组成结构包括一个服务端以及多个客户【4】。服务器可以控制住服务机,并且收集到需要的反馈信息然后与客户机产生交互;客户机的主要内容是可以管理API的拦截、系统中错误的信息等。客户机在运行中会被注入到测试驱动范围中。在GCDEFI开启之后,用户中的错误类型的信息通过控制器来得到,然后被保存到错误管理的模块区域。控制器在工作后会触发Activator,这种部件会将错误的信息传递到目标信息管理器中。当发生API拦截时,调用者的信息会被系统立即获取,然后在系统中插在相应的堆栈以及组件列表,确认是否有相互匹配的组件,一旦没有那么进入返回的模式,否则系统就会执行程序中的替代代码,再执行设计的错误注入流程。这种技术产生的特用性也存在着一些问题,就是它只能适用于特点环境中的特定组件,这样才能有较好的测试见过。Jinfu Chen也有提一种安全性测试工具,这种工具被称为CSTS。它可以在迅速获取COM组件的基础上进行相关的分析,然后在系统中进行静态分析组件漏洞,之后会自动的生成测试需要的脚本,生成测试需要的驱动等功能。但是经过检验,这种方法的评级标准较为模糊,还需要深入的细化。

2.5模糊测试

模糊测试的技术是在黑盒随机测试的基础上,运用随机的变异程序输入来检查和确认程序中的响应状况,然后在这种情形下发现漏洞,系统会在这个过程中用语法规则来进行系统正常的输入,除此之外,还可以运用试探法来产生输入变量。但是,模糊测试的一项最大的问题是它的代码覆盖率非常的低。Patrice Godefroid等学者在这种模式下提出了一种新型的白盒模糊测试的方法,这种式在象征性执行方法以及用例生成方法的启发下所提出的。但是这种方法由于样本尺寸的有限性依然存在着低代码覆盖率的情况。

2.6基于风险的安全性测试

系统中错误发生的概率以及产生的危害程度便形成了系统的潜在风险。考虑到风险的危害,这种安全测试的出发点都会以软件安全风险为主,运行过程中对风险的分析、安全测试以及软件开发的过程都进行系统化的处理,这种方法在软件开发的阶段中都会把风险的安全漏洞考虑其中,然后保持与软件开发的进度一致。

3.结语

软件安全性测试的方法由于研究的环境以及影响因素的复杂,各个种类的方法都还处于探索阶段,也存在着技术上较多的限制,这些需要工作人员在软件测试方面有丰富的操作经验,以及更加全面的知识结构,才能将各个方法进行联系操作。因此,测试人员的经验需要包括对软件安全漏洞的全面认知以及理解,另外在知识结构中还需要掌握好编程、数据库等多种编译知识,只有在强大知识储备的基础上才能够根据用户的需求高效的开发出有效的测试工具。

参考文献:

[1]秦晓军,甘水滔,陈左宁. 一种基于一阶逻辑的软件代码安全性缺陷静态检测技术[J]. 中国科学:信息科学,2014,01:108-129.

[2]侯海燕,符志鹏. 软件安全性检测技术综述[J]. 电脑知识与技术,2014,25:5847-5851+5854.

[3]倪涛. 基于静态污点分析技术的软件内核驱动安全性检测[J]. 计算机应用与软件,2015,05:262-266.

猜你喜欢
概述检测技术
初中数学复习课教学探索
中国石材行业发展概述
简析中国画构图在陶瓷绘画中的运用
食品安全检测技术研究现状
公路工程试验检测存在的问题及措施
中药熏洗治疗痔疮术后疼痛临床应用概述
自媒体时代网络谣言界定与产生的概述
浅谈现代汽车检测技术与安全管理
TSW2500型500KW短波发射机双功率模块简述
食品安全检测技术存在的主要问题及对策探究