计算机安全漏洞检测技术研究
2017-12-31陈鹏
【摘要】 现阶段,信息技术正呈现着迅猛的发展趋势,软件所提供的功能也日益丰富,源代码数量也越来越多。在这样的情形之下,源代码当中的漏洞消除工作愈发困难,不少不法分子利用源代码中的漏洞来破坏或入侵系统。目前信息安全逐渐受到人们的重视,根据相关资料得知,近些年来漏洞数量大幅度增加,已经造成了较大的财产损失。本文围绕漏洞的概念以及相关特征、计算机安全漏洞研究技术分类两个方面展开讨论,对静态检测技术、动态检测技术以及混合检测技术进行了逐一介绍,并针对这三种计算机安全安全漏洞检测技术的优劣之处进行了对比与分析,与此同时提出了一些笔者自己的见解,希望能够对今后的计算机安全漏洞检测工作提供一些理论建议。
【关键词】 计算机 安全漏洞 检测技术
现如今,信息技术取得了迅猛发展,软件所提供的功能也日益丰富,源代码数量也越来越多。在这样的情形之下,源代码当中的漏洞消除工作愈发困难,不少不法分子利用源代码中的漏洞来破坏或入侵系统。目前信息安全逐渐受到人们的重视,根据相关资料得知,近些年来漏洞数量大幅度增加,已经造成了较大的财产损失。黑客们的攻击手段不断更新,提升漏洞挖掘技术水平刻不容缓。
一、漏洞的概念以及相关特征
(一)漏洞的基本概念
漏洞主要是指一个系统中存在的缺陷或是弱点,这些缺陷使得系统缺乏对某种危险的抵抗力,可能导致系统被攻击威胁。由于开发人员人为的过错导致软件在设计和实现过程中出现纰漏,从而产生了软件漏洞。一般可以将漏洞分成两种类型,分别是功能性逻辑漏洞与安全性逻辑漏洞。前者会对软件的正常运行造成影响,比方说执行流程不正确或者执行结果不正确等。后者不会破坏软件的运行功能,不过如果黑客找到这一漏洞并加以利用的话,很可能会使得软件出现运行错误的情况,甚至被黑客植入恶意代码,这类漏洞通常是指SQL注入漏洞以及缓冲区溢出漏洞等。
(二)漏洞的基本特征
漏洞主要具备下列几种特征:
1、开发人员在编程里经常会出现一些逻辑错误,这类错误通常是由开发人员的大意造成的;
2、数据处理过程中出现逻辑错误,数据处理相对数值计算而言对逻辑的要求更高,涉及到许多大小不同的程序模块,因此操作起来容易出现错误;
3、漏洞与所处的系统环境有着较大的关联。对于不同种类的软件设备以及硬件设备而言,有很多种情况都会导致安全漏洞的出现,例如设备相同但是版本不一样,不同设备所组成的各类系统,以及相同系统的设置条件不相同,均有可能出现安全漏洞;
4、漏洞与时间有着较大的关联。在运行的过程中,开发人员通过检查会发现漏洞并进行修补,但是也可能会有新的漏洞出现,所以漏洞是一直存在的。
二、计算机安全漏洞研究技术分类
我们可以根据研究对象的不同,将漏洞挖掘技术分成三个类型,分别为依托源代码的漏洞挖掘技术、依托目标代码的漏洞挖掘技术以及混合式漏洞挖掘技术。其中,依托源代码的漏洞挖掘技术我们常常将它称作静态检测技术,主要是借助分析源代码这一方式来识别出软件中隐藏的各种漏洞。而依托目标代码的漏洞挖掘技术我们也常常将其称之为动态监测技术,首先我们必须针对分析对象程序实施反汇编处理,从而获得汇编代码;随后再针对得到的汇编代码实施分析,从而来验证漏洞有无存在。混合漏洞挖掘技术主要是将动态检测技术与静态检测技术结合在一起,将两者的优势进行充分发挥,从而更好地识别系统漏洞。下面,笔者就针对这三种计算机安全漏洞检测技术进行一一介绍。
(一)静态检测技术
静态检测技术实际上能够借助手工方式或者是源代码分析工具来辅助实现,它主要是针对各种跳转条件、源代码结构等数据实施分析,在此基础上挖掘目标代码中隐藏的不安全漏洞。例如,我们可以对源代码当中的PRINTF等函数实施监测,确认有无针对它的使用条件进行了规定,有无针对边界条件实施检查等。现代软件源代码数量非常巨大,我们仅仅通过人工操作很难实现对它的全面审计。静态分析技术的特点包括以下几个方面:“首先,借助工具对源代码实施扫描,具有极高的检测效率,分析速度极快;第二,这一技术能够对不同的测试条件进行设置,从而达到代码全方位扫描这一目的;第三,静态检测技术能够在项目开发阶段中来实施挖掘处理步骤,从而对系统中可能存在的不安全漏洞进行修复。然而这一检测方法的基础为确保源代码的获取,此外还应针对目标代码进行分析以及编译处理。另一方面,静态检测技术是依托一定的规律来实施分析的,所以说必须针对源代码构建一个规则库以及特征库。在漏洞数量的不断增加下,特征库也正在逐渐地扩大,从而使检测效率随之降低。由于静态检测技术是按照特征库中的内容来实现分析判断的,所以说往往会出现一些漏洞。
在文献五当中,作者将静态检测技术分成了三个类型,分别为词法分析、规则检查以及类型推导。其中,词法分析技术最初是从BMAT技术中延伸而来的,这一方法通常只能针对语法实施确认,判断愈发当中有无漏洞隐藏,若判断结果显示存在漏洞,那么久需要根据知识库来作出下一步的判断。规则检查是依靠检查程序编制规则来确认程序中有无隐藏漏洞,例如C语言当中有无针对变量实施初始化处理等。检查规则主要是针对所有规则通过特定的语法进行描述,随后再把这些程序行为放在一起进行对比。类型推导是对程序当中存在的变量进行推导,以此为基础来判断变量以及函数的访问与规则是否匹配。
(二)动态检测技术
在对漏洞进行检测的实际过程中,除了开源软件之外,其它软件都难以取得系统当中的源代码,这一现象极大地阻碍了静态检测技术的有效发展与应用,动态检测技术的推出有效地解决了这一问题。它是通过建设非标准输入数据来对运行软件系统进行調试,并依据系统的实际功能以及数据的转移方向来对运行结果实施检查,从而判断被测软件系统中有无存在漏洞。动态检测技术在一般情况下都是将输入接口以及运行环境来作为出发点,对系统中隐藏的漏洞进行检测与排查。虽说动态检测方式相比于静态检测方式来说具有很多优势,如准确率高、然而这一检测技术的效率却相对较低,这是由于各种软件系统本身的功能以及流程都具有一定的差异,因此无法像静态检测技术一般来实施统一化扫描,而是应该面向软件系统中包含的功能来实施动态化扫描,因此就必然会导致一些效率的损伤。此外,动态监测方式只能对漏洞存在的范围来进行判断,在后续还需实施持续的跟踪以及处理,必须依据丰富的经验才可能完全确定漏洞的种类以及性质,所以这一检测方式基本无法在大规模软件中进行应用。
在文献八当中提出了一种将动态技术以及静态技术联合起来形成的二进制漏洞挖掘检测方式,这一检测方式主要是通过对二进制文件实施反编译,从而获得伪源代码,随后在此基础上设计一种虚拟執行环境,并通过这一虚拟的执行环境来对指令的执行情况进行实时跟踪,持续监测寄存器的变化状态,从而解决指针别名方面存在的问题。通过对虚拟执行环境当中每一个访存地址的记录来统计出这些地址的变量情况,从而解决变量识别精确性这一问题。
(三)混合检测技术
静态检测技术必须依托目标程序中的源代码才能实现,此外还存在检测工作量大、错误率高等不足,然而动态检测技术虽然在这些问题上有所改善,却也存在着一些缺陷,例如覆盖率不高、检测效率低下等。基于上述现象,这几年,混合检测技术在计算机安全漏洞检测领域中迅速崛起,这一检测技术将静态检测技术以及动态监测技术的优势提取出来并进行结合,它既解决了静态检测技术当中不足之处,同时也避免了动态检测技术的缺点,使检测效率以及准确率同时得到了提升。混合检测技术与动态检测技术的表现形式基本相同,只不过在混合检测技术当中,测试者会依据程序的先验知识,在测试过程中对测试对象实施具有针对性的设计。这一测试方法能够迅速准确地提取出数据流中感兴趣的情况来实施测试,因此检测效率超出动态检测技术。
现阶段,混合检测技术主要还是依靠自动化漏洞挖掘器来实现的,也就是我们常用的FUZZING检测技术。漏洞挖掘器首先会针对目标软件所处的运行环境、具备的功能以及接口等内容实施分析,以此为基础来建立畸形数据,并形成测试用例。随后借助接口来对测试用例进行传递。最后,利用监控工具对运行程序实施监控,若程序在运行过程中发生异常现象,那么则需要对异常现象进行记录同时对异常信息实施进一步分析。不同的漏洞挖掘器的构架以及挖掘方式会随着挖掘对象的不同而发生改变。现阶段,最常见的挖掘器包括文件漏洞挖掘器、FTP漏洞挖掘器、网页漏洞挖掘器等。
结束语
在本文中,笔者针对静态检测技术、动态检测技术以及混合检测技术三种漏洞检测技术进行了一一介绍,同时还分析了这三种技术所具备的优势和劣势。由于每一种漏洞检测技术所面向的研究对象是不同的,因此他们的优点与缺点也存在一些差异。静态检测技术具有分析效率高、覆盖面广等优势,却存在错误率高的缺陷;动态监测技术虽然具有较高的检测准确率,然而它的检测却不能覆盖整个程序,且检测效率较低;混合检测技术则巧妙地避免了动态监测技术以及静态检测技术的缺陷,并在此基础上实施了一定的改善,但是由于受到现阶段检测技术的局限性,在混合检测技术使用过程中仍然需要完善一些地方:首先,后门以及访问控制缺陷的检测难度较大,由于后门以及访问控制等缺陷通常不会导致系统陷入异常,并且在逻辑上难以进行辨别,因此通过常规的漏洞检测技术基本无法识别出后门以及逻辑上存在的缺陷;其次,检测过程很难完全实现自动化检测,现阶段,FUZZING技术在应用过程中必须基于丰富的经验来对测试用例进行创建以及设计,此外即使能够通过自动化检测方式来获得结果,在后续仍然需要根据经验来对这些检测结果展开进一步分析,从而来确认有无漏洞存在以及在今后如何进行改善。
参考文献
[1] 王勇,王婷婷. 基于故障注入的信息系统安全漏洞检测技术研究[A]. 中国计算机学会计算机安全专业委员会.全国计算机安全学术交流会论文集(第二十三卷)[C].中国计算机学会计算机安全专业委员会:,2008:5.
[2] 潘古兵,周彦晖,革逊. 等级保护安全建设技术改进的Web数据验证漏洞检测方法[A]. 公安部第三研究所.第二届全国信息安全等级保护技术大会会议论文集[C].公安部第三研究所:,2013:4.
[3] 李晓南. 基于数据综合分析的软件安全漏洞静态检测平台设计与实现[D].电子科技大学,2011.
[4] 杨光,印桂生,文齐. 一种基于漏洞检测技术的网络安全评估系统[A]. 2006北京地区高校研究生学术交流会——通信与信息技术组委会、中国电子学会信息论分会、北京邮电大学研究生院.2006北京地区高校研究生学术交流会——通信与信息技术会议论文集(下)[C].2006北京地区高校研究生学术交流会——通信与信息技术组委会、中国电子学会信息论分会、北京邮电大学研究生院:,2006:5.
[5] 张云峰,于顺安. 企业安全管理的心理漏洞及解决方法——计算机和网络技术在企业安全管理中的关键作用[J]. 中国信息界,2011,07:75-77.
[6] 2010年全国信息网络安全状况与计算机及移动终端病毒疫情调查分析报告[J]. 信息网络安全,2011,11:94-96.
[7] 高翔. 网络安全检测关键技术研究[D].西北工业大学,2004.
[8] 金顶云,朱建彬,王金永. 计算机软件安全检测技术探析[J]. 电子技术与软件工程,2016,14:204.