简要分析计算机软件中安全漏洞检测技术及其应用论文

时间:2022-07-03 19:09:33 计算机软件 我要投稿
  • 相关推荐

简要分析计算机软件中安全漏洞检测技术及其应用论文

  1 前言

简要分析计算机软件中安全漏洞检测技术及其应用论文

  随着科学技术的不断发展,计算机软件发挥着强大的作用,数量越来越多的计算机源代码也使得们更容易侵袭计算机软件系统,出现安全漏洞影响系统的稳定性。如今们入侵系统产生的安全漏洞的形式正趋向多样化,而计算机软件中的安全漏洞检测技术则显得尤为重要。

  2 计算机软件中存在的漏洞简述

  2. 1 计算机软件中存在的漏洞概述和类型

  就计算机软件而言,安全漏洞又称为计算机的脆弱性,是指能够对计算机系统的运行造成安全问题的一些弱点或缺点,也可以说是计算机系统中能够被利用来攻击计算机系统从而影响计算机正常运行的问题。计算机设计人员在研制和开发计算机软件时,如果在操作过程中产生技术失误也可以称之为计算机安全漏洞。很多计算机在安装主体时往往会安装防火墙和反防毒软件等避免计算机安全漏洞造成的损失和危害。一般而言,在良好的运行环境下,通过对防火墙与反防毒软件的应用,可以使安全漏洞得到有效防止。但是在实际生活中,反防毒软件和防火墙并不能完全避免安全漏洞的发生,真正有能力的在入侵计算机系统时会自动进行攻击,这样不仅会损失重要的系统信息,也会对计算机造成损害甚至无法开机。安全漏洞可以根据性质将其分为两类:安全性漏洞和功能性漏洞。安全性漏洞是指一般情况下不会对计算机软件的正常运行造成影响,但是漏洞一旦被利用发起攻击就会造成计算机软件运行发生错误,从而对计算机软件的正常运行造成严重的影响。功能性漏洞是指会对计算机的正常运行造成影响的计算机软件的漏洞,例如运行流程发生错误,运行结果发生错误。

  2. 2 计算机软件中存在的漏洞的主要特点

  2. 2. 1 由人为素质造成

  计算机软件的安全漏洞很多都是在研制和开发过程中因为设计人员的疏忽大意造成的。比如常见的编程的逻辑错误,计算机软件在编程过程中,逻辑错误是一个比较普遍的问题,开发人员的一个小失误很可能就会造成安全漏洞。

  2. 2. 2 比数值计算逻辑错误

  在处理计算机软件数据时,最常发生的就是比数值计算的逻辑错误,一般会发生在过小或者过大等不合理的模块,中等程度的模块会发生错误的概率是比较小的。

  2. 2. 3 长时间存在的安全漏洞

  计算机软件一旦出现安全漏洞,就会使得病毒和侵入计算机系统,严重影响计算机的安全,而在计算机软件系统当中,一个旧的安全漏洞被修复的同时,可能还会产生新的安全漏洞,总而言之,安全漏洞是长时间存在于计算机软件系统当中的。因此,对安全漏洞进行有效地监测和预防,及时对安全漏洞进行修复,能够有效地保证计算机信息系统的安全性和稳定性。

  2. 2. 4 与系统环境密切相关

  在计算机软件当中,安全漏洞的发生与系统环境密切相关,运行系统的不同也会对安全漏洞产生影响,此外软件设备和版本的差别也会使得出现的安全漏洞的类型有所区别。

  3 常用的安全漏洞检测技术

  3. 1 静态检测技术

  静态分析检测技术是最初的计算机软件安全漏洞静态监测技术,这种检测方法偏向于表面,近年来,随着计算机技术的创新与发展,静态监测逐渐演变为两种检测方法: 即静态分析和程序检验。静态监测指的是在检测计算机软件系统程序过程中进行源代码的扫描,先直接分析被检测的计算机软件系统的程序本身的特点,再全面分析源代码的语法和语义,这样就可以检测出计算机存在的安全漏洞。程序监测是指计算机软件系统内抽象化的程序源代码,检测其是否符合计算机所需要完成的工作要求,尤其是安全要求,然后判断并检验计算机软件系统是否存在安全漏洞。

  就计算机软件安全漏洞检测技术中的静态监测技术而言,计算机软件系统内部的特点会更受关注,安全漏洞本身特点的检测和静态方法的特点的监测之间密切相关。我们可以根据不同的方法划分漏洞的种类,根据最常用的方法,可以将漏洞划分为很多小的部分,而一般的检测方法也只能处理比较分散的漏洞。因此,从漏洞的种类下手寻找共同点是比较困难的。所以,在进行检测时,可以对比性地将漏洞分为内存性的漏洞和安全性的漏洞。内存性的漏洞比较关注类别和自身的数据是否更具有准确性; 而安全性的漏洞则更关注数据流是否存在错误以及误差的大小等方面,这种情况往往是由于内存的形态存在错误而形成的。因此,对于这种漏洞而言,在进行静态检测时,最有效的方法就是将模型建立在漏洞的储存空间内。此外,在解读和处理漏洞时也要根据静态检测技术的不同特点对其进行区分,因此,个别技术只能检测特定的漏洞,而要处理两方面的漏洞还要借助其他的方法。

  3. 1. 1 静态分析

  静态分析主要是直接、全面地计算机软件系统中的程序的源代码进行扫描,对程序代码中的语法和关键词、句进行提炼,根据解读的具体含义对程序的行为进行分析,之后再根据事先设置的漏洞的特点结合计算机软件系统自身的安全标准进行检测,对系统整体进行判断和处理。在进行检测的过程中,有以下几点需要特别注意: 第一,分析语法和关键词、句,这也是最早的静态分析的方法。但是,仅仅对语法和词句进行分析是通过检查语法和计算机软件系统中的程序分为语句片段来实现的,之后再将一个个语句片段比标准的“疑问数据库”,自动对存在的漏洞和问题进行判定和评估。这样的情况下检测出的有效漏洞的数量十分有限,而且只能检测出“疑问数据库”中已知的漏洞,而不能检测出未知的漏洞。第二,在进行检测时要严格遵循相关的标准条件。一般而言,安全标准是用来描述计算机软件系统中的程序运行的基本情况的,然而,程序本身也是一种标准化的编程,即我们研究的漏洞模式也是一般的安全标准。在进行检测时,要严格依照程序应用的规则进行,结合相应的语法模式描述这些所谓的标准,再利用规则处理器接收这些标准化的语法,处理器在进行转变后会自动接收到内部表述的程序,最后在系统运行的过程中进行最终的整体检测。

  相较于动态分析检测技术而言,静态分析检测技术在进行检测时,计算机处于停止运行的状态,操作更加方便和快捷,虽然能够对计算机软件系统的相关程序的状况最初最真实的反馈,但是不能确定这些程序本身以及运行过程中的重要属性。一般而言,静态分析检测技术可以分为以下几种: 词法检测、推断检测和评注计算机软件程序等三种。词法检测在执行时要先分析和识别计算机软件接口的预言,定义相应的语法,再生成并检测形成的语法例子,这个过程主要的工作是分析C 语言函数和程序中的源代码是否有危险性,也是我们所说的最基本也最原始的静态分析检测技术。推断检测是指自动对程序中存在的函数、变量等进行分析,再结合他们规范化的类型和方式进行分析来判断是否存在安全漏洞的方法。评注计算机软件程序是指利用“tainted”标记计算机软件的外部数据,技术人员再根据排查和分析的结果进行评注。

  3. 1. 2 程序检验

  程序检测是根据抽象化的计算机软件系统来建立一个具体形式的程序或者模型,再结合形式化和正确性的检验方式来检测计算机软件的安全漏洞问题。在进行程序检验时,主要是通过建立模型来进行检测,具体是指计算机软件程序在有限状态下建立一个合适的模型,建立的模型往往是抽象化的片段或者执行点,再和计算机软件本身的特点进行对比和验证。在检测时建立合适的模型也会起到检测的作用,建立的模型也会和软件的用途相关,因此,一个模型也可以运用到许多相似的软件当中来检测安全漏洞。一般而言,模型检验有两种检验方式,分别是模型自动转化法和符号化检验法。模型自动转化法是指将检测软件程序进一步转化成等价的自动检测机,两个自动机相互结合可以实现替换和补充的作用,从而达到新的自动机的效果,同时通过软件系统转变成能够识别的语言模式。符号化检验是指通过公式描述的形式将抽象化模型以语法树的形式表达出来,根据公式来判断是否符合检验的要求。模型检验应该先列举出可能会发生的各种状况,结合软件系统本身的复杂性对所有的程序都创建不同形式的模型,这也是一项规模庞大的任务。因此,在实际操作中,可能会选择一部分程序和相关属性来建立抽象的模型。但是,近年来,随着模型检测技术的改革和创新,现在主要是运用内存来建立模型的方式检验往常的时序漏洞,在结合定理和证明的形式来检测安全漏洞。与模型检验相比,这种方式更加严密,具体的检验过程是对程序进行多重判定,尤其是判定抽象化的公式的真假性,当然,公式本身的形式也会决定判断的方式。例如,不等式的合取作为一个关键因素就是一个典型的例子,先根据合取式制作图表,在图中要真实地反映每个提到的条件,再利用公式合并各个条件。同时,对其中的不等式进行检测,等式如果不成立的话,也就无法满足合取式。在程序检验过程中,可以通过实践来证明模式检验是否可靠以及是否具有实用性。软件系统的种类业余时序性密切相关,证明定理也是一项比较复杂的任务,因此,这种方法并没有广泛地应用于实际操作当中。

  对于计算机软件而言,静态检测技术只能检测出当前存在的安全漏洞的种类,而无法判断那些未知的漏洞。由于静态检测空间、精确度和时间等因素限制了其性能的改进,在一定程度上降低了静态检测的质量,因此,必须在后期加大资金投入。

  3. 2 动态分析检测技术

  3. 2. 1 非执行栈

  近几年来,计算机软件系统常常会发生被栈攻击的事件,主要是因为软件操作系统中的栈本身的读写能力不足、执行力不够的问题。栈之中包含了数组变量等内部变量,因此,个别不怀好意的人员能够在栈中随意篡改一些重要的代码,再利用特殊的方式执行代码。而只有将栈转变为不能够随意进行代码执行的模式才能有效地防止栈被攻击和侵略。这样,软件系统无法执行攻击软件的人员随意篡改写在栈上的代码,从而降低了计算机软件被侵入的机率,减少了安全漏洞的发生率。实现非执行栈的具体过程是通过修改计算机操作系统的内核,将栈的页标标记为不可执行,借助栈溢出将程序跳转想攻击的代码,因为执行代码是位于堆生而非正在执行的栈上,因此非执行栈并不具有完整性,存在一定的局限性,当栈中出现攻击代码时检测就无法发挥效用。

  3. 2. 2 安全性的共享库

  很多计算机软件会在无意中是用来一些不安全的共享库从而导致了安全漏洞,在一定程度上,安全的共享库可以避免攻击人员的侵入行为。安全共享库是指运用动态链接拦截非安全性的函数应用程序的实际运行,检测其操作的过程。与此同时,安全共享库也会评估内存的上限来防止内存中出现恶意破坏的数据,保证计算机软件系统的安全性,windows 的操作系统一般会运用这种方式。虽然安全共享库不会修改计算机的内核,兼容性较好,但是其局限性也是十分明显的,即安全共享库检测不到本地变量是否存在安全漏洞,当代码数据溢出受到攻击时也无法起到很好的防护作用,也无法保护标准化的函数库。

  3. 2. 3 沙箱

  沙箱是指限定一个程序的访问量来防止恶意的入侵。例如,对于计算机软件而言,如果C 语言中含有一类调动函数,但是软件在运行过程中又出现了相似但不同的调动函数,就说明有漏洞在攻击计算机软件。而使用沙箱就会限定被攻击前的软件,保证其不会受到恶意软件的影响。

  3. 2. 4 映射内存

  个别恶意攻击的人员可能常常利用以“NULL”结尾的字符串来覆盖内存,利用内存映射技术可以使得攻击人员难以实现把复杂的内存覆盖字符串转变为简单的内存操作。就这个角度而言,随机地将代码页映射到各类内存地址上也可以在一定程度上降低随意篡改页面的可能性。

  3. 2. 5 非执行堆和数据

  在检测非执行堆和数据时,需要大量修改计算机内核的数据,同时将数据段的代码和堆的动态声场全部进行修改才可以实现,在此过程中可能会出现不兼容的情况发生。一般而言,在进行非执行堆检测时往往需要借助非执行栈的配合使用

  4 计算机软件中安全漏洞检测技术的具体应用

  4. 1 检测并避免出现竞争性的安全漏洞

  很多安全漏洞往往是因为竞争条件的存在而产生的,解决的办法就是将竞争性的编码进行原子化实现操作。编码作为最小的执行单位不会受到正在运行的软件程序的恶意干扰,将编码进行原子化就是通过锁定编码的方式再改变特定状态下的程序间接性地调动各个软件系统,最后描述运行的文件或者句柄来检测TOCTOU 等问题来预防安全漏洞的发生。

  4. 2 检测并避免缓冲区出现安全漏洞

  检测并避免缓冲区出现安全漏洞就是通过判断和分析计算机软件程序中不安全的函数来避免缓冲区出现安全漏洞,例如不安全的strcat 版本可以全部替换为安全的strncat 版本。

  4. 3 检测并避免格式化字符串的安全漏洞出现

  格式化字符串的出现很容易造成安全漏洞的发生,唯一的解决措施就是从根本上进行预防,在数据代码中直接使用格式化的常量,防止恶意攻击人员可能会创建格式化字符串的机会。一般而言,格式化字符串往往会出现在参数不确定的个数函数当中。因此,在运用这种函数时,应该控制每个参数的个数、平衡参数的性能。此外,在进行输出数据时,运用Windows 操作系统下的窗口或者运用串口输入系统数据可以预防格式化的安全漏洞的危害。

  4. 4 检测并避免出现的随机安全漏洞

  在检查和预防随机出现的安全漏洞时,使用的随机发生设备一定要保证良好的性能,因此在选择随机发生设备时一定要慎重考虑。为了确保随机数流的安全性,随机发生设备需要自身设置密码算法,这样在软件遭到攻击时,就可以根据掌握的算法的整体细节来获得完整的数据流,提高随机数据在遭遇入侵时运行的稳定性和安全性。

  5 结语

  随着社会的进步和科学技术的发展,计算机软件在设计和开发时也无法避免地会出现安全漏洞的问题,因此,为了保证计算机软件的安全运行,安全漏洞检测技术是十分重要的。在不断的发展和创新中,计算机软件安全漏洞检测技术也需要与时俱进,通过改善静态检测和动态检测技术来预防安全漏洞的发生。

【简要分析计算机软件中安全漏洞检测技术及其应用论文】相关文章:

计算机软件安全漏洞检测技术的应用论文07-02

计算机软件安全漏洞检测技术分析论文07-03

安全漏洞检测技术在计算机软件中的合理应用论文07-04

解读计算机软件中安全漏洞检测技术论文07-03

浅谈计算机软件安全漏洞检测技术论文07-04

简要分析项目教学法在计算机软件教学中的应用论文07-04

计算机软件安全检测技术分析论文07-03

分层技术在计算机软件开发中的应用效果分析论文07-03

计算机软件漏洞检测常用的技术分析论文07-03