软件设计中的安全漏洞动态检测技术探讨

2016-02-04 12:46席朋朋
山西青年 2016年4期
关键词:软件设计安全漏洞

席朋朋

海南师范大学,海南 海口570100



软件设计中的安全漏洞动态检测技术探讨

席朋朋

海南师范大学,海南海口570100

摘要:计算机软件安全问题直接关系到我国信息技术产业的快速发展,软件安全不仅涉及到人们的财产安全还涉及到人们对身份信息安全,因而软件安全是软件产业中的重要内容。而软件设计是产生软件安全漏洞的主要环节,所以为了提高软件安全的系数和促进软件产业的迅速发展,从业人员应该重视软件生产中的安全漏洞检测技术。

关键词:软件设计;安全漏洞;动态检测

计算机的基础就是软件,其中包括系统软件和应用软件,而软件的安全系数决定了软件的性能,所以为了保证软件的安全就应该从根源上避免漏洞的产生。软件设计是软件开发的重要阶段,同时软件程序的编码也是软件产生漏洞的主要地方,所以重视软件设计中的安全漏洞动态检测技术是社会发展的必然。就此本文与读者对软件设计中的安全漏洞动态检测技术进行共同探讨。

一、动态检测技术概念

软件程序在设计过程中有很多可以共用的代码段,如控制流和数据流。一个进程的内存映射包括代码段、资源段、数据段、等部分,在不同的软件系统中,它们具有不同的表现形式。如在UNIX中,除了上述的代码段还有未经过初始化的数据段。动态检测方法就是在保持源代码的情况下,通过对改变进程运行环境来对程序的异常和错误进行检测。

二、动态检测技术的分类

其主要方法包括非执行栈、非执行堆与数据、内存映射、安全共享库、沙箱。

非执行栈技术;堆栈是计算机软件程序中的一个重要概念,其实它就是数据结构,将数据按照序排列,在使用数据时只能从栈顶进行数据的操作。在近几年,基于栈的攻击事件越来越多,其主要原因就是栈具有可写入性和执行性。而且数据变量都是存储在栈中,如果攻击者向其中写入代码就会使栈执行这段代码。防御这种攻击行为的有效方法就是让栈不执行代码,这样就不会造成攻击。但是这种方法存在一个重要的问题就是软件性能问题。虽然它只需要在操作系统层面进行程序修改,但是同时很容易出现栈溢出漏洞和堆溢出漏洞。而且这种动态检测技术只能检测和摧毁栈攻击。如果攻击者在注入恶意代码的时候绕过这种技术检测,把返回地址覆盖掉,从而让返回地址指向攻击代码数据段也可以实施攻击行为。

非执行堆与数据技术;堆也是一种数据结构,堆不同于栈的是,堆是队列优先,先进先出,而栈是先进后出。并且堆是程序员分配释放的,若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表。这种技术主要是让堆和数据都不执行代码,这样攻击者写入的代码同样也不会执行,从而有效避免掉攻击的发生。这种技术和非执行栈技术相结合会更有效果,但是使用该技术需要更多的代价。在实际的情况中也应该依情况而定。

内存映射技术;在攻击行为者,有的攻击者会通过使用NULL字符串来覆盖内存。内存映射就是用映射代码页的方法,阻止攻击者将NULL字符串跳转到较低的内存中,继而把代码页映射到不同的内存地址。内存映射技术是不需要进行代码修改的,但是它需要重新进行连接。虽然它能有效避免一些代码注入内存地址跳转的攻击,但是它并不能对一些写入新代码执行新代码的攻击进行有效的防御。这种技术对那些具有固定地址或者使用高端地址的攻击是有效的,它最大的好处在于对于软件的性能没有任何影响。

安全共享库技术;很多计算机遭到攻击就是因为使用了不安全的共享库。尤其是C + +语言,很容易造成共享的不安全,比如strcpy、strcat、gets等等,这些函数如果运用不当,就会产生不安全共享,给计算机带来一定的影响。共享库技术就是通过动态链接,在程序运行的时候对不安全的函数进行检测和拦截,这种技术经常用于WINDOWS和UNIX系统。它的优点在于不需要对程序做任何的修改。但是它的缺点就是不能应对代码段的溢出攻击,包括非标准的库函数。在现代技术中,共享库的特性已经被整合到标准库之中,如glibc。

沙箱技术;沙箱是一个虚拟程序,在你这个虚拟环境中可以做文件的修改或者做软件运行的操作,而且不影响整个系统。它最早应用于测试软件,如测试某种病毒或或者不安全软件。沙箱动态检测技术是通过程序来限制访问权限从而防御一些攻击行为。比如在C语言中的execv、system等系统调用函数。当发现某个软件正在运行这种根本不存在这些系统调用时,就可以在攻击前进行防御拦截,从而达到抵抗攻击的作用。沙箱中的任何操作行为都不给系统造成影响。

三、总结

软甲开发的主要目的就是服务于大众,因而保护用户的信息安全和财产安全是软件应该具备的功能,软件安全直接关系到软件行业的快速发展。所以在实际的软件设计中可以采用软件设计的安全漏洞动态检测技术,它主要包括非执行栈、非执行堆与数据、内存映射、安全共享库、沙箱等技术,在不同的软件系统和软件运行环境中,技术人员也应该根据实际情况采用不同的技术方法,从而提高软件安全的系数。

[参考文献]

[1]冉崇善,周莹.软件设计中的安全漏洞动态检测技术分析[J].微计算机信息,2010,06:78-79 +75.

[2]李舟军,张俊贤,廖湘科,马金鑫.软件安全漏洞检测技术[J].计算机学报,2015,04:717-732.

[3]钟丽芳.计算机软件中安全漏洞检测技术及其应用[J].计算机光盘软件与应用,2013,12:59-60 +62.

中图分类号:TP311.52

文献标识码:A

文章编号:1006-0049-(2016)04-0159-01

猜你喜欢
软件设计安全漏洞
刍议计算机软件中的安全漏洞检测技术
基于模糊测试技术的软件安全漏洞挖掘方法研究
探析计算机安全漏洞检测技术
网络安全加固工作的分析与探讨
试论安全漏洞检测技术在软件工程中的应用
智能设备安全漏洞知多少
CAN总线通信技术在电梯监控系统中的应用
基于单片机SPCE061A的字幕机点阵式字母电子显示屏的设计制作
基于STM8S903K3的序列打螺丝夹具的软件设计
一种VHDL语言代码重用的方法