基于模糊度量的软件漏洞检测技术研究

2010-08-07 08:20张晛譞范明钰
网络安全技术与应用 2010年4期
关键词:自动机安全漏洞漏洞

张晛譞 范明钰

电子科技大学计算机学院 四川 610054

0 引言

软件的漏洞检测主要分为动态检测和静态检测两大类。其中动态检测指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,一般多用黑盒测试的方法。而静态检测是指不运行被测程序本身,通过分析或检查源程序的语法、结构、过程、接口等来检查程序的正确性。本文主要研究一种对于软件源代码的新型自动静态检测技术模型,事实上,对于某些专业人员来说,通过可执行代码得到的汇编代码也可以看作有了软件的源代码。

1 软件安全漏洞的产生

根据软件安全漏洞的分类,漏洞产生主要有四大方面的原因:软件设计缺陷、软件代码编写缺陷、执行环境差异和补丁文件对整个系统的影响。实际上,各种原因在本质上都是因为软件流程上存在一些“危险路径”,使得软件可能会陷入于开发者设想中不符的流程。而造成这样“危险路径”的原因绝大多数是由于函数的调用引起的,其中包括危险函数的调用和不恰当的函数调用顺序等。

2 软件安全漏洞检测现状的不足

根据软件安全漏洞的产生原因,对漏洞的检测就是要找到这些可能存在安全隐患的软件执行流程“路径”。而大部分的漏洞检测方法基本上都是一种可以称之为“点检测”的检测方法,它们针对某一小段单一功能的具体代码或者某一个函数,采用特征码匹配和分析的方法进行安全漏洞的检测。这样的检测方法会产生大量的“漏报”和“误报”,因为软件流程具有一个整体性,对待数据流的某一部分可能对整个功能做出错误的估计。

3 基于模糊度量的软件安全漏洞检测技术

文献提出了针对缓冲区溢出和循环拷贝出错漏洞的有限状态自动机模型,本文在此基础上提出基于模糊度量的软件安全漏洞检测方法。其核心理论为模糊有限状态自动机。

3.1 模糊有限状态自动机

自动机可抽象地用一个五元组表示,即:A=(X,S,Y,∏,g),式中 X、S 和 Y 分别是输入集、状态集和输出集,∏和 g分别是状态转移函数和输出函数。在确定的自动机中,状态转移函数∏和输出函数g都是确定的,可以用严格的数学函数来描述。如果把状态转移函数∏和输出函数g模糊化,或者∏和g只能用模糊函数来描述,则自动机A即为模糊有限状态自动机。

模糊有限状态自动机与模糊文法相对应,可以作为软件源程序模糊识别的标准,只要建立合适状态转移函数和输出函数,就可以让整个检测模型具有模糊识别能力。模糊自动机在复杂系统的行为分析、模式识别、学习系统和控制等方面具有显著的优势,这些模糊自动机的特点对识别未知漏洞具有相当重要的作用。因为软件系统本身就是一个复杂的系统,分析软件系统的行为模式就是发现软件安全漏洞的主要方式。针对于未知漏洞,就需要分析技术具有识别和学习的能力。

3.2 软件安全漏洞自动检测技术

在综合模型检验技术以及上文所提及的软件系统行为分析、模式识别和自学习的功能,本文提出基于模糊度量的软件安全漏洞检测技术,如图1所示。

图1 基于模糊度量的软件安全漏洞检测技术

本漏洞检测技术主要分为输入、挖掘过程和输出三个主要模块。检测过程首先由输入模块开始,软件源代码和漏洞属性库作为前期输入进入挖掘过程,然后经过挖掘过程的内部处理后将一部分结果反馈给漏洞属性库,完成自学习过程,最后输出分析结果。其中核心模块为输入中的漏洞属性库、挖掘过程中执行路径模型生成器、漏洞属性关联生成器和模糊状态自动机模型检测器。接下来对各个核心模块做出具体说明。

漏洞属性库:这是一个存储软件安全漏洞属性的数据库。它将漏洞系统分解,将能够对安全隐患产生影响的单一属性存储于一个独立数据库中。整个系统前期需要创建一个已知安全漏洞属性数据库,数据库中存在某些已知安全漏洞的相关属性。例如缓冲区溢出安全漏洞的堆或栈空间分配长度和内容填充、循环错误安全漏洞的循环块存在位置、循环内部内存读写边界设定和内存读写内容填充,整数溢出漏洞的类型设定、值传递和类型转化,格式化字符串的函数检查和类型匹配,还有数据来源等关键安全属性。这个漏洞属性库可以手工添加记录,也可以通过系统的自学习机制反馈未知安全漏洞存在的属性。它的作用是支持漏洞属性关联生成器。

漏洞属性关联生成器:这个生成器主要作用是减少冗余工作量,增加系统效率。它将漏洞属性库中的属性根据逻辑关联情况生成漏洞状态关联图,用于检测器分析。排除掉一些无用组合,避免系统盲目搜索数据库,增加冗余工作量。尤其是在数据库比较庞大的,这个策略所带来的意义是非常重大的。

执行路径模型生成器:这是一个根据软件源码构建虚拟软件执行路径模型的生成器。它综合了静态分析覆盖范围大以及动态分析中软件流程分析的优点,将抽象的软件源码组建成为具有层次结构和清晰流程的模型。

模糊状态自动机模型检测器:这是本检测方法的核心部分。定义系统存在缺陷的程度为[0,1],1代表系统存在确定性漏洞,0代表系统安全,0到1之间表示系统存在不同程度的安全缺陷,数值越靠近1安全缺陷危险程度越高。

这个检测器利用模糊有限状态自动机的理论进行组建:输入集X为执行路径模型生成器的输出模型;状态集S为漏洞属性关联生成器的输出模型;输出集Y为{qs,qf,qv},qs表示系统状态安全,qv表示系统存在确定性安全漏洞,qf表示系统存在不同程度的安全缺陷。输出函数g分为两个部分:第一部分将输出集Y中所反应的安全缺陷危险程度和在软件执行流程模型中的路径显示给分析人员,第二部分将分析中出现的安全缺陷的各个安全属性反馈给漏洞属性库,添加未记录的漏洞属性;状态转移函数∏依托漏洞属性状态转移模型建立。

模糊有限状态自动机状态转移示意图如图2所示。

图2 模糊有限状态自动机状态转移示意图

q0为初始状态,根据状态转移函数,如果软件执行流程中未出现漏洞属性关联生成器中生成模型的属性,那么状态不发生变化,返回q0;如果出现漏洞相关属性,则根据漏洞属性进行状态转移并计算安全缺陷危险度。然后继续上述思路,如果期间出现某确定性软件漏洞,则直接输出qv状态,返回危险度最大值 1,并计算该漏洞的危急程度;若直至软件执行流程模型某条路径结束都未出现确定性安全漏洞,则根据综合计算的安全缺陷危险程度输出,若危险程度为 0,则输出qs状态,否则输出,qf和安全缺陷危险度。

3.3 仿真实验测试

本文在Windows XP SP2系统下实现了该检测方法的仿真程序,漏洞特征数据库添加基本数据和相关测试基本安全度(此安全度可以根据实际情况进行设置,此处仅设置为测试用基本安全度)。然后对多款第三方软件进行实验,并将实验结果与官方发布的漏洞进行比对。结果如表1。

表1 仿真实验结果

该实验结果表明与传统检测方法相比,基于模糊度量的软件漏洞检测技术可以更好的进行软件安全漏洞检测,尤其对未知软件安全漏洞进行检测,并且能给出漏洞的危急程度。

4 结语

本文所提出的基于模糊度量的软件安全漏洞自动检测技术结合了有限状态自动机和模型检测的思想,将通常的漏洞整体检测,分解为对漏洞中单一属性集合的检测,使漏洞检测化整为零,并具有自学习的机制。另一方面,引进模糊状态转移函数可更好检测软件安全漏洞的危急程度,指导相关人员根据危急程度进行修正。

但是该检测技术仍具有不少值得改进之处。其难点之一是漏洞属性库的设计。漏洞属性库和漏洞属性关联生成器这个设计其中很重要的一点就是提高系统检测效率,如果漏洞属性数据库能更完善表明各漏洞属性之间的依赖情况,就能有助于提高漏洞属性关联生成器工作时的效率。另一个难点就是模糊状态转移函数在设计上如果能结合漏洞属性关联生成器所生成的模型做出动态改变,将可以更好的检测软件系统的安全漏洞。因此,在今后的研究工作中,主要针对“漏洞属性依赖关系”和“软件执行流程的安全度量”进行进一步的研究。

[1] S.Weber,P.Karger and A.Paradkar.A Sofiware Flaw Taxonomy:Aiming Tools at Security[C].Software Engineering for Secure Systems-Building Trustworthy Applications(SESS)Proceedings.2005.

[2] V.Benjamin Livshits and Monica S.Lam.Tracking Pointers with Path and Context Sensitivity for Bug Detection in C Programs[C].ACM 2003.

[3] Cynthia Phillip s,Laura Painton Swiler.A graph based system for network vulnerability analysis[C].ACM 1999.

[4] Paul Ammann,Duminda Wijesekera,and Saket Kaushik.Analysis and verification Scalable,graph2based network vulnerability analysis[C].ACM 2002.

猜你喜欢
自动机安全漏洞漏洞
漏洞
基于大数据技术的软件安全漏洞自动挖掘方法研究
几类带空转移的n元伪加权自动机的关系*
{1,3,5}-{1,4,5}问题与邻居自动机
基于模糊测试技术的软件安全漏洞挖掘方法研究
一种基于模糊细胞自动机的新型疏散模型
一种基于模糊细胞自动机的新型疏散模型
安全漏洞太大亚马逊、沃尔玛和Target紧急下架这种玩具
广义标准自动机及其商自动机
安全漏洞检测技术在计算机软件中的应用