APP下载

计算机软件安全漏洞检测技术的应用研究

2013-03-23黄海滨1王艳芳2

电脑与电信 2013年4期
关键词:安全漏洞黑客漏洞

黄海滨1王艳芳2

(1.增城市东方职业技术学校,广东 广州 511300;2.增城市职业技术学校,广东 广州 511300)

1.引言

当今时代,我国的电子商务发展飞速,如何实现安全的网络交易是各大交易网站和商家以及消费者都极为关心的问题。而大多数网络安全事件的根源在于计算机软件系统中存在有安全漏洞(Vulnerability)。要杜绝这类安全事件,最根本的办法在于在软件发布前检测出安全漏洞并修正。

2.软件的安全漏洞

计算机软件安全漏洞也称之为计算机脆弱性,漏洞是软件系统存在的某些缺陷,黑客能够利用这些缺陷,采取未授权的方式或手段对资源进行非法访问,恶意损害计算机软硬件而造成不必要的损失。为了预防这些恶意黑客,许多电脑使用者会为自己的计算机安装上防火墙、杀毒软件。比如瑞星防火墙、360安全卫士、金山毒霸等等这些软件根本无法阻挡技术高明的黑客,对计算机的硬件和软件安全以及通信网络安全的保护能起到的作用并不大;相反这些软件如果运用得不好反而有可能带来新的安全问题。

3.计算机安全漏洞检测技术

为了提高漏洞检测的效率,软件安全界对自动化的漏洞检测技术进行了研究,主要有动态检测和静态检测两类。动态检测工具使用较容易,且确实能够发现一些安全漏洞,但程序逻辑的覆盖率问题限制了动态检测工具的发掘能力,难于发现隐藏较深的安全漏洞。静态漏洞分析技术主要通过对系统代码进行程序分析以发现各种安全漏洞,例如缓冲区溢出、非法指针引用、竞争条件等等。与动态分析相比,静态分析技术能够支持更为有效的深度漏洞检测。

3.1 动态检测技术

动态检测方法就是在不改变源代码甚至是二进制代码的情况下对程序进行检测。这种检测主要通过修改进程的运行环境来完成。动态监测技术对于被检测软件在某种程度上会带来一些新的安全隐患。这些被检测未安全的软件在实际运行的过程中有可能影响计算机的运行性能。同时,动态检测技术本身在某种程度上说都是带有安全隐患的。

3.1.1 非执行栈(Non-Executable Stack)

基于栈攻击的事件时有发生。那么阻止栈攻击的一个最直接的方法就是让栈不能工作。这样即使黑客在栈中写入了恶意代码,如果栈不工作,这样也可以拦截一些黑客。非执行栈的缺点在于需要在操作层进行设置修改,这项技术使用的不得当还有可能影响计算机系统的性能。另外,如果一个程序既有栈溢出漏洞又有堆溢出漏洞,则很容易出现问题。使用此项技术所付出的代价就是在操作系统内核中引入了一个比较大的改变就是把栈页标记为不可执行。

3.1.2 非执行堆与数据(Non-Executable Heap/data)

堆是程序运行时动态分配内存的区域。但是程序编译时,数据段就初始化好了。如果一段代码不能被堆和数据段执行,那么黑客注入其中的恶意代码亦无法执行。这项技术如果结合非执行栈技术则能起到更全面的作用,使得恶意攻击无法完成。由于这项技术对计算机内核的修改更多,它所付出的代价要比非执行栈技术更多一些。不过目前有很多的实例可以借鉴,这就说明此项技术还是可行的。

3.1.3 内存映射(Memory Mapping)

有些黑客通过使用NULL结尾的字符串覆盖内存来达到攻击目的。使用内存映射技术,可以把代码页映射到随机的地址,那么黑客在进行攻击时将会遇到很大的困难,即使做出了大量的计算也未必能够查到所需地址。使用内存映射技术也是要修改操作系统内核的,使得操作系统可以把代码页映射到较低的内存空间。由于二进制地址在程序链接阶段就已确定,因此,虽然这个技术不需要对代码进行修改,但需要重新链接。

3.1.4 安全共享库(Safe Shared Libraries)

C和C++在设计当初就有很多函数都不够“安全”,所以很多程序在使用C和C++时就会产生软件安全漏洞。安全共享库技术就是依靠动态链接技术在程序运行期间阻止调用不安全函数,并对所有函数的参数进行检测。这项技术在Windows操作系统和UNIX操作系统上被广泛应用。

3.1.5 沙箱(Sandbox)

沙箱检测技术是通过限制访问来防止攻击的。这项技术的关键是看定义策略的全面性。一个定义严格的策略可以更好地保护程序不受攻击。如果黑客通过更改本地变量进行攻击,那么沙箱技术对于这种攻击就束手无策了。过于严格的策略可能会限制程序的一些合法行为而可能导致程序不能使用。系统调用函数的审查也可能会衍生其它一些问题的出现。

3.1.6 程序解释(Program Interpretation)

程序解释技术是程序运行后对程序进行检查。它无需对操作系统内核和程序代码作修改。首先设置一个新的启动代码重新链接到应用程序,再由这个新的起动代码来调用动态优化的程序解释框架。一旦设置了比较严格的安全策略,几乎所有已知的改变程序控制流程或修改危险函数的参数的攻击都可以被检测到并可以进行防范。

3.2 静态检测技术

使用程序分析技术来分析应用程序的二进制代码或源代码的方法就是静态检测。静态检测的好处就是计算机不需要运行软件,检测起来会比较方便。对软件不会带来额外的安全漏洞。

3.2.1 词法分析(lexical analysis)

最早出现的静态分析技术是词法分析,它只能对多程序进行语法上的检查。这项技术的方法是把程序分为一个个片断,通过把每一个片段与“嫌疑数据库”中的数据进行比较进行判断。词法分析仅能检测一些已知的固定漏洞代码,漏报率相当高。所以这种方法目前一般不采用。

3.2.2 类型推导(type inference)

这种方法的原理是自动推导程序中变量和函数的类型来判断对变量和函数的访问是否符合正常规则。基于类型推导的软件漏洞静态分析方法适用于控制流无关的分析。

3.2.3 规则检测(rule Check)

安全规则描述程序本身的安全性。程序本身存在一些编程规则即一些通用的安全规则也称为漏洞模式,比如程序在root权限下要避免exec调用。软件的规则检测则是将这些规则以特定语法描述,由规则处理器接收后并将其转换为分析器能够接受的内部表示,然后再将程序行为进行比对、检测。

3.2.4 模型检测(model checking)

模型检测最早在1981年被提出,主要通过显式状态搜索或隐式不动点计算来验证有穷状态并发系统的模态/命题性质。在计算机软件检测中采用模型检测主要是对有限状态的程序构造或抽象模型进行建模,通过模型比较来验证软件特性。我们通过对软件的某个片段或者某些执行点进行建模来进行比较。这是因为可以避免软件的复杂性。通过建模比较,我们可以将一些功能和用途相近的软件进行安全监测,从而使软件的安全性能达到一个比较高的水平。

3.2.5 定理证明(theorem proving)

定理证明比以上介绍的监测方法更加严格,采用多种形式来验证被检测程序抽象公式是否为真。判别的方法取决于公式的形式,如不等式的舍取:首先由舍取式构造成一个图,舍取式中每个条件对应于图中的一个节点,然后利用给出的等式将对应的顶点合并,在顶点合并的过程中对舍取式中的不等式进行检查,如发现存在不成立,则该舍取式不可满足。

4.结语

电子商务应用越来越广泛,信息安全也受到越来越多的重视。我们在日常的工作、学习和生活中遇到的计算机安全问题主要来自以下两个方面:一是来自软件自身的错误;二是遭受到一些恶意的攻击而造成的错误。因此,对计算机软件漏洞进行检测是从源头上发现问题的好方法,从计算机安全的源头研究如何提高软件的安全性,从而能够提升网络的安全性。而对于计算机软件漏洞的检测技术的研究,我们只能不断探索,只有不断提高软件的安全监测技术和安全防范技术,才能有效阻止恶意黑客的非法入侵,保障电子商务交易的安全。

[1]单谷云,黄成军,江秀臣.电缆排管机器人的图像监控传输系统设计[J].微计算机信息,2008,(29).

[2]蒋诚.信息安全漏洞等级定义标准及应用[J].信息安全与通信保密,2007,(6).

[3]彭炜.计算机安全漏洞动态检测研究[J].光盘技术,2009,(4).

[4]梁彬,侯看看,石文昌,梁朝晖.一种基于安全状态跟踪检查的漏洞静态检测方法研究与实施[J].计算机学报,2009,(6).

[5]Johnson R,Wagner D.Finding user/kernel pointer bugswith type inference//Proceedings of 2004 USEN IX Security Symposium,San Diego,CA,USA,2004:119-134.

[6]Ashcraft K,Engler D.Using programmer-written compiler extensions to catch security holes//Proceedingsof 2002 IEEE Symposium on Security and Privacy,Oakland,CA,USA,2002:143-159.

猜你喜欢

安全漏洞黑客漏洞
漏洞
欢乐英雄
多少个屁能把布克崩起来?
基于大数据技术的软件安全漏洞自动挖掘方法研究
基于模糊测试技术的软件安全漏洞挖掘方法研究
网络黑客比核武器更可怕
安全漏洞太大亚马逊、沃尔玛和Target紧急下架这种玩具
三明:“两票制”堵住加价漏洞
漏洞在哪儿
高铁急救应补齐三漏洞