计算机软件中安全漏洞检测技术及其应用

来源 :计算机光盘软件与应用 | 被引量 : 0次 | 上传用户:efan913
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘 要:当前,伴随着社会经济的逐步发展,科学技术的飞速提高,信息系统在我国的各个领域被广泛使用,并发挥着重要的作用。所以,信息系统的安全问题就成为了一个关键的事情。在计算机的软件系统中,安全漏洞是对信息系统造成威胁的主要原因,所以,计算机软件中安全漏洞的检测技术就成为了现今人们探索的重点问题。本文简要探讨了计算机软件中安全漏洞检测技术的静态检测及动态检测技术,分析其具体应用,目的在于进一步提高计算机软件中安全漏洞的检测技术,保证软件的安全性能。
  关键词:计算机软件;安全漏洞;检测技术;应用
  中图分类号:TP393.08
  随着科学技术的飞速发展,计算机软件的作用也变得更加强大、多样,同时,源代码的数量也随之急剧增加。那么,一些黑客就可以通过代码中的某些漏洞对计算机的软件及系统进行入侵并破坏。所以,计算机软件的安全问题已经变成了如今系统安全的关键问题之一。根据相应的数据统计发现,现今,计算机软件系统在运行过程中,漏洞出现的频率越来越高,而黑客的攻击操作也正开始面向利益化方向转变,攻击形式各种各样。所以,相关的技术人员唯有持续增强对漏洞检测技术的研究工作,找寻新的处理办法,才能够保证电子计算机资料的安全性。
  1 计算机软件中的漏洞
  漏洞,指的是在计算机软件系统中含有的缺点及弱项,并且这些缺点及弱项极容易造成计算机的软件系统对于一些特殊的危险或隐患出现相对较高的敏感性,严重的甚至对系统进行攻击。计算机软件漏洞出现的因素主要在于在其软件的开发与研制过程中,由于设计人员操作失误而导致的。通常来讲,这种漏洞的表现形式一般分为两种,即功能性的漏洞及安全性的漏洞。功能性的漏洞指的是能够影响计算机系统正常运行的漏洞,例如:运行结果错误、运行流程错误等;安全性的漏洞指的是一般情况下不能够影响计算机及其软件正常工作,但如果漏洞被黑客运用,就能够导致软件的运行错误,甚至出现一些恶意的执行代码,发出错误的指令,危险性更高。
  漏洞具有自身特有的性质,具体表现在以下几点内容中:其一,在程序的编制过程中产生一些逻辑性的错误是极为平常的事情,而这些错误一般都是由于编制人员大意导致的;其二,在计算机软件进行数据处理及运算过程中,很可能产生一些逻辑性的错误,将过小或过大的程序模块同中等的程序模块相对比,发现其更容易产生一些逻辑性的错误;其三,漏洞同计算机软件的系统环境间有着密切的关系。在不同的硬件及软件中,同一个设备的不同版本,在不同的设置基础上,各个设备共同组成的软件系统和同一系统的不同设置都有可能包含一些安全漏洞;其四,计算机软件系统漏洞同时间之间也包含着密切的联系,即伴随着时间的不断增长,一些以往的漏洞情况会被不断的纠正及修补,而形成的新漏洞问题也会逐渐突显。因此,计算机软件中的漏洞问题是一项长久性的问题。
  2 计算机软件中安全漏洞的检测技术
  对于计算机软件中的安全漏洞来讲,一般可以应用以下两种检测方法进行检查,即静态检测及动态检测。
  2.1 计算机软件安全漏洞检测技术中安全静态检测
  最开始的计算机软件安全漏洞静态检测就是静态分析,但是由于其检验的方式多停留表面,因此,近些年开始逐渐对其进行研究与创新,静态检测也就逐渐扩充成为两种内容,静态分析及程序检验。其中,静态分析指的是对需要检测的系统程序进行源代码的扫描工作,从语义、语法等角度进行全面解析,同时将待测系统程序的自身特性直接进行分析,利用这种方法寻找漏洞。而程序检验是指抽象系统内的程序源代码。主要借用检验方法,检测软件系统的程序是否符合计算机的需求,特别是对安全的需求,然后对程序中的安全漏洞存在与否进行判定及检验。
  对于计算机软件安全漏洞的静态检测来讲,其更多注重的是计算机软件系统程序的内部特性,静态检测的方法特点同检测漏洞的特点之间包含着密切的关联。将安全漏洞进行划分的方法是各种各样的,依据现存的分类方法,漏洞能够被划分成几个很细小的部分,大部分的检测方法能够处理的漏洞较为分散、零散,所以,很难在漏洞的类别方面找寻其存在的共同点。所以,为了更便捷的将漏洞进行对比,可以把漏洞划分成安全性的漏洞及内存性的漏洞两种。安全性的漏洞更注重数据流的误差及错误方面,一般由于错误的内存形态及情况而形成;内存性的漏洞则更注重类别及数据自身的准确性。所以,对于这种漏洞来讲,最有效的检测方法就是侧重于在其储存空间进行建模。另外,由于静态检测方法的技术特性都具有一定的区别,在对漏洞的解读及处理方面也各不相同,因此,一些技术仅能够对特定的漏洞进行检验,而其他方法能够良好的处理以上两方面的漏洞。
  2.1.1 静态分析
  静态分析的方法重点是对程序中的代码开展全面、直接的扫描工作,同时提炼出其中的关键句及语法,利用对其含义的解读来分析程序的行为,再严格的依照预先设定的漏洞特性及计算机软件系统的安全标准对系统的漏洞进行整体检测。第一,对词句及语法进行分析。其是最早产生的一种静态分析方法,然而,它在进行词句及语法分析时,仅停滞在对语法的检查工作上。将系统中的程序划分成一段段语句片段,再把每个片段同“疑问数据库”进行仔细对比,如果其中含有一些漏洞问题或疑问,就对其开展启发式的评估及判定。从中可以看出,词句及语法的分析方式尽管能够有效的检测出漏洞,但检测的数量是有限的,且检测出的漏洞一般是已知的,漏报问题也很严重;第二,严格依照相关的标准进行检测。通常来讲,安全标准是对计算机系统程序运行情况进行描述,程序本身就是一种编程的标准,也就指的是那些一般的安全标准,我们常说的漏洞模式。可以应用规则处理的检测方式,对以上标准利用一定的语法模式进行描述,再通过规则处理器进行接收,把其转变成处理器能够容纳的内部表述,最后再对系统程序的运行进行整体检测。
  2.1.2 程序检验
  这种检测方法重点是借用抽象的软件系统程序获取形式化的程序及模型,再应用形式化的检验方法对其进行检测,最后再利用正确性的检验方法对计算机系统的漏洞问题进行检测。第一,模型的检验。模型检验指的是利用对有限情况下的计算机系统程序有向图及状态机等进行抽象模型建立,同时来完成系统特征的检验工作。一般情况下,包含两类的检验方式:符号化检验方法及模型自动转化。符号化指的是把抽象的模型转变成语法树的形式进行公式描述,判断公式是否符合需求;模型自动转化将需进一步检测的程序转化成等价自动机,让两个自动机相互补充、替换,从而形成新的自动机,最后将判定的系统转变成能够容纳的语言形式。模型检验一般应先举出现实中能够产生的各种情况,由于软件系统本身极为复杂,将所有程序点都进行建模会出现极为庞大的规模,因此,一般都仅对其中的部分属性及程序进行抽象建模。但是,最近几年,新模型检测技术逐渐生成,其重点是利用内存建模的形式对以往的时序漏洞进行检验。然后再利用定理证明的方式进行漏洞检测。这种方法同模型检验相对比,更加严密一些。主要是利用多重判定方式对程序进行判断,特别是对抽象的公式进行真假判定。判断的方法也是由抽象公式本身形式所决定的,例如:不等式的合取就是一个关键因素。先利用合取式制成图,其中的每个条件都在图中有對应点反应,进而再应用已给定的等式把各点进行合并。在这时,应检测合取式中的各个不等式,如果发现不成立的等式,合取式就无法满足。在进行程序检验过程中,模式检验本身的可靠性及实用性可以通过实践证明,与其相关的时序性同系统漏洞的类别间有着密切的关联。在应用中,定理的证明需要使用者具备良好的综合素养、专业性的技术,所以,当前应用情况并不广泛。   对于计算机软件中安全漏洞的静态检测来讲,其仅能检验出当前已经存在的漏洞类别,由于缺少一般漏洞的描述标准,对于那些未知的漏洞,就无法进行判定及描述。对于现今已经存在的漏洞来讲,并没有有效的检测方法对其进行全面覆盖。静态检测的最大不足之处就在于其性能方面的缺点,由于静态检测的精准度、空间及时间等条件间存在正比例关系,因此,想要提高其检测的质量,就必定增加其运行成本的资金投入。
  2.2 计算机软件安全漏洞检测技术中安全动态检测
  2.2.1 内存映射
  很多攻击者经常应用“NULL”结尾的字符串进行内存覆盖,从而达到攻击目的。应用代码页的映射技术,可以让攻击者在应用“NULL”结尾的字符串进行内存覆盖,跳转到较为简单的内存区的操作变得极为困难。从一个角度看来,把代码页随机的映射到不同的内存地址上,也可以在一定范围内降低那些依靠猜测地址来进行页面攻击的可能。
  2.2.2 非执行栈
  近些年来,基于栈攻击软件的问题时有发生,其主要原因一般在于操作系统中的栈自身的能写及执行方面。因为内部变量,尤其是数组变量都包含在栈之中,因此攻击人员能够向栈中恶意书写一些代码,然后寻找方法进行代码执行。预防栈被侵略、攻击的最有效方式就是将栈转变成不能够执行代码的形式。唯有这样,才能够让攻击人员恶意书写在栈上的代码无法执行,同时也从一定层面上降低了其被攻击的概率。
  2.2.3 安全共享库
  一些计算机软件安全漏洞主要是因为应用了一些不安全的共享库而产生的。安全共享库能够在一定层面上预防攻击人员对其进行的攻击行为。安全共享库指的是应用动态链接的方式,在程序运行过程中对那些不具备安全性的函数应用进行拦截,另外对其进行检测,从而确保计算机软件的安全。这种方法一般在windows操作系统及UNIX上广泛使用该。
  2.2.4 沙箱
  沙箱方法指的是利用对一个程序的资源访问进行限定来防止某些恶意的攻击。例如:在C语言中包含一些调动函数,对于一个软件来讲,其实并没有此类调动函数,如果发觉某项正在运行的软件中包含了类似的调动函数,就证明它受到攻击了。如果在被攻击前应用了沙箱,就能够对其进行限定,确保其受到攻击后不会造成影响。
  3 计算机软件中安全漏洞检测技术的应用
  3.1 用来预防竞争条件的漏洞
  对于那些因竞争条件而形成的漏洞,其主要的预防办法就是把形成竞争的编码应用原子化进行操作。编码是执行单位中最小的,在程序运行时,不存在任何的情况对其造成干扰。原子化的操作就是应用锁定的方法,利用预防某种特定状态改变而形成的问题,做到间接调用使用文件名系统的目的,进而把使用的文件或句柄进行描述。
  3.2 用来预防缓冲区的漏洞
  利用对软件程序中较为危险的函数检查来预防缓冲区的漏洞溢出,可以使用安全软件版本来代替不安全的版本。例如:应用extern char*strncat来代替原本的extern char*strcat等。
  3.3 用来预防随机出现的漏洞
  在进行随机漏洞预防时,应了利用性能良好的隨机发生设备。随机发生设备自带密码算法,进而保证了随机数流的安全,就算软件遭受攻击,掌握全部的算法细节,也不能获得形成的数据流。
  3.4 预防格式化字符串的漏洞
  利用严谨的预防,在数码中直接应用格式常量,不为攻击者提供任何的创建格式串的可能。一般不定参数的个数函数都会出现格式化字符串漏洞,在使用此类函数时,应保证每个参数的个数及均衡性能。另外,应用Windows操作系统下属的窗口进行数据输出工作,同样可以减少漏洞的威胁能力。
  4 总结
  总而言之,在现今的局势下,计算机软件中的安全漏洞检测技术已经逐步变成通信及计算机安全的基础检测方法,计算机的软件安全集中体现在软件程序的编写、漏洞消除等方面。因此,对计算机软件中安全漏洞检测技术及其应用进行探讨是值得相关工作人员深入思考的事情。
  参考文献:
  [1]蒋廷耀,王训宇,关国翔等.基于EAI和AOP的软件安全测试及应用研究[J].计算机科学,2009(04).
  [2]李永华,窦春铁.谈计算机安全漏洞动态检测的原理方法与实践[J].数字技术与应用,2010(03).
  [3]宋超臣,黄俊强,王大萌等.计算机安全漏洞检测技术综述[J].信息网络安全,2012(01).
  [4]陈楷.计算机软件中安全漏洞检测技术的应用[J].数字技术与应用,2010(07).
  [5]薛磊磊.谈计算机安全漏洞动态检测的原理方法与实践[J].科技促进发展(应用版),2010(10).
  [6]齐燕.浅谈计算机软件中安全漏洞检测技术的应用[J].信息与电脑(理论版),2010(10).
  [7]李娟.基于故障注入的软件安全测试技术研究[J].中国科学技术大学,2009(05).
  [8]陈科,李之棠.网络入侵检测系统和防火墙集成的框架模型[J].计算机工程与科学,2010(02).
  [9]马海涛.计算机软件安全漏洞原理及防范方法[J].科协论坛(下半月),2009(06).
  作者单位:东莞市技师学院,广东东莞 523112
其他文献
该文分别从机械、硬件、软件等方面介绍了一种通过CMOS传感器采集图像,然后在Linux系统平台上运用图像处理算法分析免疫胶体金试纸显色反应的判读仪器。判读仪首先为每种测试
在人与人交流的时候,人际关系往往是很重要的,人际关系直接关乎一个人以后的发展和所取得的成就。在高校中,学生都来自四面八方,带着不同的风俗和文化,所以进行交友时就会出现很多