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

  摘要:随着科技的发展和社会的进步,计算机技术已经广泛的应用到人们日常工作和生活中的各个领域,计算机软件系统的安全问题是制约计算机技术应用的一个重要问题,计算机软件中安全漏洞检测技术的应用至关重要,本文简要介绍了计算机软件中的安全漏洞,阐述了其主要的检测技术,并讨论了计算机软件中安全漏洞检测技术的具体应用,旨在为保证计算机软件系统的安全性能,促进计算机行业的发展做出贡献。

  关键词:计算机软件;安全漏洞;检测技术;应用

  前言:

  计算机技术给人们的生活带来了巨大的改变,计算机软件的作用逐渐多样化,源代码数量逐渐增多,代码中的漏洞给一些黑客分子带来了可乘之机对计算机软件系统进行入侵和破坏。就目前来看,黑客们利用软件漏洞供给系统的方式逐渐向多样化发展,要想从源头上保证计算机软件系统的安全性能,计算机软件中安全漏洞的检测十分关键,由此可见计算机软件中安全漏洞检测技术及其应用的研究是十分必要的。

  一、计算机软件中的常见安全漏洞

  对于计算机软件来说,安全漏洞指的是其系统中所包含的缺点及弱点,这些弱点能够导致计算机软件系统在运行中出现一些安全问题,或者被黑客利用对计算机软件系统进行攻击,从而破坏了计算机的正常运行。在软件开发的过程中,设计开发人员的工作失误很可能倒置计算机软件的安全漏洞,这些漏洞一般有着自身的特点:①人为因素导致:计算机软件的安全漏洞大多是由于设计研发人员在研发过程中的大意导致的;②逻辑错误:计算机软件在数据处理的过程中经常会出现一些逻辑性问题,导致漏洞;③与系统环境相关:计算机软件系统在不同的软件设备或者版本下其出现的安全漏洞也是不尽相同的;④长期性:计算机软件中漏洞的出现是一个长期的、延续的过程,在旧的安全漏洞修复了之后,会有新的安全漏洞产生。

  根据漏洞的性质可以将其分成两类,一种是功能性的漏洞,即计算机软件中的漏洞能够影响到计算机的正常工作;另外一种是安全性漏洞,这种漏洞在正常情况下是不会影响计算机软件正常工作的,但一旦黑客利用漏洞发起攻击就会严重影响软件系统的运行,甚至会发出一些错误性的指令,十分危险。

  二、计算机软件中安全漏洞检测技术

  1.静态分析检测技术

  静态分析检测技术主要是通过对相关计算机软件程序的源代码以及二进制代码进行分析找出计算机软件的安全漏洞所在[1],静态分析检测技术能够在计算机运行停止的状态下进行检测,相较于动态分析检测技术其操作简便,且能够大概的反应相关程序的真实状况,但其不能对相关程序的重要属性进行确定,一般来说,静态分析检测技术有以下几种:①词法检测:其主要的执行步骤为软件接口预言的识别与分析→对语法进行定义→用例的生成和检测,词法检测主要针对的是软件程序中的源代码以及C语言函数等的危险性分析,这是一种最原始的静态分析检测技术;②评注软件程序:采用“tainted”对软件程序的外部数据进行标记,之后由相关技术人员进行分析排查;③推断检测:在自动分析程序中通常存在变量、函数等,通过对变量以及函数类型方式的规则化分析来推断安全漏洞是否存在;④建立模型进行检测:模型检测技术主要是对有限状态下的计算机软件程序进行构造或建立抽象的模型,通过模型中的片段及执行点来验证计算机软件的特性,这种检测技术有着监测的作用,相似用途的软件,建立的模型也相似,因此其能够应用到功能相似的计算机软件的安全漏洞检测中。

  2.动态分析检测技术

  动态分析检测技术不需要对相关软件程序的二进制代码和源代码进行改变,其主要通过自动化环境控制以及内存修改来防范漏洞,具体来说,动态分析检测技术主要有以下几个方面:①非执行栈检测技术:将计算机操作系的内核修改,标记栈页标为不可执行,通过栈溢出将程序向攻击代码跳转,执行代码置于堆生而不是执行栈上,这种检测技术并不十分完整,有着一定的局限性,例如恶意代码如果出现在栈中则检测失效;②非执行堆及数据的检测:在实施的过程中要对计算机内核进行大量的修改,要求改变数据段代码以及堆的动态生成才能够实现检测,因此会有不兼容状况出现,一般来说,非执行堆积数据检测技术与非执行栈检测技术联合使用;③映射内存检测技术:该技术能够对代码页的内存地址,在此情况下攻击方是很难找到内存目标的进程地址的,从而增大了攻击难度,映射内存检测技术对于新代码的攻击检测无效,同时会受到低端内存大小的限制;④安全共享库检测技术:安全共享库检测技术的主要原理是动态链接技术,能够拦截相关软件程序运行中不安全函数的使用,并且能够对内存的上限进行评估,阻止了恶意数据写入内存,安全共享库检测技术无需对计算机内核修改,有着较好的兼容性,但其检测有着较大的局限性,对于本地变量的安全、代码数据溢出的攻击以及标准函数库的保护起不到检测防护的作用;⑤检测程序解释:这种安全漏洞检测技术不需要改变程序代码以及计算机内核,对程序新启动代码重新链接实现各种危险函数参数和程序流程的检测。

  三、计算机软件中安全漏洞检测技术的应用

  ①检测竞争性条件安全漏洞:代码是程序执行中的最小单位,其不易受到干扰,因此可以利用代码原子化起到的锁定作用以及描述文件的本身或其句柄实现对TOCTOU等问题的监测;②检测缓冲区溢出安全漏洞:通过相应检测技术对相关软件程序中的危险函数进行分析和判断,有效预防了缓冲区漏洞的溢出,此外还可以采用安全版本如strncat等来代替传统的strcat版本[2];③检测格式化安全漏洞:在不留下构造格式串的前提下,用代码格式常量避免攻击风险,由于格式化符号串的安全漏洞函数的属于不定参数个数函数,因此我们应当确认函数中参数的个数是否均衡对应,此外还要借助Windows使用串口输入或输出相关数据,这样才能够有效防止格式化安全漏洞;④检测随机数安全漏洞:在随机数安全漏洞的检测中,随机数发生器的选择至关重要,符合程序要求的发生器本身具备相应的密码算法,其不仅可以在受到攻击时防止数据流的生成,同时能够提升随机数据流运行的安全性。

  结论:综上所述,计算机软件的设计和开发过程中出现安全漏洞是不可避免的问题,要想保证计算机在运行过程中性能的安全,计算机软件中安全漏洞检测技术至关重要,本文简要介绍了计算机常见的安全漏洞,并研究向计算机软件相关安全漏洞的检测技术及其具体的应用,计算机软件安全漏洞检测技术主要有静态检测和动态监测,不同检测技术有着不同的优缺点,在实际应用的过程中应当针对安全漏洞合理的选择并搭配计算机软件中安全漏洞的检测技术。

  参考文献:

  [1]王文勇.计算机软件漏洞检测系统的设计与实现[D].哈尔滨工业大学,2012.

  [2]汪刚.浅析计算机软件安全漏洞检测技术[J].电子制作,2014,24:55.

  张永宏

……
关注读览天下微信, 100万篇深度好文, 等你来看……
阅读完整内容请先登录:
帐户:
密码: