一种基于软件缺陷及网络攻击关系挖掘的攻击预警方法转让专利

申请号 : CN200810232685.7

文献号 : CN101442412B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 宋擒豹田若思赵龙

申请人 : 西安交通大学

摘要 :

本发明提供一种基于软件缺陷及网络攻击关系挖掘的攻击预警方法,包括:缺陷检测子系统,对基于规则的软件缺陷进行静态分析和检测;特征缺陷序列库子系统,利用缺陷植入技术进行挖掘并记录缺陷序列和网络攻击的关系;攻击预警判定子系统,将检测出的目标软件的缺陷漏洞和特征缺陷序列库中的记录相匹配,发出攻击预警报告。

权利要求 :

1.一种基于软件缺陷及网络攻击关系挖掘的攻击预警方法,其特征在于,包括:对基于规则的缺陷序列进行静态分析和检测的缺陷检测子系统;

利用缺陷植入技术对缺陷序列和网络攻击的关系进行挖掘并记录的特征缺陷序列库子系统;

将检测出的目标软件的缺陷序列和特征缺陷序列库中的记录相匹配,发出攻击预警报告的攻击预警判定子系统;

其攻击预警过程如下:

1)首先利用缺陷检测子系统扫描软件漏洞和缺陷,并且记录扫描结果,输出缺陷号和缺陷名称以及简单的描述,以供特征缺陷序列库子系统匹配;

2)特征缺陷序列库子系统抽取软件缺陷特征,采用了缺陷植入的方法,通过攻击模拟实验挖掘缺陷特征与攻击模式的关联关系,每条记录包含缺陷序列和对应的网络攻击两部分,构建出特征缺陷序列库,特征缺陷序列库支持多维匹配;

3)然后将扫描的缺陷文件送入攻击预警判定子系统,与特征缺陷序列库中的记录进行匹配;

4)如果扫描出的缺陷序列在攻击预警判定子系统中单维匹配成功,则通过攻击预警判定子系统输出软件的缺陷信息,及该缺陷对应的潜在攻击模式,否则说明单个缺陷出现不会引起攻击,继续进行多维匹配。

2.如权利要求1所述的基于软件缺陷及网络攻击关系挖掘的攻击预警方法,其特征在于:所说的基于规则的缺陷检测子系统和攻击预警判定子系统协同工作,两个子系统都是基于美国缺陷标准工业库Common Weakness Enumeration设计,并实现数据交互。

3.如权利要求1所述的基于软件缺陷及网络攻击关系挖掘的攻击预警方法,其特征在于:所说的攻击预警判定子系统,支持特征缺陷序列库多维匹配,即可以发现多个缺陷特征同时存在时对应的攻击模式。

说明书 :

一种基于软件缺陷及网络攻击关系挖掘的攻击预警方法

技术领域

[0001] 本发明属于软件漏洞检测及网络安全领域,具体设计一种基于软件缺陷及网络攻击关系挖掘的攻击预警方法。

背景技术

[0002] 随着软件产业的不断发展,软件缺陷和漏洞已经逐渐受到业界的关注,特别是伴随着互联网的普及和蓬勃发展,出现了大量黑客攻击和安全性问题,使网络应用程序和软件的安全质量受到了严峻的考验。目前,提供软件安全性保障主要采取了两种技术方法。一种是基于代码的软件缺陷和漏洞检测方法,一种是基于攻击模式的入侵检测方法。
[0003] 基于代码的软件缺陷和漏洞检测方法,已广泛运用在软件开发过程中,自动化检测工具的应用更是大大提高了检测软件缺陷和漏洞的效率,Jeffery S.Foster提出一种基于类型限定符分析(Type Qualifier Analysis)的静态缺陷检测方法(Jeffrey S.Foster,Type Qualifiers:Lightweight Specifications to Improve Software Quality,Ph.D.thesis,University of California,Berkeley,December2002),这种半自动静态扫描软件漏洞的方法,需要软件开发人员为源程序添加类型限制符,通过静态扫描分析检测软件漏洞,此方法对特定的软件漏洞检测效果比较好,但是可检测的漏洞类型比较少,并且误报率比较高;Gary McGraw等人提出了基于缺陷函数库匹配的静态代码扫描分析方法(John Viega,J.T.Bloch,Tadayoshi Kohno,Gary McGraw.ITS4:A StaticVulnerability Scanner for C and C++Code.http://www.rstcorp.com),实现了全自动的软件缺陷扫描,但受到缺陷函数库规模的限制,这种方法可以检测的漏洞类型比较有限,不能胜任复杂的网络应用程序安全检测;Moohun Lee等人提出了一种基于规则的软件缺陷检测方法(Moohun Lee,Sunghoon Cho,Changbok Jang,Heeyong Park,Eui in Choi,A Rule-based Security Auditing Tool for Software Vulnerability Detection,2006International Conference on Hybrid Information Technology.),引入了软件缺陷规则的概念,这种基于缺陷规则库静态检测技术具有良好的扩展性,通过更新缺陷规则库,可以检测出新近出现的软件缺陷,有比较好的应用前景。
[0004] 入侵检测方法主要应用在网络应用程序的安全性检测方面,Koral Ilgun等提出了一种基于规则的入侵检测方法(Koral Ilgun,Richard A.Kemmerer,Fellow,IEEE,and Phillip A.Porras,State Transition Analysis:A Rule-Based Intrusion Detection Approach,IEEE TRANSACTIONS ON SOFTWARE ENGINEERING,VOL.21,NO.3,MARCH 1995),此方法建立了基于状态图模型,通过软件状态跃迁变化发现入侵攻击,对特定攻击的捕获具有良好的效果,并且基于规则发现攻击模式,系统具备一定扩展性,但仅关注了软件状态变化,没有涉及软件自身缺陷和攻击模式关系;Michael Gegick等提出了一种通过检测入侵攻击查找缺陷的方法(Matching Attack Patterns to Security Vulnerabilities in Software-Intensive System Designs,Michael Gegick,Laurie Williams,Michael Gegick,Laurie Williams,ICSE-SESS’05,May 15-16,2005,St.Louis,Missouri,USA.),但未提出软件缺陷和攻击模式库(AttackPattern Base)的概念,并且没有建立两者之间对应关系,仅仅提出了一种辅助查找缺陷的方法。
[0005] 目前,以上的两大类方法都在保障软件安全方面发挥着重要的作用,然而基于代码的软件缺陷和漏洞检测方法,主要检测软件源程序,并不关心环境变量的影响,分析的结果不能全面应对真实的网络攻击;而基于攻击模式的入侵检测方法只能检测出入侵攻击的类型,却不能为软件开发者提供建设性的软件缺陷修补意见,很难从实质上改善软件安全质量。

发明内容

[0006] 本发明的目的在于克服上述现有技术的缺点,提供了一种集成了软件缺陷检测子系统和攻击预警判定子系统,在静态检测软件缺陷的同时,匹配特征缺陷序列知识库中的攻击模式,发出攻击预警信号提前对软件进行风险评估,全面保障了软件的安全质量,适用于软件开发周期各个阶段的基于软件缺陷及网络攻击关系挖掘的攻击预警方法。
[0007] 为了便于说明问题,本发明先引进有关概念。
[0008] 定义1:软件缺陷规则文件(vulnerability role file)是指缺陷类型抽取出的特征规则形成的规则库文件,目标代码文件(target code file)是指源程序经过语义分析后形成的中间代码。
[0009] 定义2:序列长度为L的缺陷序列是指由L个不同种类缺陷漏洞组成的一个无序序列。
[0010] 定义3:特征缺陷序列库是指挖掘出的易受网络攻击的缺陷序列的记录,每条记录包含缺陷序列和对应的网络攻击两部分。
[0011] 为达到上述目的,本发明采用的技术方案是:包括:
[0012] 对基于规则的缺陷序列进行静态分析和检测的缺陷检测子系统;
[0013] 利用缺陷植入技术对缺陷序列和网络攻击的关系进行挖掘并记录的特征缺陷序列库子系统;
[0014] 将检测出的目标软件的缺陷序列和特征缺陷序列库中的记录相匹配,发出攻击预警报告的攻击预警判定子系统;
[0015] 其攻击预警过程如下:
[0016] 1)首先利用缺陷检测子系统扫描软件漏洞和缺陷,并且记录扫描结果,输出缺陷号和缺陷名称以及简单的描述,以供特征缺陷序列库子系统匹配;
[0017] 2)特征缺陷序列库子系统抽取软件缺陷特征,采用了缺陷植入的方法,通过攻击模拟实验挖掘缺陷特征与攻击模式的关联关系,每条记录包含缺陷序列和对应的网络攻击两部分,构建出特征缺陷序列库,特征缺陷序列库支持多维匹配;
[0018] 3)然后将扫描的缺陷文件送入攻击预警判定子系统,与特征缺陷序列库中的记录进行匹配;
[0019] 4)如果扫描出的缺陷序列在攻击预警判定子系统中单维匹配成功,则通过攻击预警判定子系统输出软件的缺陷信息,及该缺陷对应的潜在攻击模式,否则说明单个缺陷出现不会引起攻击,继续进行多维匹配。
[0020] 所说的基于规则的缺陷检测子系统和攻击预警判定子系统协同工作,两个子系统都是基于美国缺陷标准工业库Common Weakness Enumeration设计,并实现数据交互。
[0021] 所说的攻击预警判定子系统,支持特征缺陷序列库多维匹配,即可以发现多个缺陷特征同时存在时对应的攻击模式。
[0022] 本发明是采用缺陷植入方法,通过模拟攻击实验,对软件缺陷及网络攻击之间的关系进行挖掘建立特征缺陷序列库,然后通过分析扫描目标软件源代码中的缺陷序列,与挖掘得到的特征缺陷序列库记录进行匹配,进而发出攻击预警。

附图说明

[0023] 图1是本发明的较佳实施例结构图;
[0024] 图2是利用缺陷植入技术建立特征缺陷序列库流程图;
[0025] 图3是检测目标软件缺陷漏洞流程图;
[0026] 图4是攻击预警流程图。
[0027] 下面结合附图和实例对本发明做进一步说明。

具体实施方式

[0028] 参见图1,依照本发明的技术方案,该系统至少包括:缺陷检测子系统;特征缺陷序列库子系统,采用缺陷植入方法,通过模拟攻击实验挖掘缺陷类型相关联的攻击模式;攻击预警判定子系统,将扫描出的缺陷类型与特征缺陷序列库中记录匹配,输出匹配成功的缺陷类型和潜在攻击模式。其中,特征缺陷序列库子系统与攻击预警判断子系统相连,缺陷检测子系统与攻击预警判断子系统相连。
[0029] 参照图2,首先进行步骤101,目前已知软件缺陷漏洞个数为M,所有漏洞构成初始集合,常用网络攻击方法个数为N,并初始化缺陷序列长度初始值为L=I,初始化特征缺陷序列库为空,然后进行步骤102,判断序列长度是否大于缺陷漏洞集合中的元素个数即L>LM,如果是,则建立过程结束,否则进行步骤103,缺陷序列个数为T=CM,缺陷序列记为St,t=1,2,…,T,然后进行步骤104及步骤105,令t=1,i=1;步骤106,将缺陷序列St植入软件并利用第i个网络攻击方法Attacki对软件进行攻击;步骤107判定攻击是否成功,如果成功,则进行步骤109,将缺陷序列St及对应的网络攻击Attacki记录写入特征缺陷序列库,如果攻击不成功,那么利用下一个网络攻击方法,即步骤108,对该序列进行攻击,直到攻击方法均进行完为止(步骤110即i>N),然后对下个一缺陷序列进行相同操作(步骤111),直到长度为L的所有序列均受攻击完毕(步骤112即t>T),最后,进行步骤113,在缺陷漏洞集合中删除特征缺陷序列库中新增的缺陷元素个数共m个,更新M=M-m,L=L+1,继续进行步骤102,直到建立过程结束。
[0030] 参照图3,首先进行步骤210,缺陷系统加载软件源程序,开始进行缺陷扫描与分析。然后进行步骤220,将软件源程序送入语义分析系统,遍历语法分析器生成的抽象语法树(Abstract Syntax Tree,AST),分析解释语法结构树的结点,将其标识为易于数据流分析的中间代码。然后进行步骤230,通过数据流分析描述出程序的数据流图,根据缺陷生成器产生的规则范式发现异常数据依赖关系,并且标记出这些异常,再然后进行步骤240,通过控制流分析已被标记过的数据依赖关系图,准确地跟踪程序块运行的先后顺序,缺陷根据规则库的规则限制来发现不适当的代码结构,形成目标代码文件(target file),然后进行步骤250,缺陷系统加载软件漏洞规则库,漏洞规则库主要包括缺陷特征抽取和规则生成器两部分,软件开发者加载使用预定义的规则库文件(vulnerability role file),也可以添加新的缺陷特征,通过规则生成器(role generator)形成新的规则达到更新规则库的目的,具有很好的扩展性和适用性。最后进行步骤260,比较目标代码文件和规则库文件的内容,如果目标代码文件与规则库中缺陷内容一致,则说明源程序存在这种类型的缺陷,逐一进行以上文件匹配,直到查出全部的缺陷。
[0031] 参照图4,攻击预警判定首先进行步骤301,步骤210-260过程检测到目标软件的缺陷漏洞个数为K,初始化缺陷序列长度初始值为L=1,然后进行步骤302,判定序列长度L是否大于漏洞个数K,如果是,则判定过程结束,如果否,则进行步骤303,缺陷序列个数为LG=GK,缺陷序列记为Sg,g=1,2,…,G;步骤304令g=1,步骤305将Sg与特征序列库中缺陷长度为L的所有特征序列进行比对,如果比对成功,则进行步骤307,将与Sg比对成功的特征缺陷序列写入输出缓冲并进行下个序列的比对过程(步骤308),如果比对不成功,则直接跳入下个序列的比对过程(步骤308),直到所有长度为L的序列均比对完成,此时将新增输出缓冲区中的缺陷从目标软件漏洞集中删除,并更新K=K-n,L=L+1,重新转入步骤302,直至所有攻击预警判断结束。
[0032] 本发明抽取软件缺陷特征,挖掘缺陷特征与攻击模式的关联关系,建立特征缺陷序列库子系统,通过缺陷检测子系统检测出软件漏洞和缺陷,然后将扫描出的缺陷类型与特征缺陷序列库中记录匹配,发出攻击预警信号。本发明综合了软件缺陷检测和入侵攻击检测的优点,既检测出软件源程序中的缺陷,同时采用错误注入的方法挖掘缺陷和攻击模式间的关系,达到了入侵检测的检查效果,同时基于规则的特征缺陷序列库也具备良好的扩展性,表现出了现实应用价值。本发明首先通过基于规则的静态软件缺陷检测系统扫描软件的安全漏洞,然后将扫描出的缺陷类型送入攻击预警判定子系统,与特征缺陷序列库的记录进行匹配,最后将匹配成功的潜在攻击方式发出预警信号,对软件系统进行风险评价。