测试软件安全的方法
测试软件安全的方法
测试软件安全的方法【1】
摘要:科学技术不断更新、发展,使得计算机的软件有了越来越广泛的应用范围。
然而软件的安全问题也变得越来越重要,安全是软件在它的一个软件生命周期中最最重要的环节之一,我们只有解决好软件的安全问题才能促使软件更好的发展。
该文主要介绍了软件测试的注意事项和测试软件安全的方法。
关键词:软件;安全;测试;方法
Abstract: With the development of science and technology, the computer software has been applied more and more range.
But the security of software is becoming more and more important, safety is one of the most important link in a software cycle life. Only when we solve software security issues well we can urge software better development. This paper mainly introduces attentions and methods of the software testing.
Key words: software; security; testing; methods
软件的安全测试的目的是为了保证软件能够满足与软件预期的设计要求相符合的安全系数,和平常的软件缺陷不同的是,计算机的软件安全测试检测的是软件不应该做什么,而软件缺陷是软件应该做什么没有做到。
检测软件的安全性能我们可以分成安全功能和漏洞两个方面来进行检测。
功能的测试是为了验证计算机的软件安全功能能不能达到安全所需要的要求。
检测软件的安全功能会涉及到比较广的内容和方面,大致包含授权、机密、安全管理以及访问的控制等。
[1]安全漏洞的检测主要是针对软件存在的缺陷有哪些可能以及这些缺陷
可能会引起的软件使用过程中发生危险。
就软件安全检测工作本身而言研究检测软件安全方法具有很高的价值和意义,软件安全的测试方法的研究是保障计算机软件安全重要的保障之一。
软件测试的方法有哪些
软件的安全检测作为开发过程中重要的环节之一,主要的目的就是要发现软件存在的漏洞,通过对程序进行执行、检查,从而有效的发现、解决、更正软件存在的潜在风险和问题。
[2]我们就目前应用在计算机软件的安全检测技术情况而言,我们通常使用的软件安全测试方法大致可以分为手工检测以及静态、动态检测等数种方法。
1计算机软件安全检测是应注意的问题
我们在检测软件的安全性的时候要特别的注意一些问题:首先我们要从实际出发,根据所要检测计算机软件的自身特点以及安全性的要求进行综合的分析判断,在这些基础上科学的选择最适合此软件的安全检测方法,安全检测方案的制定贵在实事求是的合理选择。
其次,我们在检测软件安全的时候要注意好身边的人员的分配,最好进行多元化的配置,因为在检测软件安全的过程我们要配备的不仅仅是软件的安全分析员,还要一些熟悉那个软件系统的、以及设计这个软件系统的设计人员,让他们一同加入软件的安全测试中去,多领域配合会使得软件的安全检测更全面更有效。
[3]最后,我们要注意在检测软件安全的时候,要积极的认真的分析需求级、系统级以及代码级,在适当那个的时候比如规模大的软件,我们还应该分析软件的结构设计。
计算机软件的安全检测过程是系统化的,我们不能用简单的方法来解决,我们要向全面的检测出系统所有的安全问题就要选择合理的检测方法,安排配置好检测人员。
2软件安全漏洞检测方法
2.1手工分析
现在绝大多数的安全研究员采用的依然是最古老的最传统的手工分析方法。
手工分析方法如果运用在开源软件上,这种方法一般通过Source Insight这样的源码阅读工具来进行源码的查询和检索。
例如我们分析C语言或者C++的程序,最简单的办法是首先审查软件系统中的gets、strcpy等输入命令有没有存在危险的函数调用,接着需要审核的就是库函数以及软件中的循环。
[4]对于闭源软件来说,他们和开源不同,闭源的源代码获得比较的困难,所以我们要使用必要的反汇编以及调试器,我们利用反汇编来得到软件的汇编代码,在这个代码的基础上再来分析软件的安全性,闭源软件的手工分析难度比源代码阅读要高得多,这就会造成理解源程序以及程序的逆向工程分析困难。
总之不论是用什么手工分析方法,我们都要求我们的安全分析员能够深入的了解软件安全漏洞原理,对软件结构和功能的掌握也是必不可少的。
用手工分析的方法来检测软件的安全性能,软件开发员即使精通检测软件安全漏洞技术,手工捡漏仍然非常的费时耗力。
可是现在还没有完全自动化的检测软件安全的技术,而且机器的检测最终还需要我们去验证,因此人工参与是一个必须的也是不可或缺的过程,在确认静态分析结果、分析动态程序数据的构造等操作的时候我们也少不了手工分析。
2.2动态测试
软件的动态测试的目的是检验软件运行过程中的动态行为以及结果的正确性。
现在,动态测试成为了软件安全测试主要的方法之一。
这个测试需要执行程序的来完成测试需要,动态分析在运行程序以后可以得到一次或者多次的信息,然后工作人员根据得到的信息检测特定的漏洞,进而完成安全分析。
最常见的动态测试是程序的测试以及剖析,动态测试对程序的测试结果非常的准确,因为动态测试没有抽象化处理程序,在程序的执行过程中是哪条路被执行了,计算得出的数据是多少,程序运行时使用的内存、执行的时间等都可以很明确的知道。
可是动态测试的结果不完整,因为程序的执行的一个情况无法代表程序还可能会执行的其他情况。
也就是如果输入的一个数据集无法保证程序能够执行完所有可能的路径,程序一次甚至多次执行还是可能会有一些安全的问题无法被发现软件,可是这些漏洞是真实存在的,我们要做好动态测试就是要设计好分支和状态覆盖测试。
2.3静态测试
我们在安全检查的时候还有一种效率比较高的软件安全分析方法就是静态测试,它的应用越来越受到人们的重视。
只要用户给出抽象语义,静态测试技术就可以自动的发现软件所有可能执行的状态,以及状态下的软件属性。
软件的静态测试分析速度快、自动化程度高,在实际的应用中我们也发现静态测试和动态相比效率更高,而且到缺陷的速度也快不少。
虽然软件的静态分析有可能会发生漏报、误报可是到目前为止和其他的安全测试方法比起来静态测试最实用、有效的方法。
静态测试使用静态分析技术,直接分析程序的源代码,通过词法分析、语法分析和静态语义分析,检测程序中潜在的安全漏洞。
现在,主要有类型推断、数据流以及约束分析三种静态分析方法。
2.3.1类型推断
我们知道我们分析运算符作用的对象、赋值,实际参数的传递时,或多或少都会存在一些类型合适不合适的情况。
我们所说的类型推断属于处理过程,它的目的是保证进行对象的每个操作的数目和类型都是正确、合理的,确保操作有效。
类型推断可以检查类型错误,选择合适的操作,根据情况确定必要的类型转换。
这种方法简单、高效,对快速的检测软件的安全性非常的适合。
我们在检查操作系统内核权限、遇到程序中字符串格式化漏洞和内核中不安全的指针使用的安全检测的时候采用类型推断方法检测。
2.3.2数据流分析
在编译的时候我们可以使用数据流分析技术,这种技术可以收集程序代码中的语义信息,然后用代数的方式对它进行编译,从而确定变量定义以及变量的使用。
我们可以用数据流分析来优化编译、调试、验证、并行、测试、向量化程序的环境因素。
在安全检测中数据流分析有非常广泛的应用,我们用数据流分析可以检测程序软件中的数组的越界等多种类型的安全漏洞。
2.3.3约束分析
约束分析分为约束产生、约束求解两个步骤,约束分析的第一步是利用约束规则建立分析状态和变量类型的约束,第二步是求解这些约束系统。
约束系统分为三种形式:等式、集合以及混合。
约束项之间仅仅存在等式关系的是等式约束,集合约束是把程序变量看作值集,混合约束系统由部分等式约束和部分集合约束组成。
在安全检测中我们使用约束分析来测试软件的安全性能也是比较广泛的。
例如我们利用集合约束的方法来测试程序中缓冲区是不是存在溢出漏洞。
以上三种静态检测方法各有各的利弊,通过对各自的比较我们可以看出,检测能力强但是速度慢的是约
束分析,这种分析方法检测软件安全比较适合;检测强速度较快的是数据流分析,这种方法最适合的是要求考虑控制流信息并且变量之间的操作简单的问题;最检测能力弱检测速度快的是类型推断,这种方法最适合的问题是与控制流无关、属性域有限的安全属性。
2.4侦听技术
我们所说的侦听技术有的也叫做网络监听,这种方法可以获取网络传输的信息,获取的信息并非发给自己的。
在测试软件的安全性时网络侦听技术是常用手段,这种方法可有效诊断、管理网络问题,可以很好的检查软件网络安全存在的威胁。
我们现在最常用的网络是一个广播型的网络,我们可以从该网中的任何的一台计算机都可以侦听到这个网段所有的数据传输包。
我们可以利用这种技术对软件进行安全性检测,防止软件泄露一些重要的数据,我们可以利用工具或者是自己编的小程序复制我们侦听到的数据包并把他们存储下来,然后我们就可以通过得到的这些信息数据来分析网络、软件的安全。
我们最好把侦听放在路由器、网关、防火墙、交换机等设备的地方,由于这些地方流过的信息包多,所
以这里的监听效果最好。
我们经常使用的网络侦听经典程序有Snoop等,一般来说侦听程序还不能做到把侦听到的数据包马上进行分解分析,这些软件一般是先进行不停地存储,然后慢慢再进行分析,这样可以防止数据包的遗漏。
3总结

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。