魏南强
摘 要:随着信息全球化的进程不断加速,计算机技术已经广泛深入到人们生活的方方面面。网络中的黑客攻击事件不断发生,病毒入侵不断泛滥,人们对于信息安全的保护显得愈发重要。计算机软件自身的安全漏洞给恶意分子带来了可乘之机,因此计算机软件的安全也日益备受重视。如何有效的检测计算机软件中的各种漏洞便成为一个备受关注的话题。只有软件自身的安全等到保证,才能更加有效地保护用户的信息安全。本文的主要目的是研究计算机软件中安全漏洞的检测,首先说明了计算机软件中可能出现的漏洞,然后分析了当前主要的两大类检测方法,静态分析与动态检测两大类,并介绍了它们在实际中的相关应用。
关键词:计算机软件;安全漏洞;静态分析;动态检测
1 概述
1.1 技术背景
计算机技术的发展促进了信息全球化的进程,提高了计算机的普及,人类的各个领域都已离不开计算机应用。然而,计算机软件的安全漏洞对人类的生产生活是一个巨大的隐患。即使是防火墙的设置,入侵检测技术和杀毒软件也不能避免计算机软件自身漏洞带来的威胁。因此,我们要尽量减少计算机软件中的安全漏洞,并及时检测已有的漏洞。[1]
1.2 安全漏洞
安全漏洞是指软件、硬件的组件或协议的实现上存在的不受保护的缺陷,导致恶意攻击者的利用,在未授权的情况下入侵系统,从而威胁的系统的信息安全。
当今社会有五类最容易被人们忽视的安全漏洞,分别是Zlib、Net-snmp、Geronimo2.0、jboss应用服务器和Libtiff开源软件库。一般情况下计算机软件的安全所面临的威胁主要有软件跟踪、软件自身质量问题、非法复制等都会给用户带来一定程度的困扰。
2 计算机软件中安全漏洞的检测技术
如今计算机安全漏洞的检测技术有了一定程度的发展,目前社会上主要有两大检测方法:静态分析和动态检测。
2.1 静态分析技术
静态分析技术主要是关注程序的代码,通过程序分析技术来分析应用程序的二进制代码或源代码。静态分析技术扫描程序代码,检测程序的关键语法,解释程序行为,从而检测漏洞。静态分析的优点是程序不需要运行,不需要对目标程序代码或操作系统做任何修改,检测比较方便。缺点是存在大量的误报,无法完美地确定程序的任何重要属性。下面介绍几种主要的静态分析技术。
⑴词法检测技术:检测程序源代码中的系统调用与库函数,将待检测软件的语法作为输入,检测其在不同输入条件下的反应。这种方法速度很快,但后续需要一定的人工核实。⑵程序评注技术:在程序源代码中以注释的形式人为的添加一些评注信息,这种方法的检测结果会更加精确。[2]⑶类型推断技术:对编译器进行相应的安全分析,比如在某些特殊数据类型上添加类型修饰来加强安全约束,以强制程序员进行安全编程。⑷约束解算器技术:对目标程序源代码的特定属性进行约束。⑸元编译技术:编程人员自身对安全属性的要求被作为轻级编译器进行一定的安全检测。每个扩展的检测器只能检测一个小缺陷。⑹变异语言技术:在实际应用中使用变异的编程语言等安全编程技巧。⑺二进制代码的类型检查:建立内存的状态描述,存储记录不信任程序的内存值。通过检测内存的类型信息来推断威胁安全的行为。
静态分析技术能够检测出更多的弱点和缺陷,但是由于其误报率较高,后续需花费更大的人力进行校验核实,效率上就会有损失。
2.2 动态检测技术
动态检测技术是指在程序运行的情况下,通过分析内存、堆栈等运行环境的变量,来检测软件中隐含的技术漏洞。动态检测技术的优点是提高了程序的保密性,不需要修改应用程序的二进制代碼或源代码。下面介绍几种常见的动态检测方法。
⑴非执行栈技术:使栈中的代码不能执行。需要在操作系统中将栈页标记为不可执行。⑵非执行堆与数据技术:使堆与数据段不可执行。与非执行栈技术结合使用能更好的维护软件安全。⑶内存映射技术:通过使用映射代码页,避免攻击者以NULL字符结尾来覆盖内存。⑷安全的共享库技术:通过动态链接来检测程序运行过程中对不安全函数的调用。这种方法有较强的开发性,易配置。⑸沙箱技术:在攻击之前限制某些进程所访问的资源,从而在一定程度上避免某些攻击。该技术目前主要应用于系统调用方面。⑹程序解释技术:监视程序的运行及其行为,并通过解释程序的执行强制进行安全监测。[3]
动态检测技术在检测到攻击时会立即制止程序运行,因此能方法漏洞恶意攻击,但不能修补漏洞,因此无法彻底避免漏攻击。
3 计算机软件中安全漏洞检测技术的应用
目前,计算机软件安全漏洞检测技术主要应用在以下几个方面:竞争条件漏洞的预防,缓冲区溢出漏洞的预防,随机数漏洞的预防以及格式化字符串漏洞的防范。总之,随着互联网技术的发展,计算机应用的不断深化,我们应该投入更多的精力研究计算机软件安全漏洞的检测。
[参考文献]
[1]陈楷.计算机软件中安全漏洞监测技术的应用[J].数字技术与应用.2010(07).
[2]徐岩柏.计算机软件中安全漏洞监测方法研究[D].北京邮电大学.2006.
[3]江涛.计算机软件安全漏洞检测之分析探讨[J].电子信息与计算机科学.2013(11).