一种软件漏洞特征操作序列的提取方法

文档序号:6585044阅读:197来源:国知局

专利名称::一种软件漏洞特征操作序列的提取方法
技术领域
:本发明涉及一种软件漏洞特征操作序列的提取方法,特别涉及一种基于闭合序列模式挖掘的软件漏洞特征操作序列的提取方法,属于信息安全
技术领域

背景技术
:随着黑客攻击事件数量的不断上升,蠕虫在Internet上的泛滥,信息安全逐渐成为人们眼中的焦点。信息安全中的一个核心问题就是存在于计算机系统中的软件安全漏洞,恶意的攻击者可以利用这些安全漏洞提升权限,访问未授权资源,甚至破坏敏感数据。计算机软件的普遍应用带给人们越来越多的便捷,并日益影响人们的日常生活,但计算机软件中存在大量的错误及漏洞,隐藏着巨大的风险。阻止系统攻击和入侵的根本解决途径是在软件缺陷被利用之前发现并进行分析和研究。任何系统或软件的运行都会假定一个安全域,这个安全域是由安全策略规定的,在该域内的任何操作都是安全的、可控的,一旦超出该域或者违反了安全策略,系统或软件的运行就是不可控的、未知的。漏洞是由安全域切换到非安全域的触发点。漏洞是静态的、被动的、可触发的。一般而言,一条漏洞信息包括漏洞名称、漏洞级别、漏洞成因、漏洞影响、漏洞描述、受影响的系统、未受影响的系统、漏洞解决方案、漏洞利用类型和漏洞利用方法等,此外还要考虑漏洞来源、漏洞发布日期、漏洞参考信息等。现有的用于软件漏洞特征操作序列的提取方法包括以下步骤第1步将漏洞模型从数据库中载入流程即装入内存、建立漏洞模型的数据结构。所述漏洞模型载入流程漏洞模型由漏洞状态的状态结点、有向边的集合所构成;在内存中建立由有向边类型进行检索的操作转换表的流程;通过对软件漏洞程序抽象提取处理,过滤去除无关的操作,进行提取与漏洞模型相关的操作序列的流程。第2步提取软件漏洞特征操作序列,即根据漏洞模型的相关操作的信息,得到软件漏洞程序操作序列,然后对软件漏洞程序操作序列进行抽取,得到软件漏洞特征操作序列。所述提取软件漏洞特征操作序列流程从软件漏洞程序控制流中提取软件漏洞程序操作序列,并以函数为单位进行组织,每个函数组织一个软件漏洞程序操作序列链表,对软件漏洞程序操作序列链表进行遍历,得到软件漏洞特征操作序列。提取的软件漏洞特征操作序列可用于软件漏洞的分析,以判断软件漏洞产生的原因。但是目前软件漏洞特征操作序列提取方法存在以下缺点1.由于现有的软件漏洞特征操作序列提取方法提取出的软件漏洞特征操作序列冗余性大,在抽取这些软件漏洞特征操作序列时存在大量的重复工作,从而影响特征相似性匹配速度以及软件漏洞分析方法的适用性;2.由于每一软件漏洞出现的频率不相同,即某些软件漏洞是经常出现的,某些软件漏洞出现的次数较少,现有方法中没有对这种情况区别对待,降低了软件漏洞分析的效率;3.由于软件漏洞程序操作序列集的增量性,现有的软件漏洞特征操作序列的提取方法不能有效的利用已提取的软件漏洞特征操作序列,来加速提取新的软件漏洞特征操作序列的过程,从而影响整个软件漏洞特征操作序列提取的效率。本发明涉及到的另外一项重要的已有技术是闭合序列模式挖掘算法的CloSpan算法。其算法描述如下算法ClosedMining(DS,min-sup,L)输入数据库DS和最小支持度min-sup输出闭合序列集L(1)删除非频繁项集和空的序列,在待挖掘数据库DS中对序列中的每个项集进行排序。(2)对长度为1的频繁项集调用CloSpan算法。(3)删除结果集中的非闭合序列。CloSpan(s,Ds,min-sup,U算法描述如下输入序列s,投影数据库Ds,最小支持度min_Sup输出前缀搜索序列格L—个序列之所以称为序列模式,它必须是频繁的,即它在数据库中出现的次数至少是min-sup次。最小支持度的取值视实际情况而定。本发明在软件漏洞特征操作序列的提取中使用该算法时,DS表示软件漏洞程序操作序列数据库,L是挖掘到的频繁发生的软件漏洞特征操作序列,min-sup是最小支持度。
发明内容本发明的目的在于克服已有技术的缺点,提供一种软件漏洞特征操作序列提取方法。本发明利用函数调用关系分析技术,对软件漏洞程序进行处理,将软件漏洞程序抽象为软件漏洞程序操作序列的数据形式,然后采用加权闭合序列模式挖掘算法挖掘加权的闭合序列,提高了软件漏洞特征操作序列的提取效率。本发明的目的是通过以下技术方案实现的。本发明的一种软件漏洞特征操作序列提取方法的整体框架设计流程如图1所示,其具体操作步骤如下步骤一、收集已有的软件漏洞程序;步骤二、对步骤一收集的软件漏洞程序进行预处理,过滤掉软件漏洞程序中与软件漏洞分析无关的函数块和语句;步骤三、从步骤二预处理过的软件漏洞程序中得到软件漏洞程序操作序列;其具体操作步骤如下第1步对经过步骤二预处理后的软件漏洞程序载入漏洞模型,由控制流提取算法对软件漏洞程序进行处理,将其转换为软件漏洞程序控制流图;第2步生成中间文件,中间文件包括所有子函数名称和每个子函数内单层调用关系;从中间文件提取软件漏洞程序中函数的调用关系,生成函数调用图。第3步采用深度优先的方法遍历函数调用图,得到软件漏洞程序操作序列。5第4步给每一条软件漏洞程序操作序列赋予一个序列标识符,存入软件漏洞程序操作序列数据库。步骤四、对步骤三得到的软件漏洞程序操作序列采用加权闭合序列模式挖掘算法WCSMining进行挖掘,得到软件漏洞特征操作序列集合。其具体操作步骤如下第1步设置最小支持度阈值的初始值min—sup,并设置用于存储挖掘结果的加权闭合序列树WClosedTree为空;第2步扫描软件漏洞程序操作序列数据库SDB—次,通过软件漏洞程序操作序列出现的频率和定义的权值度量方法,计算所有项的权值;第3步计算软件漏洞程序操作序列数据库SDB基于最小支持度阈值min_SUp长度为1的所有频繁序列l-sequence,并且记录它们的位置数据,把这些长度为1的频繁序列1-sequence加入到加权闭合序列树WClosedTree中,即创建加权闭合序列树结点Cnode,Cnode.i=l_sequence.i,Cnode.i_sup=l_sequence.i_sup,Cnode.i_weight=l_sequence.i_weight;第4步对于长度为1的每一个频繁序列,将它与所有的长度为1的频繁序列1-sequence相连接,生成长度为2的频繁序列2-sequence和相应的位置数据,执行闭集检查,把这些长度为2的频繁序列2-sequence加入到WClosedTree中,即创建加权闭合序列树结点Cnode,Cnode.i=2-sequence.i,Cnode.i_sup=2-sequence.i_sup,Cnode.i_weight=El_sequence.i_weight;第5步设置两个新的集合P和P工为空集;第6步通过加权闭合序列树WClosedTree对长度为2的每一个频繁序列Sl检查逆向超模式和相同位置数据;第7步如果它们符合逆向超模式或有相同的位置数据,更新加权闭合序列树WClosedTree中相应的连接和结点信息,即如果长度为2的频繁序列2-sequence中某一序列S!3S并且Sl_SUp=S_SUP,则将该长度为1的频繁序列S的结点的支持数S_SUP记为0;否则把Sl加入到一个新的集合P中以备扩展;第8步如果步骤7操作以后,集合P为空,结束操作;否则对于集合P中的每个序列s工执行第9步到14步;第9步用长度为2的频繁序列和它们的位置数据将序列Sl进行扩展,并且得到比序列Sl长1的新序列s2(用j表示新序列s2的长度),并计算该新序列s2的位置数据;第10步判断每一个长度为j的序列S2是否为频繁序列;第11步如果当前长度为j的序列S2是频繁序列,创建加权闭合序列树结点Cnode,把长度为j的频繁序列加入到加权闭合序列树WClosedTree中,即Cnode.i=j_sequence.i,Cnode.i_sup=j_sequence.i_sup,Cnode.i_weight=El—sequence.i_weight;否则,丢弃该长度为j的序列s2;第12步通过加权闭合序列树对长度为j的序列s2检查其是否符合逆向超模式或有相同的位置数据;第13步如果长度为j的序列82满足第12步中两种情况中的任一情况,更新WClosedTree中相应的连接和结点信息,即如果长度为j的频繁序列中某一序列S2〕S并且s2_sup=s—s卯,将长度小于j的频繁序列s的节点的支持数记为0;第14步把S2加入到集合P!中,置P=P"P尸0。本发明还包括步骤五、当有新的软件漏洞程序操作序列产生时,在已有软件漏洞特征操作序列的基础上,结合新的软件漏洞程序操作序列,增量式的更新软件漏洞特征操作序列数据库。有益效果本发明根据每一软件漏洞程序操作序列出现的频率不相同,提出了加权闭合序列模式挖掘算法WCSMining,将挖掘出的加权闭合序列模式作为软件漏洞特征操作序列。算法WCSMining利用位置数据保存数据项的序列信息,通过利用这些位置信息,很容易计算出它们的支持度和连接生成长度大于2频繁序列,从而减少了搜索空间,降低了挖掘时间;根据支持度、位置信息以及软件漏洞程序操作序列出现的频率,进行逆向超模式和相同位置数据检查,计算出闭合序列的权值,并将挖掘出的闭合序列存储于加权闭合序列树中,提高软件漏洞分析的效率。此外,算法WCSMining能够有效的利用已提取的软件漏洞特征操作序列,加速提取新的软件漏洞特征操作序列的过程,增量式的更新软件漏洞特征操作序列数据库,从而克服软件漏洞特征操作序列提取方法存在大量重复工作的缺点,提高整了个软件漏洞特征操作序列提取的效率。图1为本发明的一种软件漏洞特征操作序列的提取方法的整体框架设计流程图;图2为本发明具体实施方式中采用加权闭合序列模式挖掘算法WCSMining进行挖掘流程示意图;图3为本发明具体实施方式中包含长度为1的频繁序列的加权闭合序列树;图4为本发明具体实施方式中包含长度为1和长度为2的频繁序列的加权闭合序列树;图5为本发明具体实施方式中逆向超模式和相同位置数据检查后更新的加权闭合序列树;图6为本发明具体实施方式中最终生成的加权闭合序列树。具体实施例方式下面结合具体实施方式对本发明技术方案进行详细描述。本发明的具体操作步骤如下步骤一、收集已有的软件漏洞程序采集已有的软件漏洞程序,如缓冲区溢出、格式化字符串、整数溢出等,以文档的形式存入数据库;步骤二、对步骤一收集的软件漏洞程序进行预处理,过滤掉软件漏洞程序中与软件漏洞分析无关的函数块和语句,如软件漏洞程序调用的数据库名、数据库路径、函数调用列表、各种字符串信息;步骤三、从步骤二预处理过的软件漏洞程序中得到软件漏洞程序操作序列,其具体操作步骤如下第1步对经过步骤二预处理后的软件漏洞程序载入漏洞模型,由控制流提取算7法对软件漏洞程序进行处理,将其转换为软件漏洞程序控制流图;第2步生成中间文件,中间文件包括所有子函数名称和每个子函数内单层调用关系;从中间文件提取软件漏洞程序中函数的调用关系,生成函数调用图。第3步采用深度优先的方法遍历控制流图及函数调用图,得到软件漏洞程序操作序列。第4步给每一条软件漏洞程序操作序列赋予一个序列标识符Sid,存入软件漏洞程序操作序列数据库SDB,如表1所示。表1软件漏洞程序操作序列数据库SDB<table>tableseeoriginaldocumentpage8</column></row><table>步骤四、对步骤三得到的软件漏洞程序操作序列采用加权闭合序列模式挖掘算法WCSMining进行挖掘,得到软件漏洞特征操作序列集合,其流程示意图如图2所示,具体操作步骤如下第1步设置最小支持度阈值的初始值min—sup=2,并设置用于存储挖掘结果的加权闭合序列树WClosedTree为空;第2步扫描软件漏洞程序操作序列数据库SDB—次,通过软件漏洞程序操作序列出现的频率和定义的权值度量方法,计算所有项的权值,如公式1所示;4<formula>formulaseeoriginaldocumentpage8</formula>其中Si.weight为软件漏洞程序操作序列i的权值,|A|为项A在软件漏洞程序操作序列i中出现的次数,同理可求出B、C和D的权值,如表2所示;表2SDB中所有项的位置信息<table>tableseeoriginaldocumentpage8</column></row><table>第3步计算软件漏洞程序操作序列数据库SDB基于最小支持度阈值min_SUp的长度为1的所有频繁序列l-sequence,并且记录它们的位置数据,软件漏洞程序操作序列数据库SDB中所有项的位置信息如表2所示;把这些长度为1的频繁序列1-sequence插入加权闭合序列树WClosedTree中,加权闭合序列树WClosedTree如图3所示。加权闭合序列树的结点是三元组〈项,支持度,权值〉,代表了构成某一闭合序列前缀的一个项,支持度表示对应的闭合序列的出现在多少个不同的软件漏洞程序操作序列中,加权闭合序列为从根结点到此结点的路径,当该结点的支持数大于0时,则代表一个加权闭合序列的结尾项。第4步对于长度为1的每一个频繁序列,将它与所有的长度为1的频繁序列1-sequence相连接,生成长度为2的频繁序列2-sequence和相应的位置数据,如表3所示;执行闭集检查,把这些长度为2的频繁序列2-sequence加入到WClosedTree中,如图4所示;表3SDB中长度为2的频繁序列的位置信息<table>tableseeoriginaldocumentpage9</column></row><table>第5步设置两个新的集合P和P工为空集;第6步通过加权闭合序列树WClosedTree对长度为2的每一个频繁序列Sl检查逆向超模式和相同位置数据;第7步如果它们符合逆向超模式或有相同的位置数据,更新加权闭合序列树WClosedTree中相应的连接和结点信息,将该长度为1的频繁序列s的结点的支持数s_sup记为0;否则把Sl加入到一个新的集合P中以备扩展,如图5所示。第8步如果步骤7操作以后,集合P为空,结束操作;否则对于集合P中的每个序列s工执行第9步到14步;第9步用长度为2的频繁序列和它们的位置数据将序列Sl进行扩展,并且得到比序列Sl长1的新序列s2(用j表示新序列s2的长度),并计算该新序列s2的位置数据;第10步判断每一个长度为j的序列S2是否为频繁序列;第11步如果当前长度为j的序列S2是频繁序列,创建加权闭合序列树结点Cnode,把长度为j的频繁序列加入到加权闭合序列树WClosedTree中;否则,丢弃该长度为j的序列s2;第12步通过加权闭合序列树对长度为j的序列s2检查其是否符合逆向超模式或有相同的位置数据;第13步如果长度为j的序列82满足第12步中两种情况中的任一情况,更新WClosedTree中相应的连接和结点信息,即如果长度为j的频繁序列中某一序列S2〕S并且S2_sup=s—s卯,将长度小于j的频繁序列s的节点的支持数记为0;第14步把S2加入到集合P工中,置P二P"P^0。经过上述步骤的计算之后,可以得到带有权值的闭合序列树如图6所示,由图6可知加权闭合序列模式集为{AA:2,0.934;ABB:2,1.585;ABC:4,1.491;ABCD:2,1.75;CA:3,0.932;CABC:2,1.956;CB:3,1.024}。步骤五、当有新的软件漏洞程序操作序列产生时,在已有软件漏洞特征操作序列的基础上,结合新的软件漏洞程序操作序列,增量式的更新软件漏洞特征操作序列数据库。10权利要求一种软件漏洞特征操作序列的提取方法,其特征在于具体操作步骤如下步骤一、收集已有的软件漏洞程序;步骤二、对步骤一收集的软件漏洞程序进行预处理,过滤掉软件漏洞程序中与软件漏洞分析无关的函数块和语句;步骤三、从步骤二预处理过的软件漏洞程序中得到软件漏洞程序操作序列;步骤四、对步骤三得到的软件漏洞程序操作序列采用加权闭合序列模式挖掘算法WCSMining进行挖掘,得到软件漏洞特征操作序列集合;其具体操作步骤如下第1步设置最小支持度阈值的初始值min_sup,并设置用于存储挖掘结果的加权闭合序列树WClosedTree为空;第2步扫描软件漏洞程序操作序列数据库SDB一次,通过软件漏洞程序操作序列出现的频率和定义的权值度量方法,计算所有项的权值;第3步得到软件漏洞程序操作序列数据库SDB基于最小支持度阈值min_sup长度为1的所有频繁序列1-sequence,并且记录它们的位置数据,把这些长度为1的频繁序列1-sequence加入到加权闭合序列树WClosedTree中,即创建加权闭合序列树结点;第4步对于长度为1的每一个频繁序列,将它与所有的长度为1的频繁序列1-sequence相连接,生成长度为2的频繁序列2-sequence和相应的位置数据,执行闭集检查,把这些长度为2的频繁序列2-sequence加入到WClosedTree中,即创建加权闭合序列树结点;第5步设置两个新的集合P和P1为空集;第6步通过加权闭合序列树WClosedTree对长度为2的每一个频繁序列s1检查逆向超模式和相同位置数据;第7步如果它们符合逆向超模式或有相同的位置数据,更新加权闭合序列树WClosedTree中相应的连接和结点信息,即如果长度为2的频繁序列2-sequence中某一序列<mrow><msub><mi>s</mi><mn>1</mn></msub><mo>&Superset;</mo><mi>s</mi></mrow>并且s1_sup=s_sup,则将该长度为1的频繁序列s的结点的支持数s_sup记为0;否则把s1加入到一个新的集合P中以备扩展;第8步如果步骤7操作以后,集合P为空,结束操作;否则对于集合P中的每个序列s1执行第9步到14步;第9步用长度为2的频繁序列和它们的位置数据将序列s1进行扩展,并且得到比序列s1长1的新序列s2,用j表示新序列s2的长度,并计算该新序列s2的位置数据;第10步判断每一个长度为j的序列s2是否为频繁序列;第11步如果当前长度为j的序列s2是频繁序列,创建加权闭合序列树结点Cnode,把长度为j的频繁序列加入到加权闭合序列树WClosedTree中;否则,丢弃该长度为j的序列s2;第12步通过加权闭合序列树对长度为j的序列s2检查其是否符合逆向超模式或有相同的位置数据;第13步如果长度为j的序列s2满足第12步中两种情况中的任一情况,更新WClosedTree中相应的连接和结点信息,即如果长度为j的频繁序列中某一序列<mrow><msub><mi>s</mi><mn>2</mn></msub><mo>&Superset;</mo><mi>s</mi></mrow>并且s2_sup=s_sup,将长度小于j的频繁序列s的节点的支持数记为0;第14步把s2加入到集合P1中,置P=P1,F2009102418923C00022.tif2.如权力要求1所述的一种软件漏洞特征操作序列的提取方法,其特征在于步骤三中所述获取软件漏洞程序操作序列的具体操作步骤如下第1步对经过步骤二预处理后的软件漏洞程序载入漏洞模型,由控制流提取算法对软件漏洞程序进行处理,将其转换为软件漏洞程序控制流图;第2步生成中间文件,中间文件包括所有子函数名称和每个子函数内单层调用关系;从中间文件提取软件漏洞程序中函数的调用关系,生成函数调用图;第3步采用深度优先的方法遍历函数调用图,得到软件漏洞程序操作序列;第4步给每一条软件漏洞程序操作序列赋予一个序列标识符,存入软件漏洞程序操作序列数据库。3.如权力要求1或2所述的一种软件漏洞特征操作序列的提取方法,其特征在于本发明还包括步骤五当有新的软件漏洞程序操作序列产生时,在已有软件漏洞特征操作序列的基础上,结合新的软件漏洞程序操作序列,增量式的更新软件漏洞特征操作序列数据库。全文摘要本发明涉及一种软件漏洞特征操作序列的提取方法,特别涉及一种基于闭合序列模式挖掘的软件漏洞特征操作序列的提取方法,属于信息安全
技术领域
。本发明利用函数调用关系分析技术,对软件漏洞程序进行处理,将软件漏洞程序抽象为软件漏洞程序操作序列的数据形式,然后采用加权闭合序列模式挖掘算法挖掘加权的闭合序列,提高了软件漏洞特征操作序列的提取效率。文档编号G06F11/36GK101727391SQ20091024189公开日2010年6月9日申请日期2009年12月14日优先权日2009年12月14日发明者任家东,杨东旭,武群惠,王崑声,胡昌振申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1