试论软件安全漏洞挖掘技术的发展方向

随着社会的发展,黑客的技术水平越来越高,而在软件方面,漏洞属于一个不可避免的问题,这会导致黑客有机可趁,使数据信息受到破坏。

在这种背景下,如何更快地发现软件安全漏洞,并做好修复工作,是保证数据信息安全的一个有效手段。

毕业论文网 /2/view—11984695.htm  1 软件安全漏洞挖掘技术概述   1.1 漏洞概念   在任何软件运行的过程中,都会根据安全策略进行一个安全域假定,也就是说这一域内所有的操作都是可控且安全的,但是如果违反了安全策略或者超出了这一安全域,软件运行则会变为未知且不可控的,而安全域在切换为非安全域的过程中,其触发点就是漏洞

通俗点说,漏洞就是指由于安全域设计不合理所形成的软件及系统破坏。

正是由于这种漏洞的存在,使得计算机在未授权的情况下会被攻击者访问或破坏。

一般来说,漏洞多数是被动的、静态的、可触发的。

1.2 漏洞挖掘技术   在通过漏洞攻击的过程中,主要可以分为三个步骤:漏洞挖掘漏洞分析以及漏洞利用,由此可见漏洞挖掘属于后两个步骤的基础及前提,对网络攻防有着非常重要的意义。

所谓漏洞挖掘,主要是找寻漏洞,详细点说就是该领域专业人士使用各种综合应用工具以及技术尽最大可能找出软件中存在的潜在漏洞,要想做好这一工作并不容易,这对于个人经验有很大的依赖性。

在实际的工作中,根据不同的分析对象,漏洞挖掘技术又可以分为基于源代码漏洞挖掘技术以及基于目标代码漏洞挖掘技术

2 当前漏洞挖掘技术分析   当前漏洞挖掘技术主要包括已知漏洞检测以及位置漏洞补救这两种,其中前者主要的作用在于发现系统中可能存在但是还没有被发现的漏洞,在这方面主要又包括静态分析动态检测、安全扫描以及手工分析这几种技术

其中,手工分析要求比较高,不仅需要安全分析人员对软件漏洞原理有充分的了解,还要对软件结构及功能有比较深入的认识,而且即使满足了这两点要求,其依然会耗费很多的精力和时间,基于此,以下将主要对静态分析以及动态检测进行分析

2.1 静态分析   这种漏洞检测技术不需要对程序进行运行,而且在没有输入的条件下就可以发现程序中存在的安全漏洞,因此在程序编写阶段,通过静态漏洞挖掘技术就可以发现其中存在的问题,并在开发早期就消灭掉漏洞

2.2 动态检测   所谓动态检测,主要是在程序动态运行的时候对软件中存在的漏洞进行检测,这不仅要求被测试目标编译为可执行程序,而且在检测的过程中还要提供相应的输入。

具体来说,动态检测技术主要是利用操作系统所提供的雕饰接口以及资源监视接口,来获得目标程序运行过程中所需的运行数据及运行状态。

在当前的动态检测技术中,比较常用的有数据流分析以及环境错误注入法。

2.3 动态检测以及静态分析的对比   客观来说,静态分析以及动态检测都是我们经常使用的检测方法,其中,静态分析由于在运行过程中的数据比较缺乏,因此难以实现动态测试细粒度的安全评估,无法对所有的安全漏洞都进行确定,所以存在很多不足之处,不过其优势在于比较容易在开发过程中集成。

3 软件安全漏洞挖掘流程分析   通过上文的分析我们可以看出,每种检测方法都是存在缺陷的,我们要想真正地做好漏洞挖掘工作,就必须要在漏洞挖掘的不同环节使用不同的检测方法,并根据具体的情况采取相应的策略及方法,这样才能将各种方法的优势发挥出来,并弥补其存在的不足。

一般来说,漏洞挖掘的流程可以分为几个环节。

首先,初始化,这主要是将软件类型分类,将开源和非开源软件所使用的静态分析方法确定下来。

其次,反汇编,这主要是载入需要分析的程序,然后通过反汇编操作,实现对二进制代码的反汇编,并确定代码中哪些属于可执行指令以及哪些属于数据。

第三,过程抽象,能够识别可执行指令之后,可以把其分为表示函数或者过程的组。

第四,特征模式扫描,对于开软软件,我们通过编译技术在编译期间或者代码扫描期间确定一些信息,根据这些信息检查漏洞模型。

至于非开源软件静态分析,则可以通过之下而上的分析方法对调用二进制文件的库函数等进行检查,得到漏洞验证代码。

第五,验证漏洞特性,这主要是比较漏洞特征库以及疑似漏洞验证代码,并对其中是否含有恶意行为进行判断,得到检测报告。

第六,注入错误环境,对需要注入的错误环境数据进行构造,并利用其干扰程序运行。

第七,动态检测,系统自动地对程序所有函数序列以及特定函数序列进行分析,并对可能存在的漏洞数目进行估算,得到检测报告。

第八,检测评估,根据所得报告信息,确认它们共同提出的疑似漏洞,并对其他疑似漏洞进行下一步分析

4 软件安全漏洞挖掘技术的发展方向   首先,测试平台的可扩展性以及通用性将越来越强,这是因为伴随着测试对象的增多,一个可扩展性及通用性比较强的平台对这一技术的发展有非常重要的提升效果。

具体来说,这种平台要具备以下几个方面的特点:首先,能够产生多种格式并最好是有效的畸形测试数据;具有可定制以及独立的数据产生变异功能;具有可操作跟踪调试功能;能够对多模块之间的自动化运行进行很好的协调。

其次,以fuzzing测试技术为例,由于在fuzzing测试过程中,很大一部分时间都用在输入数据格式、程序状态转换的人工分析上。

因此提高知识获取自动化程度对于提升测试效率非常有利,是未来的发展方向。

第三,多维测试用例生成技术

当前很多测试用例生成技术都是一维的,这容易使很多安全漏洞不能够被有效地检测出来。

而如果使用多为测试用例生成技术虽然会拓宽其测试范围,但也容易导致状态爆炸问题,因此,多维测试用例生成技术的研究是未来的一个重点。

同样,智能测试用例生成技术也是未来的一个重点。

第四,测试效果评估技术,当前的很多测试使用代码覆盖率对测试效果进行评估,这存在着很大的不合理性。

因此未来测试效果将从程序状态的覆盖率、测试数据的有效性以及输入边界测试的充分性等多个方面对测试效果进行评估。

总之,软件安全漏洞挖掘技术的研究是一个很宽泛的研究,本文限于篇幅,很多地方难以涉及并深入。

因此,在我们的日常工作中应加强这方面的探索和研究,只有不断提升我们的技术水平,才能真正为信息数据的安全起到保障作用。

参考文献   [1]文伟平.软件安全漏洞挖掘的研究思路及发展趋势[J]. 信息网络安全. 2009(10).   [2]迟强. 漏洞挖掘分析技术综述[J]. 计算机与信息技术. 2009(Z2).   [3]徐有福. 基于漏洞模型检测的安全漏洞挖掘方法研究[J].信息网络安全. 2011(08).   [4]夏建军,孙乐昌,刘京菊,张?F,蔡铭. 基于多维Fuzzing的缓冲区溢出漏洞挖掘技术研究[J]. 计算机应用研究.

0 次访问