CN101996292B - 一种基于序列聚类的软件安全特性分析方法 - Google Patents

一种基于序列聚类的软件安全特性分析方法 Download PDF

Info

Publication number
CN101996292B
CN101996292B CN2010105828782A CN201010582878A CN101996292B CN 101996292 B CN101996292 B CN 101996292B CN 2010105828782 A CN2010105828782 A CN 2010105828782A CN 201010582878 A CN201010582878 A CN 201010582878A CN 101996292 B CN101996292 B CN 101996292B
Authority
CN
China
Prior art keywords
sequence
vulnerability
software
pattern
leak
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
CN2010105828782A
Other languages
English (en)
Other versions
CN101996292A (zh
Inventor
胡昌振
任家东
王崑声
蔡斌雷
吴迪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Institute of Technology BIT
Original Assignee
Beijing Institute of Technology BIT
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing Institute of Technology BIT filed Critical Beijing Institute of Technology BIT
Priority to CN2010105828782A priority Critical patent/CN101996292B/zh
Publication of CN101996292A publication Critical patent/CN101996292A/zh
Application granted granted Critical
Publication of CN101996292B publication Critical patent/CN101996292B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Debugging And Monitoring (AREA)

Abstract

本发明涉及一种基于序列聚类的软件安全特性分析方法,基于软件漏洞逆向分析技术的基础上,收集现有的软件漏洞,预处理软件漏洞,将处理后的软件漏洞程序操作序列存入软件漏洞序列数据库,采用基于序列整体的相似性的聚类算法将软件漏洞序列数据库中软件序列进行分类,存入漏洞知识库,以提高漏洞知识库的质量和软件漏洞的分析效率;将从待测软件中抽取出来的疑似软件漏洞序列进行分析,利用基于编辑距离的相似性度量来衡量序列之间的相似程度,分析出软件漏洞,以提高软件漏洞检测的准确率。

Description

一种基于序列聚类的软件安全特性分析方法
技术领域:
本发明涉及一种软件安全特性分析方法,特别是一种基于序列聚类的软件安全特性分析方法,属于计算机软件安全领域。
背景技术:
随着计算机应用的不断发展,软件已经渗透到国民经济和国防建设的各个领域,软件中存在的任何安全漏洞都严重威胁着生命财产的安全。如何全面、有效、准确的挖掘出软件中的安全漏洞,是解决该问题的根本途径。
近年来,国内外学者对软件安全性问题进行了大量的研究,提出一些挖掘软件漏洞的方法。
Salas提出了一个基于模型的安全漏洞检测框架,因为其它的基于模型的方法忽视了安全漏洞对实施细节是敏感的,Salas通过定义一个三重框架模型自动产生测试用例,用以检测软件中存在的已知的安全漏洞。然而该方法不能对未知类型的潜在安全漏洞进行有效检测。针对软件开发过程中所存在的漏洞,Eichinger通过研究程序执行的调用图和图挖掘算法,提出了一种基于图挖掘和传统特征选择的软件漏洞发掘方法。然而,当图的规模较大时,该方法的效率较低。Johnson等人利用类型限定词方法来检测Linux内核中的用户及内核态指针漏洞,同时扩展了CQUAL的基本特性推理能力用以支持上下文敏感性及更高的结构数据的分析精度。与之类似,Shankar等人利用CQUAL来检测格式化字符串漏洞。但是该类方法存在的最大问题就是缺少对合法性检查的识别机制,同时遗漏了关键的检测点,导致较多的漏报和误报。
Aftersight系统和Memcheck系统是污点追踪和传播技术的典型代表,无需任何程序源代码,在运行时检测当前执行路径中是否存在内存泄露及悬挂指针等漏洞,但是该技术仅能检测出当前执行路径上已经存在的漏洞,不能主动执行并搜索程序中的其他的可执行路径。UQBTng也是一个二进制级别的整数溢出漏洞自动检测的工具,其首先利用逆向编译技术将二进制代码转换为C代码,而后将断点插入在内存分配函数前,再通过CBMC边界模型约束检查器来校验程序属性,并从中挖掘漏洞,但是逆向编译技术本身尚未成熟,进而限制了UQBTng的准确性。IntScope同样是一个二进制级自动挖掘整数溢出漏洞的系统,该系统直接符号化地执行X86代码,同时从中提取和输入相关的约束属性,最后检查和输入数据相关的指令是否可能导致整数溢出漏洞,但是因为其是符号化模拟执行,检测的准确性不高,不能完全准确的模拟真正运行时的环境,致使系统在进行整数溢出检测时的误报率和漏报率较高。
目前,逆向分析技术是软件漏洞分析的一种重要方法,利用已知漏洞信息构建知识库是软件漏洞逆向分析技术的关键步骤,基于所构建的漏洞知识库并结合有效的挖掘算法,定位和分析待测软件中潜在的漏洞。
聚类分析是数据挖掘中的一种重要分析方法,该方法不需要任何先验知识,自动挖掘数据中的隐藏模式,其基本思想就是将数据之间的相似性看成客体之间“距离”远近的一种度量,将距离较近的客体归为一类,这就使得同一类中的客体的相似性很大,不同类中的客体相似性很小。聚类分析的应用十分广泛,比较典型的应用有:在地理信息系统中通过聚类发现特征空间来建立主题索引;空间数据分析,检测并解释空间中的簇;文档分类;通过分析Web日志数据来发现相似的访问模式;电子商务中市场分片和为用户提供个性化服务等。与传统聚类方法不同,序列聚类是针对序列类型数据的一种聚类分析方法,使具有相同或相似功能的序列归为一类,不同类中的序列功能差异性很大。通过对序列数据进行聚类分析,可以挖掘数据中潜在的知识和结构,如对交易序列进行聚类可以对客户群进行划分,制定有针对性的市场广告。
发明内容:
本发明目的在于提供一种基于聚类技术的软件安全特性分析方法,针对高质量的软件漏洞序列集收集困难,影响漏洞知识库质量,以及不合适的相似性度量影响漏洞检测准确率的问题,利用序列聚类技术对软件漏洞序列集进行分析,挖掘软件漏洞模式,以提高漏洞知识库的质量;设计基于编辑距离的相似性度量,以提高漏洞检测准确率。
为了解决上述问题,本发明提出了一种基于聚类技术的软件安全特性分析方法,技术方案如下:
步骤一:收集现有的软件漏洞:对已有软件漏洞检测工具检测到的漏洞进行采集,如栈溢出、堆溢出、整数溢出等。
步骤二:预处理收集的软件漏洞,创建软件漏洞序列数据库:预处理步骤一所收集的漏洞数据,去掉注释、空行、不必要的函数块等冗余信息,并抽象为序列形式录入软件漏洞序列数据库。
软件漏洞序列数据库:包含所收集的软件漏洞产生时的序列,软件漏洞序列数据库是一个三元组<SID,S,VD>的集合,其中SID是软件漏洞序列的标识号,S是软件漏洞序列,VD是软件漏洞序列的漏洞描述,描述漏洞类型以及产生的原因。
步骤三:基于序列聚类技术挖掘软件漏洞模式:利用序列聚类技术对软件漏洞序列数据库进行自动分类,将具有相同或相似特征的漏洞序列分配到同一个簇中,形成一个个软件漏洞模式。
软件漏洞模式:对软件漏洞序列数据库中的漏洞序列进行聚类分析以后,形成一个个的聚类簇,每一个聚类簇代表一个漏洞模式P,并用一个四元组<PID,SET,SC,CNT>表示,其中PID表示聚类簇的标识号,SET表示该漏洞模式中漏洞序列的集合,SC表示漏洞模式的中心序列,CNT表示该漏洞模式中漏洞序列的总条数。
基于序列聚类分析的软件漏洞模式挖掘算法是将步骤二得到的软件漏洞序列数据库采用序列聚类技术进行挖掘,得到软件漏洞模式的具体步骤如下:
①任选K个软件漏洞序列作为初始K个软件漏洞模式中的软件漏洞序列的中心序列;
②根据软件漏洞模式中的软件漏洞序列的中心序列,计算软件漏洞序列数据库中其他软件漏洞序列与K个中心序列的距离,将每个软件漏洞序列分配到与其距离最小的中心序列所对应的软件漏洞模式中;
计算软件漏洞序列与中心序列距离的方法为:利用编辑距离ED作为计算软件漏洞序列之间的距离的函数,编辑距离的基本思想就是以替换、插入和删除三种基本操作来确定两个序列之间的相似程度。两个序列S1和S2的编辑距离就是用替换、插入和删除将S1转化为S2的最小代价。计算编辑距离的第一步是用递归方程把距离定义为代价函数,每一种基本操作的代价都是1,假设sup(ai),ins(ai)和subs(ai,bj)分别代表删除ai,插入ai和用bj代替ai的相应的代价,则在代价为1的情况下,代价方程为,
sup(ai)=1,ins(ai)=1,
Figure BSA00000381577700051
代价方程F(i,j)(i=1,2,…;j=1,2,…)代表了将序列A[a1,a2,…,ai]转变为B[b1,b2,…,bj]所需的代价,F(i,j)可递归的表示为
Figure BSA00000381577700052
利用上述代价方程,通过自底向上的求解,即可求得两个序列间的编辑距离ED(A,B)=F(i,j)。
③运用软件漏洞模式的中心序列的更新算法,重新获取每个软件漏洞模式中的中心序列;
软件漏洞模式的中心序列更新算法为:对软件漏洞模式Pi,我们计算Pi中所有软件漏洞序列之间的标识距离LD(Si,Sj),选取与其它软件漏洞序列的标识距离之和最小的序列作为Pi的中心序列,即对于Pi,如果序列S(S∈Pi),使得
Figure BSA00000381577700053
(其中,S′是Pi中的任意序列,且S′≠S),则S就为软件漏洞模式Pi的中心序列。
其中,标识距离LD(Si,Sj)定义为:采用E={L1,L2,…,Lk,…}作为字符集,大小为|E|。S表示一个序列,S由E中的字符组成,其长度为|S|。令V(S)为一个具有|E|维的向量,该向量的每一维与E中的字符是一一对应的,每一维的值是该维所对应的字符在序列S中出现的次数,用V(S)[x]表示字符x在S中出现的次数。两个序列之间的标识距离通过公式(3)计算,
LD ( S i , S j ) = max ( &Sigma; x &Element; E I x i ( V ( S i ) [ x ] - V ( S j [ x ] ) , &Sigma; x &Element; E I x j ( V ( S j ) [ x ] - V ( S i [ x ] ) ) - - - ( 3 )
其中,如果V(Si)[x]-V(Sj[x]>0,则
Figure BSA00000381577700062
否则如果V(Sj)[x]-V(Si[x]>0,则
Figure BSA00000381577700064
否则
Figure BSA00000381577700065
④重复上述的步骤②~③),直到聚类的结果不再变化,获得最终的K个软件漏洞模式。
⑤将k个软件漏洞模式存入漏洞知识库。
步骤四:构建软件漏洞知识库:分析步骤三挖掘出的软件漏洞模式,创建漏洞知识库。
步骤五:从待测软件的源程序中抽取待测软件的疑似漏洞序列:分析待测软件的源程序,抽取疑似漏洞程序段,预处理收集的软件漏洞,得到疑似漏洞序列。
步骤六:将步骤五抽取的软件漏洞结合步骤四创建的漏洞知识库进行漏洞检测:首先,通过计算疑似漏洞序列与漏洞知识库中个漏洞模式的中心序列的距离,搜索与疑似漏洞序列最为相近的漏洞模式,如果没有,则该疑似漏洞序列为安全序列,否则,该疑似漏洞序列为安全漏洞,并在与其最相近的漏洞模式中,通过计算相似度,寻找最相近的漏洞序列,并将最相近的序列的漏洞信息作为安全报告输出。
漏洞检测方法是将步骤五提取的待测软件的疑似漏洞序列进行检测和分析,具体步骤如下:
①设判定待测软件的疑似漏洞序列是否为漏洞序列的距离阈值为θ,θ>0;
②计算待测软件的疑似漏洞序列与K个软件漏洞模式的中心序列的距离,搜索漏洞知识库中与疑似漏洞序列最为相近的漏洞模式。为了降低算法的计算复杂度,利用标识距离进行初始过滤。首先分别计算疑似漏洞序列与K个软件漏洞模式的中心序列的标识距离,获取与疑似漏洞序列有最小标识距离的中心序列,如果疑似漏洞序列与该中心序列的标识距离的大于θ,则疑似漏洞序列为安全序列,否则计算疑似漏洞序列与该中心序列的编辑距离,如果编辑距离大于θ,则该疑似漏洞序列为安全序列,否则,该序列为漏洞序列,且与该中心序列属于同一漏洞模式;
其中,为了降低算法的计算复杂度,利用标识距离进行初始过滤:两条长度分别为m和n的序列,它们之间标识距离计算的时间开销为O(m+n),而编辑距离计算的时间开销为O(m*n),可见,计算标识距离比计算编辑距离时间开销小的多,且标识距离是编辑距离的下界,可由如下定理可知:
定理任意两个序列S1和S2,一定满足LD(S1,S2)≤ED(S1,S2)。
③由上述步骤②确定待测软件的疑似漏洞序列所属的软件漏洞模式后,在漏洞模式中继续搜索与其最相似的漏洞序列,通过计算其与漏洞模式中每一个漏洞序列的相似度,来确定最相似的漏洞序列,进一步分析漏洞产生的原因;
疑似漏洞序列与漏洞模式中每一个漏洞序列的相似度为通过公式(4)计算,
Sim ( S 1 , S 2 ) = 1 - ED ( S 1 , S 2 ) | S 1 | + | S 2 | - - - ( 4 )
有益效果:
克服目前高质量的软件漏洞数据集收集困难,通过对软件漏洞数据集进行聚类分析,挖掘出潜在的漏洞模式,并以此为基础构建漏洞知识库,以提高漏洞知识库的质量。在对软件漏洞数据集进行挖掘时,无需任何先验知识,自动对软件漏洞数据集进行分类,降低了对所收集的软件漏洞数据集质量的要求。同时,设计了基于序列整体最大相似性的相似性度量,并以此为基础构建检测算法,结合漏洞知识库,实现了对待测软件的疑似漏洞序列的定位和分析。
附图说明:
图1基于聚类技术的软件安全特性分析方法的流程示意图。
具体实施方式:
下面结合具体实施方式对本发明技术方案详细描述。
1.在收集的软件漏洞序列集中任意选取6个漏洞序列,并对其进行预处理后,用以创建软件漏洞序列数据库,如表1所示。
表1软件漏洞序列数据库SVSD
Figure BSA00000381577700081
2.利用序列聚类技术挖掘软件漏洞序列数据库中的漏洞模式,具体操作步骤如下,
①设定K值为2,即将SVSD中的漏洞序列分为两个漏洞模式,任选软件漏洞序列数据库中的两个漏洞序列作为漏洞模式的初始中心序列,这里选S1为漏洞模式P1的初始中心序列,S2为漏洞模式P2的初始中心序列。
②根据公式(1)和公式(2)计算软件漏洞序列数据库中其他漏洞序列即S3、S4、S5、S6,与中心序列S1和S2之间的编辑距离,将S3、S4、S5、S6分配到与其编辑距离最小的中心序列所在的漏洞模式。表2展示了漏洞序列S3与S1之间的编辑距离的计算过程。
表2.S3与S1之间的编辑距离表
  F(i,j)   -   B   C   E   D   F   F   C   B
  -   F(0,0)   F(0,1)   F(0,2)   F(0,3)   F(0,4)   F(0,5)   F(0,6)   F(0,7)   F(0,8)
  B   F(1,0)   F(1,1)   F(1,2)   F(1,3)   F(1,4)   F(1,5)   F(1,6)   F(1,7)   F(1,8)
  C   F(2,0)   F(2,1)   F(2,2)   F(2,3)   F(2,4)   F(2,5)   F(2,6)   F(2,7)   F(2,8)
  F   F(3,0)   F(3,1)   F(3,2)   F(3,3)   F(3,4)   F(3,5)   F(3,6)   F(3,7)   F(3,8)
  D   F(4,0)   F(4,1)   F(4,2)   F(4,3)   F(4,4)   F(4,5)   F(4,6)   F(4,7)   F(4,8)
  F   F(5,0)   F(5,1)   F(5,2)   F(5,3)   F(5,4)   F(5,5)   F(5,6)   F(5,7)   F(5,8)
  C   F(6,0)   F(6,1)   F(6,2)   F(6,3)   F(6,4)   F(6,5)   F(6,6)   F(6,7)   F(6,8)
  B   F(7,0)   F(7,1)   F(7,2)   F(7,3)   F(7,4)   F(7,5)   F(7,6)   F(7,7)   F(7,8)
 F(i,j)   -   B   C   E   D   F   F   C   B
 -   0   1   2   3   4   5   6   7   8
  B   1   0   1   2   3   4   5   6   7
  C   2   1   0   1   2   3   4   5   6
  F   3   2   1   1   2   2   3   4   5
  D   4   3   2   2   1   2   3   4   5
  F   5   4   3   3   2   1   2   3   4
  C   6   5   4   4   3   2   2   2   3
  B   7   6   5   5   4   3   3   3   2
计算过程示例如下:
F(0,1)=F(0,0)+ins(B)=0+1=1,F(0,2)=F(0,1)+ins(C)=1+1=2,其它F(0,j)可依次计算。
F(1,0)=F(0,0)+sup(B)=0+1=1,F(2,0)=F(1,0)+sup(C)=1+1=2,其它F(i,0)可依次计算。
F ( 1,1 ) = min F ( 0,0 ) + subs ( B , B ) F ( 0,1 ) + sup ( B ) F ( 1,0 ) + ins ( B ) = 0 + 0 1 + 1 = 0 1 + 1
F ( 1,2 ) = min F ( 0,1 ) + subs ( B , C ) F ( 0,2 ) + sup ( B ) F ( 1,1 ) + ins ( C ) = 1 + 1 2 + 1 = 1 0 + 1
其它F(i,j)可依次计算。
由表2可得,S3与S1之间的编辑距离ED(S3,S1)=F(7,8)=2。同样的计算过程可得ED(S4,S1)=5,ED(S5,S1)=3,ED(S6,S1)=5,ED(S3,S2)=5,ED(S4,S2)=2,ED(S5,S2)=6,ED(S6,S2)=3。根据S3、S4、S5、S6与中心序列S1、S2的编辑距离,可得S3和S5分配到S1所属的漏洞模式P1,S4和S6分配到S2所属的漏洞模式P2
③更新漏洞模式P1和P2的中心序列。由SVSD可得字符集E={A,B,C,D,E,F},所以V(S1)=(0,2,2,1,1,2),V(S2)=(1,0,2,1,1,0),V(S3)=(0,2,2,1,0,2),V(S4)=(0,1,2,1,0,0),V(S5)=(1,0,2,1,2,2),V(S6)=(0,1,2,1,1,0)。首先,更新P1的中心序列,计算P1中的漏洞序列两两之间的标识距离之和。求解过程如下式(5)、(6)、(7)所示,
&Sigma; S i &Element; P 1 LD ( S i , S 1 ) = LD ( S 1 , S 3 ) + LD ( S 1 , S 5 ) = 1 + 2 = 3 - - - ( 5 )
详细计算过程如下:
LD ( S 1 , S 3 ) = max ( I A 1 ( V ( S 1 ) [ A ] - V ( S 3 ) [ A ] ) + . . . + I F 1 ( V ( S 1 ) [ F ] - V ( S 3 ) [ F ] ) ,
I A 3 ( V ( S 3 ) [ A ] - V ( S 1 ) [ A ] ) + . . . + I F 3 ( V ( S 3 ) [ F ] - V ( S 1 ) [ F ] ) )
= max ( 0 * ( 0 - 0 ) + 0 * ( 2 - 2 ) + 0 * ( 2 - 2 ) + 0 * ( 1 - 1 ) + 1 * ( 1 - 0 ) + 0 * ( 2 - 2 ) ,
0 * ( 0 - 0 ) + 0 * ( 2 - 2 ) + 0 * ( 2 - 2 ) + 0 * ( 1 - 1 ) + 0 * ( 0 - 1 ) + 0 * ( 2 - 2 ) )
= max ( 1,0 )
= 1
同理可得LD(S1,S5)=2,
Figure BSA00000381577700108
式(6)~(16)可以同理依次计算。
&Sigma; S i &Element; P 1 LD ( S i , S 3 ) = LD ( S 3 , S 1 ) + LD ( S 3 , S 5 ) = 1 + 3 = 4 - - - ( 6 )
&Sigma; S i &Element; P 1 LD ( S i , S 5 ) = LD ( S 5 , S 1 ) + LD ( S 5 , S 3 ) = 2 + 3 = 5 - - - ( 7 )
由式(5)、(6)、(7)可得
Figure BSA000003815777001011
最小,所以S1为漏洞模式P1的中心序列。
同理,更新漏洞模式P2的中心序列,可得S6为P2的中心序列。
&Sigma; S i &Element; P 2 LD ( S i , S 2 ) = LD ( S 2 , S 4 ) + LD ( S 2 , S 6 ) = 2 + 1 = 3 - - - ( 6 )
&Sigma; S i &Element; P 2 LD ( S i , S 4 ) = LD ( S 4 , S 2 ) + LD ( S 4 , S 6 ) = 2 + 1 = 3 - - - ( 9 )
&Sigma; S i &Element; P 2 LD ( S i , S 6 ) = LD ( S 6 , S 2 ) + LD ( S 6 , S 4 ) = 1 + 1 = 2 - - - ( 10 )
漏洞模式P1中的序列分别为S1,S3和S5,中心序列为S1;漏洞模式P2中的序列分别为S2,S4和S6,中心序列为S6
④由于漏洞模式P2中心序列发生了变化,因此以S1和S6为新的中心序列重复步骤②,根据公式(1)和公式(2)计算漏洞序列S2,S3,S4,S5与S1和S6的编辑距离,可得ED(S2,S1)=6,ED(S3,S1)=2,ED(S4,S1)=5,ED(S5,S1)=3,ED(S2,S6)=3,ED(S3,S6)=4,ED(S4,S6)=3,ED(S5,S6)=6。根据S3、S4、S5、S6与中心序列S1、S2的编辑距离,可得S3和S5分配到S1所属的漏洞模式P1,S2和S4分配到S6所属的漏洞模式P2
更新P1的中心序列,求解过程如下式(11)、(12)、(13)所示,
&Sigma; S i &Element; P 1 LD ( S i , S 1 ) = LD ( S 1 , S 3 ) + LD ( S 1 , S 5 ) = 1 + 2 = 3 - - - ( 11 )
&Sigma; S i &Element; P 1 LD ( S i , S 3 ) = LD ( S 3 , S 1 ) + LD ( S 3 , S 5 ) = 1 + 3 = 4 - - - ( 12 )
&Sigma; S i &Element; P 1 LD ( S i , S 5 ) = LD ( S 5 , S 1 ) + LD ( S 5 , S 3 ) = 2 + 3 = 5 - - - ( 13 )
由式(11)、(12)、(13)可得最小,所以S1为漏洞模式P1的中心序列。同理,更新漏洞模式P2的中心序列,可得S6为P2的中心序列。
&Sigma; S i &Element; P 2 LD ( S i , S 1 ) = LD ( S 2 , S 4 ) + LD ( S 2 , S 6 ) = 2 + 1 = 3 - - - ( 14 )
&Sigma; S i &Element; P 2 LD ( S i , S 4 ) = LD ( S 4 , S 2 ) + LD ( S 4 , S 6 ) = 2 + 1 = 3 - - - ( 15 )
&Sigma; S i &Element; P 2 LD ( S i , S 6 ) = LD ( S 6 , S 2 ) + LD ( S 6 , S 4 ) = 1 + 1 = 2 - - - ( 16 )
漏洞模式P1中的序列分别为S1,S3和S5,中心序列为S1;漏洞模式P2中的序列分别为S2,S4和S6,中心序列为S6,漏洞模式没有变化,漏洞挖掘过程结束。
3.基于步骤2挖掘出的漏洞模式P1和P2构建漏洞知识库,如表3所示。
表3.漏洞知识库
4.从待测软件中抽取漏洞疑似漏洞序列,本实施方案选取疑似漏洞序列S=CFDFBCB作为检测样本。
5.对待测软件的疑似漏洞序列S进行检测,具体操作步骤如下。
①通过比较疑似漏洞序列S与漏洞知识库中漏洞模式的中心序列的距离,搜索与S最为相近的漏洞模式,设距离阈值θ=4。首先,计算疑似漏洞序列S与漏洞模式P1和P2的中心序列的标识距离,LD(S,S1)=1,LD(S,S6)=3,二者均小于θ,且S与P1的中心序列的标识距离较小,所以继续计算S与P1的中心序列S1的编辑距离,计算过程如表4所示。
表4.S与S1之间的编辑距离表
 F(i,j)   -   B   C   E   D   F   F   C   B
 -   F(0,0)   F(0,1)   F(0,2)   F(0,3)   F(0,4)   F(0,5)   F(0,6)   F(0,7)   F(0,8)
  C   F(1,0)   F(1,1)   F(1,2)   F(1,3)   F(1,4)   F(1,5)   F(1,6)   F(1,7)   F(1,8)
  F   F(2,0)   F(2,1)   F(2,2)   F(2,3)   F(2,4)   F(2,5)   F(2,6)   F(2,7)   F(2,8)
  D   F(3,0)   F(3,1)   F(3,2)   F(3,3)   F(3,4)   F(3,5)   F(3,6)   F(3,7)   F(3,8)
  F   F(4,0)   F(4,1)   F(4,2)   F(4,3)   F(4,4)   F(4,5)   F(4,6)   F(4,7)   F(4,8)
  B   F(5,0)   F(5,1)   F(5,2)   F(5,3)   F(5,4)   F(5,5)   F(5,6)   F(5,7)   F(5,8)
  C   F(6,0)   F(6,1)   F(6,2)   F(6,3)   F(6,4)   F(6,5)   F(6,6)   F(6,7)   F(6,8)
  B   F(7,0)   F(7,1)   F(7,2)   F(7,3)   F(7,4)   F(7,5)   F(7,6)   F(7,7)   F(7,8)
  F(i,j)   -   B   C   E   D   F   F   C   B
  -   0   1   2   3   4   5   6   7   8
  C   1   1   1   2   3   4   5   6   7
  F   2   2   2   2   3   3   4   5   6
  D   3   3   3   3   2   3   4   5   6
  F   4   4   4   4   3   2   3   4   5
  B   5   4   5   5   4   3   3   4   4
  C   6   5   4   5   5   4   4   3   4
  B   7   6   5   5   6   5   5   4   3
由表4计算可得S与S1的编辑距离ED(S,S1)=3<θ,因此,S是漏洞序列,且属于漏洞模式P1
②根据公式(4)计算S与P1中的漏洞序列的相似度,在漏洞模式P1中搜索与S最相近的漏洞序列。首先,分别计算S与S1、S3、S5的编辑距离,得ED(S,S1)=3,ED(S,S3)=2,ED(S,S5)=5计算S与S1、S3、S5的相似度,如式(17)、(18)、(19)所示,
Sim ( S , S 1 ) = 1 - ED ( S , S 1 ) | S | + | S 1 | = 1 - 3 7 + 8 = 0.8 - - - ( 17 )
Sim ( S , S 3 ) = 1 - ED ( S , S 3 ) | S | + | S 3 | = 1 - 2 7 + 7 = 0.86 - - - ( 18 )
Sim ( S , S 5 ) = 1 - ED ( S , S 5 ) | S | + | S 5 | = 1 - 5 7 + 8 = 0.67 - - - ( 19 )
由上述计算结果可知,S与软件漏洞模式P1中漏洞序列S3的相似度最大。
6.将待测软件的疑似漏洞序列最相似的软件漏洞序列S3所对应的漏洞信息VD作为安全报告输出。
由于待测软件的疑似漏洞序列S与软件漏洞模式P1中的漏洞序列S3的相似度最大,进一步从表1软件漏洞序列数据库SVSD中提取S3所对应的相关漏洞描述VD为来源校验错误,因此,可以判定待测软件的疑似漏洞序列S的漏洞特征为堆溢出,并以安全报告形式输出。

Claims (1)

1.一种基于序列聚类的软件安全特性分析方法,其特征在于:其步骤如下:
步骤一:收集现有的软件漏洞:对已有软件漏洞检测工具检测到的漏洞进行采集;
步骤二:预处理收集的软件漏洞,创建软件漏洞序列数据库:预处理步骤一所收集的漏洞数据,去掉冗余信息,并抽象为序列形式录入软件漏洞序列数据库;
步骤三:基于序列聚类技术挖掘软件漏洞模式:利用序列聚类技术对软件漏洞序列数据库进行自动分类,将具有相似特征的漏洞序列分配到同一个簇中,形成2个或2个以上的软件漏洞模式;
步骤四:构建软件漏洞知识库:分析步骤三挖掘出的2个或者2个以上的软件漏洞模式,创建漏洞知识库;
步骤五:从待测软件的源程序中抽取待测软件的疑似漏洞序列:分析待测软件的源程序,抽取疑似漏洞程序段,预处理收集的疑似软件漏洞,得到疑似漏洞序列;
步骤六:将步骤五抽取的疑似漏洞序列结合步骤四创建的漏洞知识库进行漏洞检测:首先,通过计算疑似漏洞序列与漏洞知识库中各漏洞模式的中心序列的距离,搜索与疑似漏洞序列最为相近的漏洞模式,如果没有,则该疑似漏洞序列为安全序列,否则,该疑似漏洞序列为安全漏洞,并在与其最相近的漏洞模式中,通过计算相似度,寻找最相近的漏洞序列,并将最相近的序列的漏洞信息作为安全报告输出;
所述步骤三中:基于序列聚类技术的软件漏洞模式挖掘是将软件漏洞序列数据库采用序列聚类技术进行挖掘,得到软件漏洞模式的具体步骤如下:
①任选K个软件漏洞序列作为初始K个软件漏洞模式中的软件漏洞序列的中心序列;
②根据软件漏洞模式中的软件漏洞序列的中心序列,计算软件漏洞序列数据库中其他软件漏洞序列与K个中心序列的距离,将每个软件漏洞序列分配到与其距离最小的中心序列所对应的软件漏洞模式中;
计算软件漏洞序列与中心序列距离的方法为:利用编辑距离ED作为计算软件漏洞序列之间的距离的函数,编辑距离的基本思想就是以替换、插入和删除三种基本操作来确定两个序列之间的相似程度;两个序列S1和S2的编辑距离就是用替换、插入和删除将S1转化为S2的最小代价;计算编辑距离的第一步是用递归方程把距离定义为代价函数,每一种基本操作的代价都是1,假设sup(ai),ins(ai)和subs(ai,bj)分别代表删除ai,插入ai和用bj代替ai的相应的代价,则在代价为1的情况下,代价方程为,
sup(ai)=1,ins(ai)=1,
Figure FDA0000117218510000021
代价方程F(i,j)(i=1,2,…;j=1,2,…)代表了将序列A[a1,a2,…,ai]转变为B[b1,b2,…,bj]所需的代价,F(i,j)可递归的表示为
Figure FDA0000117218510000022
利用上述代价方程,通过自底向上的求解,即可求得两个序列间的编辑距离ED(A,B)=F(i,j);
③运用软件漏洞模式的中心序列的更新算法,重新获取每个软件漏洞模式中的中心序列;
软件漏洞模式的中心序列更新的处理方法为:对软件漏洞模式Pi,计算Pi中所有软件漏洞序列之间的标识距离LD(Si,Sj),选取与其它软件漏洞序列的标识距离之和最小的序列作为Pi的中心序列,即对于Pi,如果序列S(S∈Pi),使得
Figure FDA0000117218510000031
其中,S′是Pi中的任意序列,且S′≠S,则S就为软件漏洞模式Pi的中心序列;
其中,标识距离LD(Si,Sj)定义为:采用E={L1,L2,…,Lk,…}作为字符集,大小为|E|;S表示一个序列,S由E中的字符组成,其长度为|S|;令V(S)为一个具有|E|维的向量,该向量的每一维与E中的字符是一一对应的,每一维的值是该维所对应的字符在序列S中出现的次数,用V(S)[x]表示字符x在S中出现的次数;两个序列之间的标识距离通过公式(3)计算,
LD ( S i , S j ) = max ( &Sigma; x &Element; E I x i ( V ( S i ) [ x ] - V ( S j [ x ] ) , &Sigma; x &Element; E I x j ( V ( S j ) [ x ] - V ( S i [ x ] ) ) - - - ( 3 )
其中,如果V(Si)[x]-V(Sj[x]>0,则
Figure FDA0000117218510000033
否则如果V(Sj)[x]-V(Si[x]>0,
Figure FDA0000117218510000035
否则
Figure FDA0000117218510000036
④重复上述的步骤②~③,直到聚类的结果不再变化,获得最终的K个软件漏洞模式;
⑤将k个软件漏洞模式存入漏洞知识库;
所述步骤六中:漏洞检测方法是将步骤五提取的待测软件的疑似漏洞序列进行检测和分析,具体步骤如下:
①设θ为判定待测软件的疑似漏洞序列是否为漏洞序列的距离阈值,θ>0;
②计算待测软件的疑似漏洞序列与K个软件漏洞模式的中心序列的距离,搜索漏洞知识库中与疑似漏洞序列最为相近的漏洞模式,为了降低算法的计算复杂度,利用标识距离进行初始过滤,首先分别计算疑似漏洞序列与K个软件漏洞模式的中心序列的标识距离,获取与疑似漏洞序列有最小标识距离的中心序列,如果疑似漏洞序列与该中心序列的标识距离大于θ,则疑似漏洞序列为安全序列,否则计算疑似漏洞序列与该中心序列的编辑距离,如果编辑距离大于θ,则该疑似漏洞序列为安全序列,否则,该序列为漏洞序列,且与该中心序列属于同一漏洞模式;
所述的为了降低算法的计算复杂度,利用标识距离进行初始过滤:两条长度分别为m和n的序列,它们之间标识距离计算的时间开销为O(m+n),而编辑距离计算的时间开销为O(m*n),根据定理:任意两个序列S1和S2,一定满足LD(S1,S2)≤ED(S1,S2),即标识距离是编辑距离的下界,可见计算标识距离小于计算编辑距离时间开销;
③由上述步骤②确定待测软件的疑似漏洞序列所属的软件漏洞模式后,在漏洞模式中继续搜索与其最相似的漏洞序列,通过计算其与漏洞模式中每一个漏洞序列的相似度,来确定最相似的漏洞序列;
其中,疑似漏洞序列与漏洞模式中每一个漏洞序列的相似度为通过公式(4)计算,
Sim ( S 1 , S 2 ) = 1 - ED ( S 1 , S 2 ) | S 1 | + | S 2 | - - - ( 4 )
进一步分析漏洞产生的原因,将最相近的序列的漏洞信息作为安全报告输出。
CN2010105828782A 2010-12-10 2010-12-10 一种基于序列聚类的软件安全特性分析方法 Expired - Fee Related CN101996292B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2010105828782A CN101996292B (zh) 2010-12-10 2010-12-10 一种基于序列聚类的软件安全特性分析方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2010105828782A CN101996292B (zh) 2010-12-10 2010-12-10 一种基于序列聚类的软件安全特性分析方法

Publications (2)

Publication Number Publication Date
CN101996292A CN101996292A (zh) 2011-03-30
CN101996292B true CN101996292B (zh) 2012-05-23

Family

ID=43786438

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2010105828782A Expired - Fee Related CN101996292B (zh) 2010-12-10 2010-12-10 一种基于序列聚类的软件安全特性分析方法

Country Status (1)

Country Link
CN (1) CN101996292B (zh)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104778403A (zh) * 2014-01-15 2015-07-15 江苏南大苏富特科技股份有限公司 一种基于序列模式软件安全漏洞的检测方法
CN105279075A (zh) * 2014-06-10 2016-01-27 江苏博智软件科技有限公司 一种基于序列模式软件安全漏洞的检测方法
CN106845241A (zh) * 2015-12-03 2017-06-13 中国电信股份有限公司 漏洞攻击的检测方法和装置
CN106919831B (zh) * 2015-12-25 2020-10-09 阿里巴巴集团控股有限公司 污点追踪的方法和装置
CN105718801A (zh) * 2016-01-26 2016-06-29 国家信息技术安全研究中心 一种基于编程模式和模式匹配的漏洞聚类方法
CN109101230B (zh) * 2018-07-10 2022-03-04 云南大学 一种数据驱动的双层次软件过程挖掘方法及系统
CN109558308A (zh) * 2018-09-29 2019-04-02 中国平安人寿保险股份有限公司 应用程序内存泄露检测方法、装置、电子设备及存储介质
RU2724710C1 (ru) * 2018-12-28 2020-06-25 Акционерное общество "Лаборатория Касперского" Система и способ классификации объектов вычислительной системы
CN114900378B (zh) * 2022-07-15 2022-09-27 苏州知微安全科技有限公司 一种物联网设备漏洞数据的协作推荐方法及装置

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727391A (zh) * 2009-12-14 2010-06-09 北京理工大学 一种软件漏洞特征操作序列的提取方法
CN101739337A (zh) * 2009-12-14 2010-06-16 北京理工大学 一种基于聚类的软件漏洞序列特征的分析方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5100133B2 (ja) * 2007-01-19 2012-12-19 株式会社東芝 情報処理装置

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727391A (zh) * 2009-12-14 2010-06-09 北京理工大学 一种软件漏洞特征操作序列的提取方法
CN101739337A (zh) * 2009-12-14 2010-06-16 北京理工大学 一种基于聚类的软件漏洞序列特征的分析方法

Also Published As

Publication number Publication date
CN101996292A (zh) 2011-03-30

Similar Documents

Publication Publication Date Title
CN101996292B (zh) 一种基于序列聚类的软件安全特性分析方法
Feremans et al. Pattern-based anomaly detection in mixed-type time series
CN105915555A (zh) 网络异常行为的检测方法及系统
CN103853738A (zh) 一种网页信息相关地域的识别方法
CN104572958A (zh) 一种基于事件抽取的敏感信息监控方法
CN104520871A (zh) 漏洞矢量信息分析
CN106548073A (zh) 基于卷积神经网络的恶意apk的筛查方法
CN102073825B (zh) 基于路径驱动的可执行程序安全性检测方法
CN107169321B (zh) 基于属性计数和结构度量技术相结合的程序剽窃检测方法及系统
CN101751530A (zh) 检测漏洞攻击行为的方法及设备
CN107038380A (zh) 一种基于程序特征树的漏洞检测方法及系统
CN105045715A (zh) 基于编程模式和模式匹配的漏洞聚类方法
CN105159827A (zh) 一种面向gui软件的可靠性加速测试方法
CN105824756A (zh) 一种基于代码依赖关系的过时需求自动检测方法及系统
CN105183642A (zh) 基于插桩的程序行为获取及结构分析方法
CN109446288A (zh) 一种基于Spark互联网涉密地图检测算法
CN108520267A (zh) 一种基于时空特征的水文遥测数据异常检测方法
CN108985065A (zh) 应用改进的马氏距离计算方法进行固件漏洞检测的方法及系统
CN103679034B (zh) 一种基于本体的计算机病毒分析系统及其特征提取方法
CN113326187A (zh) 数据驱动的内存泄漏智能化检测方法及系统
CN108170467A (zh) 约束限定聚类和信息度量软件胎记特征选择方法、计算机
CN111881300A (zh) 面向第三方库依赖的知识图谱构建方法及系统
CN114036531A (zh) 一种基于多尺度代码度量的软件安全漏洞检测方法
CN102298681B (zh) 一种基于数据流切片的软件识别方法
CN101968797A (zh) 一种基于镜头间上下文的视频概念标注方法

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20120523

Termination date: 20141210

EXPY Termination of patent right or utility model