论文部分内容阅读
摘要: 随着信息网络的快速发展,计算机得到日益广泛的应用。软件的安全是计算机网络安全的关键之一,因此计算机软件安全漏洞检测技术十分重要。探讨计算机软件中安全漏洞检测技术及其应用。
关键词: 计算机软件;安全漏洞;检测技术;应用
中图分类号:TP311 文献标识码:A 文章编号:1671-7597(2012)1020041-01
近年来,计算机的广泛应用,加速了信息全球化的进程,在当今互联网普及的形势下,计算机软件的安全应用日益备受重视。计算机软件受到的大部分不法侵入和攻击,都是从其漏洞来进入,这些弱点和缺陷给信息安全带来了巨大的威胁。利用密码技术不能从本质上解决软件漏洞所导致的安全隐患,因此,必须加强研究计算机安全漏洞的检测方法,来提高软件的安全性,从而将损失降至最低。
1 计算机软件中的安全漏洞
计算机安全漏洞也称为计算机脆弱性,漏洞是系统的一组特性,恶意的主体(攻击者或者攻击程序)能够利用这组特性,通过巳授权的手段或方式获取对资源的未授权访问,或者对系统造成损害。很多人都会为自己的计算机安装上防火墙,反病毒等软件,可是,以目前“黑客”的技术能力来看,防火墙、入侵检测和反病毒软件等这些技术,对于计算机软件安全漏洞的破坏已经没有多大的帮助了,不仅如此,如果运用的不好还可能带来新的软件漏洞,也就是说如果只是简单的依靠密码技术是不可能从根本来解决安全隐患的,甚至可能会导致安全问题的大量出现。
现代社会容易被人们所忽略的五大安全漏洞分别为:① Geronimo2.0,这个安全漏洞是让远程攻击者能够绕过身份识别的要求来插入恶意软件代码和获得访问的权限;② JBOSS应用服务器,此应用服务器3.2.4至4.0.5版中有一个目录遍历的安全漏洞;③ LIBTIFF开源软件库,这个库是读写标签图像文件格式的文件;④ Net-SNMP,是指安全漏洞存在Net中或者存在SNMP中的协议文件里;⑤ ZLIB,是指一个用于数据压缩的软件库,此库里有一个不完整的代码解释一个长度大于1的代码,而引起的安全漏洞。
2 计算机软件中安全漏洞的检测技术
当前,计算机软件安全的检测方法主要有两大类,即静态分析与动态检测两大类。静态分析技术是通过程序分析技术来分析应用程序的源代码或二进制代码,找出可能导致错误的异常。漏报率和误报率是衡量静态分析技术的两个重要指标,降低其中之一的同时往往会造成另外一个指标的增高。静态分析的缺陷是由于其结果是对真实情况的近似,它无法完美地确定程序的任何重要属性。其优点是计算机软件不需运行,检测比较方便。动态检测技术主要是通过分析修改内存、环境变量等运行环境来实现的,它可将程序的保密性提高,实现安全的目的。静态检测方法较动态检测方便分析速度快、自动化程度高,比动态检测技术更受欢迎。以上两大类检测方法又分为多种安全检测技术,在此只简要分析几种主要的安全检测技术。
1)词法检测技术。这是最早出现的静态检测技术,又称为语法测试,它仅仅检测程序源代码中有危险的C语言中的库函数和系统调用。该测试方法是以被检测软件的功能接口的语法生成软件的测试输入,以检测软件对不同种类输入的反映情况。这类测试技术的程序,一般是先识别软件接口的语言,其次是定义语言的语法,最后生产测试用例,并执行安全检测。
2)形式化安全测试技术。此法是确立软件的数学模型,利用形式规格,较常用的类型有模型的语言、行为的语言及有限状态的语言等,以说明语言的支持,从而提供形式化的规格说明。此类技术的安全检测两种形式化方法,包括模型检测和定理证明。
3)基于故障注入的安全性测试技术。该方法是应用故障数的最小割集与故障分析树来生产检测用例,其优点是检测的自动化程度明显提高。故障树分析法用系统通过利用最不该发生的时间作为顶事件,以此去检测可能导致事故发生的中间事件与底事件,再将顶事件、中间事件及底事件通过合理的逻辑门符号进行连接,进而形成故障树。该方法可以显著提高检测的自动化程度,是比较充分的安全检测方法。
4)模型的安全功能测试技术。该方法通过建模的方式,对计算机软件的行为与结构生成测试模型,据此生成检测用例,从而驱动软件进行安全检测。此类模型安全功能测试技术主要包括马尔可夫链和有限状态机等。
5)基于属性的测试技术,其优点在于能够有效分析安全漏洞的交互性及扩展性等。其检测程序大致为:先确定软件的安全编程规则,以此作为安全属性,从而验证系统程序的代码是否遵守其规则。
6)其他的测试技术。如基于白盒的模糊测试,该法有效地结合传统的模糊测试和动态测试用例。此外,近年来对Web服务开展的分布式软件安全性测试技术也得到发展。总的来说,软件安全检测方法主要作用就是通过检测、分析软件设计或软件中可能存在的安全问题,以及时采取改善安全性能的有效措施,以更有针对性地保证计算机软件的安全性应用。
3 计算机软件安全漏洞检测技术的应用
1)防止竞争条件漏洞。对于竞争条件漏洞的防治方式要将产生竞争的代码实行原子化操作。代码是执行的最小单位,在执行程序操作的时候,不会有任何干扰来阻止其执行。原子化的体现就是采用锁定的方式,通过防范TOCTOU问题,做到避免直接对使用的文件名系统进行调用,从而需要将使用文件句柄或者文件进行描述。
2)防止缓冲区溢出漏洞。通过对程序中危险函数的严格检查来防止缓冲区溢出,使用安全版本来替换不安全版本,比如使用strncat来对strcat进行替换等等。
3)防止随机数漏洞。对随机数漏洞的防范必须要使用较好的随机数发生器,好的随机数发生器自身就带有密码算法,从而为随机数流提供了安全,即使受到攻击,对全部算法的细节有所了解,也无法得到生成的数据流。
4)格式化字符串的漏洞防范。通过严密的防范,在代码中直接使用格式常量,不给攻击者留下任何构造格式串的机会。通常不定参数个数函数会产生格式化字符串漏洞函数,必
须在使用这些函数之前,确保其参数及个数是均衡对应的。此外,通过在Windows下使用窗口输入输出数据,也可以降低该漏洞所造成的安全威胁。
总之,随着互联网的快速发展,电子商务领域的应用日益广泛,要求我们要不断探索更有效、更快速的计算机安全软件的检测技术,不断提高自身的安全检测和防预技术,才能有效阻止黑客的非法入侵,保障软件的安全应用。
参考文献:
[1]晁永胜、郑秋梅,软件安全建模与检测[J].计算机仿真,2007(10).
[2]陈楷,计算机软件中安全漏洞检测技术的应用[J].数字技术与应用,2010(07).
[3]马海涛,计算机软件安全漏洞原理及防范方法[J]科协论坛(下半月),2009(06).
[4]傅卓军、龙陈锋,网络安全漏洞检测软件的设计与实现[J].计算机与数字工程,2011(07).
[5]蒋廷耀、王训宇、马凯、关国翔,基于EAI和AOP的软件安全测试及应用研究[J].计算机科学,2009(04)
关键词: 计算机软件;安全漏洞;检测技术;应用
中图分类号:TP311 文献标识码:A 文章编号:1671-7597(2012)1020041-01
近年来,计算机的广泛应用,加速了信息全球化的进程,在当今互联网普及的形势下,计算机软件的安全应用日益备受重视。计算机软件受到的大部分不法侵入和攻击,都是从其漏洞来进入,这些弱点和缺陷给信息安全带来了巨大的威胁。利用密码技术不能从本质上解决软件漏洞所导致的安全隐患,因此,必须加强研究计算机安全漏洞的检测方法,来提高软件的安全性,从而将损失降至最低。
1 计算机软件中的安全漏洞
计算机安全漏洞也称为计算机脆弱性,漏洞是系统的一组特性,恶意的主体(攻击者或者攻击程序)能够利用这组特性,通过巳授权的手段或方式获取对资源的未授权访问,或者对系统造成损害。很多人都会为自己的计算机安装上防火墙,反病毒等软件,可是,以目前“黑客”的技术能力来看,防火墙、入侵检测和反病毒软件等这些技术,对于计算机软件安全漏洞的破坏已经没有多大的帮助了,不仅如此,如果运用的不好还可能带来新的软件漏洞,也就是说如果只是简单的依靠密码技术是不可能从根本来解决安全隐患的,甚至可能会导致安全问题的大量出现。
现代社会容易被人们所忽略的五大安全漏洞分别为:① Geronimo2.0,这个安全漏洞是让远程攻击者能够绕过身份识别的要求来插入恶意软件代码和获得访问的权限;② JBOSS应用服务器,此应用服务器3.2.4至4.0.5版中有一个目录遍历的安全漏洞;③ LIBTIFF开源软件库,这个库是读写标签图像文件格式的文件;④ Net-SNMP,是指安全漏洞存在Net中或者存在SNMP中的协议文件里;⑤ ZLIB,是指一个用于数据压缩的软件库,此库里有一个不完整的代码解释一个长度大于1的代码,而引起的安全漏洞。
2 计算机软件中安全漏洞的检测技术
当前,计算机软件安全的检测方法主要有两大类,即静态分析与动态检测两大类。静态分析技术是通过程序分析技术来分析应用程序的源代码或二进制代码,找出可能导致错误的异常。漏报率和误报率是衡量静态分析技术的两个重要指标,降低其中之一的同时往往会造成另外一个指标的增高。静态分析的缺陷是由于其结果是对真实情况的近似,它无法完美地确定程序的任何重要属性。其优点是计算机软件不需运行,检测比较方便。动态检测技术主要是通过分析修改内存、环境变量等运行环境来实现的,它可将程序的保密性提高,实现安全的目的。静态检测方法较动态检测方便分析速度快、自动化程度高,比动态检测技术更受欢迎。以上两大类检测方法又分为多种安全检测技术,在此只简要分析几种主要的安全检测技术。
1)词法检测技术。这是最早出现的静态检测技术,又称为语法测试,它仅仅检测程序源代码中有危险的C语言中的库函数和系统调用。该测试方法是以被检测软件的功能接口的语法生成软件的测试输入,以检测软件对不同种类输入的反映情况。这类测试技术的程序,一般是先识别软件接口的语言,其次是定义语言的语法,最后生产测试用例,并执行安全检测。
2)形式化安全测试技术。此法是确立软件的数学模型,利用形式规格,较常用的类型有模型的语言、行为的语言及有限状态的语言等,以说明语言的支持,从而提供形式化的规格说明。此类技术的安全检测两种形式化方法,包括模型检测和定理证明。
3)基于故障注入的安全性测试技术。该方法是应用故障数的最小割集与故障分析树来生产检测用例,其优点是检测的自动化程度明显提高。故障树分析法用系统通过利用最不该发生的时间作为顶事件,以此去检测可能导致事故发生的中间事件与底事件,再将顶事件、中间事件及底事件通过合理的逻辑门符号进行连接,进而形成故障树。该方法可以显著提高检测的自动化程度,是比较充分的安全检测方法。
4)模型的安全功能测试技术。该方法通过建模的方式,对计算机软件的行为与结构生成测试模型,据此生成检测用例,从而驱动软件进行安全检测。此类模型安全功能测试技术主要包括马尔可夫链和有限状态机等。
5)基于属性的测试技术,其优点在于能够有效分析安全漏洞的交互性及扩展性等。其检测程序大致为:先确定软件的安全编程规则,以此作为安全属性,从而验证系统程序的代码是否遵守其规则。
6)其他的测试技术。如基于白盒的模糊测试,该法有效地结合传统的模糊测试和动态测试用例。此外,近年来对Web服务开展的分布式软件安全性测试技术也得到发展。总的来说,软件安全检测方法主要作用就是通过检测、分析软件设计或软件中可能存在的安全问题,以及时采取改善安全性能的有效措施,以更有针对性地保证计算机软件的安全性应用。
3 计算机软件安全漏洞检测技术的应用
1)防止竞争条件漏洞。对于竞争条件漏洞的防治方式要将产生竞争的代码实行原子化操作。代码是执行的最小单位,在执行程序操作的时候,不会有任何干扰来阻止其执行。原子化的体现就是采用锁定的方式,通过防范TOCTOU问题,做到避免直接对使用的文件名系统进行调用,从而需要将使用文件句柄或者文件进行描述。
2)防止缓冲区溢出漏洞。通过对程序中危险函数的严格检查来防止缓冲区溢出,使用安全版本来替换不安全版本,比如使用strncat来对strcat进行替换等等。
3)防止随机数漏洞。对随机数漏洞的防范必须要使用较好的随机数发生器,好的随机数发生器自身就带有密码算法,从而为随机数流提供了安全,即使受到攻击,对全部算法的细节有所了解,也无法得到生成的数据流。
4)格式化字符串的漏洞防范。通过严密的防范,在代码中直接使用格式常量,不给攻击者留下任何构造格式串的机会。通常不定参数个数函数会产生格式化字符串漏洞函数,必
须在使用这些函数之前,确保其参数及个数是均衡对应的。此外,通过在Windows下使用窗口输入输出数据,也可以降低该漏洞所造成的安全威胁。
总之,随着互联网的快速发展,电子商务领域的应用日益广泛,要求我们要不断探索更有效、更快速的计算机安全软件的检测技术,不断提高自身的安全检测和防预技术,才能有效阻止黑客的非法入侵,保障软件的安全应用。
参考文献:
[1]晁永胜、郑秋梅,软件安全建模与检测[J].计算机仿真,2007(10).
[2]陈楷,计算机软件中安全漏洞检测技术的应用[J].数字技术与应用,2010(07).
[3]马海涛,计算机软件安全漏洞原理及防范方法[J]科协论坛(下半月),2009(06).
[4]傅卓军、龙陈锋,网络安全漏洞检测软件的设计与实现[J].计算机与数字工程,2011(07).
[5]蒋廷耀、王训宇、马凯、关国翔,基于EAI和AOP的软件安全测试及应用研究[J].计算机科学,2009(04)