APP下载

软件安全漏洞检测技术的思考

2018-04-15潘正辉

电子测试 2018年2期
关键词:沙箱安全漏洞计算机软件

潘正辉

(安谷科技股份有限公司,江苏无锡,214000)

0 引言

人们已经迎来了信息时代,计算机软件在人们的工作和生活当中所发挥的作用也愈发突出,各行各业对计算机软件的应用也越来越广泛。但与此同时,计算机软件中所隐含的各种各样的安全漏洞也逐渐被暴露了出来,越来越多的黑客开始对软件中的源代码漏洞展开攻击,这严重影响了人们的工作和生活。因此,对软件安全漏洞检测技术进行研究,有着非常重要的意义。

1 静态检测技术

1.1 静态分析

静态分析,指的是扫描系统程序中的各项源代码的过程,并在源代码当中将关键句以及关键语法找出来,对这些关键句和关键语法的含义进行解读,从而分析软件的程序行为,利用软件漏洞的特性来实现对其安全性的检测。在静态分析时,工作人员需要将系统程序分为若干个片段,并将这些片段和“疑问数据库”进行比较,如发现有漏洞或疑问存在,则需要对其进行评估和判定。通常情况下,系统程序能够保持在稳定的状态下运行,就可以视为软件安全达到了相应的标准。工作人员可以利用规则处理的方式,利用规则处理器将其转化为内部形式,这样就可以实现对软件程序的运行状况的全方位检测。

1.2 程序检验

程序检验指的是利用抽象的软件程序来对模型进行形式化,并利用特定的检验方法来对软件漏洞加以检测。它是将软件程序中的有向图建立成一个抽象的模型,从而对软件的特征加以检测。一般情况下,程序检验包括符号化检验以及模型检验这两种方式。其中,符号化检验是通过把抽象的模型转化成语法树的形式来进行检验,而模型检验是将程序转化为两个等价的自动机,再将这两个等价的自动机更换为两个新自动机,使系统被判定成语言可容纳形式。

1.3 定理证明

与前面提到的两种检测技术相比,定理证明检测方法要严格很多,定理证明法是通过多种不同的形式来对被检测的程序对应的抽象公式的真实性进行验证。定理证明检测技术的判别方法主要是借助于公式的不同形式。以不等式舍取为例,首先,先通过舍取式完成图的构造,舍取式中的各项条件都是和图中的各个节点相对应的;然后,凭借给出的各个等式来合并对应顶点,在合并定点时,检查舍取式里面的各个不等式,若不等式不成立的状况出现,就证明该舍取式不符合软件安全的要求[1]。

2 动态检测技术

2.1 非执行栈

在计算机软件的运行过程中,经常会出现栈攻击造成的安全事件。想要防止栈攻击安全事件的发生,可以采取一个非常直接的策略,就是不让栈继续处在工作状态。这样一来,就算黑客向栈里面输入了恶意的代码,也无法影响到计算机软件的正常运行,很多黑客对软件的攻击就会因此被拦截下来。但是,非执行栈技术在使用时必须要在操作层里面修改原先的设置,若修改不当很可能会对系统的性能产生影响。另外,若程序中的栈溢出漏洞和堆溢出漏洞同时存在,也容易导致计算机系统出现问题。在使用非执行栈技术时,操作系统的主要特征就是,其内核中的栈页会被标记成不可执行。

2.2 内存映射

很多黑客会凭借NULL结尾处的字符串将内存覆盖住,从而实现对计算机软件的攻击。对此,用户可以通过内存映射技术来将代码页随机的映射到地址上面,这样黑客在攻击软件时,就会遭到很大的阻碍,就算黑客进行长时间的计算,也很难查到正确的地址。与非执行栈技术类似,内存映射技术也需要对操作系统的内核进行修改,修改的目的就是让操作系统能够将代码页全都映射在低内存空间当中。例如,程序员可以先将二进制的地址确定在程序的链接阶段,这样用户在使用内存映射技术时,就不需要再修改原先的代码,只需对其进行重新链接操作即可,这会帮助用户更加方便地检测软件的安全漏洞。

2.3 沙箱

除了非执行栈技术和内存映射技术之外,沙箱技术也是一种应用非常广泛的动态检测技术。沙箱技术的检测原理是对访问加以限制,从而达到防止黑客攻击的目的。使用沙箱技术的关键在于定义策略是否足够全面。一个全面的定义策略,能够有效地确保程序不被外界所攻击。以软件的调动函数问题为例,在软件的运行过程中,并不会产生任何的调动函数,当用户发现软件中出现了调动函数时,就证明该软件已经受到了黑客的攻击,如果用户在软件遭到攻击之前,就利用沙箱技术对攻击行为加以限制,那么黑客的攻击就无法对软件的运行构成威胁[2]。

3 结语

目前计算机领域的技术人员在软件安全漏洞的检测方面已经取得了非常卓越的研究成果,无论是静态检测技术还是动态检测技术,都能够发挥非常重要的检测作用。然而,在计算机软件当中仍然存在当前技术水平难以检测出来的安全漏洞,因此,技术人员应继续努力,对软件安全漏洞检测技术展开更加深入的研究,这样才能使计算机软件能够在更加安全的状态下运行。

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

[2]管铭.基于程序分析的软件安全漏洞检测技术研究[D].西北工业大学,2007.

[3]潘正辉.基于云的手机通讯软件的设计与实现[J].电子世界 ,2016 (17):93-93.

[4]潘正辉.刍议基于用户体验的智能手机交互设计[J].通讯世界 ,2015 (11):114-115.

[5]潘正辉.基于安卓系统的近场无线通讯功能设计与实现[D].大连理工大学,2013.

猜你喜欢

沙箱安全漏洞计算机软件
Removing a stone
基于C语言的计算机软件编程
安全漏洞太大亚马逊、沃尔玛和Target紧急下架这种玩具
巧用沙箱检测文件安全
浅谈不同编程语言对计算机软件开发的影响
浅谈基于C语言的计算机软件程序设计
基于函数注入的沙箱拦截识别方法
基于多安全机制的 Linux 应用沙箱的设计与实现
安全漏洞Shellshock简介
基于计算机软件开发中分层技术的应用