试论计算机软件安全漏洞检测技术
王爱菊+石彦华
摘要:当前,社会不断进步,计算机技术网络对人们的生活产生较大影响,在给人们带来巨大便利时,也存在一些安全隐患。计算机软件的安装和使用中都会存在一些漏洞,现在计算机安全设置不能彻底解决安全漏洞问题。为了应对计算机软件安全漏洞造成的影响,对其进行检测,寻找解决安全漏洞和攻击的措施。
关键词:计算机;软件;安全漏洞
中图分类号:TP393 文献标识码:A 文章编号:1009-3044(2016)12-0044-01
信息技术已经渗透到各个领域之中,人们对信息安全问题采取更加重视的态度。软件是计算机的核心部分,其中存在的安全漏洞会让计算机的信息面临网络攻击、信息窃取等安全问题。在这种情况下,使用检测技术尽快发现安全漏洞是解决问题的关键。
1 计算机软件安全漏洞目前的状况
其主要是指由于安装的软件不够完善,存在能够被他人盗用的程序代码,这种情况就会导致计算机在网络环境当中存在安全漏洞。安全漏洞出现之后,计算机在网络运行中就会潜藏安全隐患,比如计算机会被攻击、窥视、盗取资料等。在信息技术不断发展的情况下,网络的普及率将会更高,计算机安全漏洞的检查技术需要得到升级改造,将计算机面临的安全风险降到最低限度。
2 计算机软件安全漏洞检测技术解读
1)静态程序解析
这种技术来自于编译优化技术,对程序代码进行分析,实现特定程序性质的求解,属于多种分析技术的结合,其中居于基础地位的是控制流与数据流两种分析方法。前者提取代码之中的控制结构,将控制流图当做程序当中分支跳转关系的抽象,对程序全部的可能执行路径进行阐述。数据流分析涵盖的内容较为复杂,可先从流敏感、流不敏感、路径敏感、路径不敏感等方面进行判定,其中需要注意程序语句的次序。比如,一个流不敏感对应的指针分析存在“变量x与y共同指向一个位置”的可能,单个流敏感则会表现出“某个语句得到执行之后,x和y存在位置指向一致”的可能。路径敏感则与控制流有关系[1]。比如,某个分支条件为x>0,则其条件与不相符的分支下分析当中会设定x≤0,但是在符合条件时,则会设定为x>0成立。对上下文敏感进行分析,那么处理过程就会被调用,在对目标函数调用实施解读时,其就会参照调用的上下文信息让受到调用的函数能回归到合理的调用位置,一旦这种信息处于空白,回归过程中就要对全部的调用位置进行关注,导致潜在的精确度无法把握[2]。
2)利用逻辑公式对程序性质进行表达
这种方法出现的时间较长,后续的研究人员已在原有基础上不断进行创新发展。其中,要对软件程序的正确性进行验证,这种方式以语法推导切入点,对程序符合其功能规约要求进行推演。其中的功能规约属于一对谓词公式,主要内容有前置谓词与后置谓词,两者一起在内涵方式的支持下,各自将程序前后存在的各种可能状态纳入都一个集合中。程序启动是导致状态变迁唯一诱因[3]。所以这样的一对谓词公式可以很好地对程序功能进行解读并展示。程序的正确性主要有部分正确以及全部正确,可以利用能否确保程序终止对两者进行区分。如果程序由符合前置谓词要求的一个状态正式启动,能实现终止执行,那么终止的状态必定能与后置谓词相符。能对程序部分正确性进行判定的方法主要有不变式断言法、目标断言法、公理化等方法。其中的公理化方法的逻辑是完整的体系,其中的每个公式都是由单个程序语句和其前后置断言共同构成,具体理论当中只有一条赋值公理,形式演算系统以一阶谓词逻辑为基础,各自为顺序、分支以及循环指令增加了相应的演算法则。公理化方法已经被证明具有较强的可靠性和完整性,但匹配的形式演算系统存在半可判定的情况。程序的正确性涉及程序设计人员利用逻辑公式对程序对应的功能规约展开描述,另外一个问题就是要为循环体确定循环不变式。
3)测试库技术
这种技术主要是对软件当中的动态内存错误实施判定。此方面具有代表性的工具就是Purify,能对全部的内存操作函数实施审视,比如free、malloc等。Purify可以对运行中的全部内存块进行特殊标记,依靠这些标记就能在程序运行当中对内存操作是否存在失误进行判定。这项技术需要和对应的库进行连接。比如使用与Purify匹配的程序就要使用Purify库。这种行为不需要花费较大成本。但是Purify具有商业性质,使用存在局限性。利用测试库技术只能对动态内存操作函数导致的错误进行判定。而且其主要对运行过程中输入数据进行监控,发现其中的弱点。这种检测并不是从整体上进行判定。这也表明检测过程只是验证BUG是否被发现,但是无法证实BUG的存在。使用这项技术对于普通应用程序而言,并不会存在任何兼容问题。使用测试库技术的主要优势不存在误报。从性能上对这个技术展开分析,其性能消耗较大,从其工作原理很容易能推导出这个结论。
4)源码改编
程序运行当中存在缓冲区溢出弱点,这就需要对程序源代码进行改写,同时追踪内存缓冲区的长度,达到检测目的。这项技术在应用中不需要使用构造长度过长的数据,对信息进行改变、追踪,分析是否正在调用存在安全隐患的库函数,可能会造成缓冲区的溢出。这种方式在使用的过程中需要改写源代码。能都实现自动化代码改编软件STOBO出现之后,很多存在安全隐患的函数都会被自动修改。使用STOBO进行源代码自动改写,利用的是静态分析代码技术,程序员不会有多余的负担。在库包裹函数受到调用之后,其在缓冲区溢出漏洞的判定之中具有明显的效果。但是,如果程序代码对缓冲区直接干预,漏洞就存在漏报的可能。而且STOBO存在一定的局限性。源代码改变技术存在引发竞争的可能,尤其是在多线程的代码条件下。但是这类技术由于能收集精确的改编和追踪信息,误报率和ITS4等相比相对较低。这项技术表现出动态监测的优势,其能在程序运行时获得更加精准的信息。为此,将静态检测方式与动态检测方式结合在一起能获得较好的结果。
5)其他检测方法
如果计算机当中存在漏洞,需要使用第三方软件实施扫描,一旦发现漏洞就可以自动提示使用者进行修补。此外想要实现对计算机安全漏洞的高效检测,就要对来访的计算机IP实施检查,对于本地IP之外的IP的软件要具备较强的拦截能力,防范一些非法活动。计算机要能有效应对远程攻击,达到识别各种伪装攻击的目的,全满加强对可疑行为的监控水平。
3 总结
计算机技术软件使用范围的扩展速度十分之快,信息安全问题产生的影响十分之大。当前,计算机软件遭受的攻击主要来自于软件自身漏洞,另外也有黑客主动攻击。在进行检测时,要注意从根源上分析软件安全问题,切实解决安全问题。这方面的检测技术要坚持不懈地进行探索,不断提升应对安全风险的能力。
参考文献:
[1] 张枢,杨兆楠.网络信息系统中软件方面安全漏洞与防范[J].煤矿机械,2015,15(10):72-74.
[2] 刘仁千,张玉中,张超永.基于源代码的软件安全性测试研究[J].计算机安全,2014,24(8):32-35.
[3] 石琳.浅析安全检测技术在计算机软件中的应用[J].科学与财富,2015,35(2):128-128.