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

文档序号:6541608阅读:852来源:国知局
专利名称:一种基于序列聚类的软件安全特性分析方法
技术领域
本发明涉及一种软件安全特性分析方法,特别是一种基于序列聚类的软件安全特 性分析方法,属于计算机软件安全领域。
背景技术
随着计算机应用的不断发展,软件已经渗透到国民经济和国防建设的各个领域, 软件中存在的任何安全漏洞都严重威胁着生命财产的安全。如何全面、有效、准确的挖掘出 软件中的安全漏洞,是解决该问题的根本途径。近年来,国内外学者对软件安全性问题进行了大量的研究,提出一些挖掘软件漏 洞的方法。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(bi),ins(bi)和subs (a,, bj)分别代表删除插入a, 和用…代替 的相应的代价,则在代价为1的情况下,代价方程为,
权利要求
1.一种基于序列聚类的软件安全特性分析方法,其特征在于其步骤如下步骤一收集现有的软件漏洞对已有软件漏洞检测工具检测到的漏洞进行采集;步骤二 预处理收集的软件漏洞,创建软件漏洞序列数据库预处理步骤一所收集的漏洞数据,去掉冗余信息,并抽象为序列形式录入软件漏洞序列数据库;步骤三基于序列聚类技术挖掘软件漏洞模式利用序列聚类技术对软件漏洞序列数 据库进行自动分类,将具有相似特征的漏洞序列分配到同一个簇中,形成2个或2个以上的 软件漏洞模式;步骤四构建软件漏洞知识库分析步骤三挖掘出的2个或者2个以上的软件漏洞模 式,创建漏洞知识库;步骤五从待测软件的源程序中抽取待测软件的疑似漏洞序列分析待测软件的源程 序,抽取疑似漏洞程序段,预处理收集的软件漏洞,得到疑似漏洞序列;步骤六将步骤五抽取的软件漏洞结合步骤四创建的漏洞知识库进行漏洞检测首 先,通过计算疑似漏洞序列与漏洞知识库中个漏洞模式的中心序列的距离,搜索与疑似漏 洞序列最为相近的漏洞模式,如果没有,则该疑似漏洞序列为安全序列,否则,该疑似漏洞 序列为安全漏洞,并在与其最相近的漏洞模式中,通过计算相似度,寻找最相近的漏洞序 列,并将最相近的序列的漏洞信息作为安全报告输出。
2.如权利要求1所述的一种基于序列聚类的软件安全特性分析方法,其特征在于步 骤三中基于序列聚类分析的软件漏洞模式挖掘算法是将软件漏洞序列数据库采用序列聚 类技术进行挖掘,得到软件漏洞模式的具体步骤如下①任选K个软件漏洞序列作为初始K个软件漏洞模式中的软件漏洞序列的中心序列;②根据软件漏洞模式中的软件漏洞序列的中心序列,计算软件漏洞序列数据库中其他 软件漏洞序列与K个中心序列的距离,将每个软件漏洞序列分配到与其距离最小的中心序 列所对应的软件漏洞模式中;计算软件漏洞序列与中心序列距离的方法为利用编辑距离ED作为计算软件漏洞序 列之间的距离的函数,编辑距离是以替换、插入和删除三种基本操作来确定两个序列之间 的相似程度;两个序列S1和S2的编辑距离就是用替换、插入和删除将S1转化为S2的最小代 价;计算编辑距离用递归方程把距离定义为代价函数,每一种基本操作的代价都是1,假设 sup (Bi),ins (a,)和subs (a^bj)分别代表删除 ,插入屮和用b」代替屮的相应的代价,则 在代价为1的情况下,代价方程为,「1,如果 α,
3.如权利要求1所述的一种基于序列聚类的软件安全特性分析方法,其特征在于步 骤六中,漏洞检测方法是将步骤五提取的待测软件的疑似漏洞序列进行检测和分析,具体 步骤如下①设判定待测软件的疑似漏洞序列是否为漏洞序列的距离阈值为θ,θ>0;②计算待测软件的疑似漏洞序列与K个软件漏洞模式的中心序列的距离,搜索漏洞知 识库中与疑似漏洞序列最为相近的漏洞模式,为了降低算法的计算复杂度,利用标识距离 进行初始过滤,首先分别计算疑似漏洞序列与K个软件漏洞模式的中心序列的标识距离, 获取与疑似漏洞序列有最小标识距离的中心序列,如果疑似漏洞序列与该中心序列的标识 距离的大于θ,则疑似漏洞序列为安全序列,否则计算疑似漏洞序列与该中心序列的编辑 距离,如果编辑距离大于θ,则该疑似漏洞序列为安全序列,否则,该序列为漏洞序列,且与该中心序列属于同一漏洞模式;所述的为了降低算法的计算复杂度,利用标识距离进行初始过滤两条长度分别为m 和η的序列,它们之间标识距离计算的时间开销为0(m+n),而编辑距离计算的时间开销为 0(m*n),根据定理任意两个序列S1和S2,一定满足LD (S1, S2)彡ED (S1, S2),即标识距离是 编辑距离的下界,可见计算标识距离小于计算编辑距离时间开销;③由上述步骤②确定待测软件的疑似漏洞序列所属的软件漏洞模式后,在漏洞模式中 继续搜索与其最相似的漏洞序列,通过计算其与漏洞模式中每一个漏洞序列的相似度,来 确定最相似的漏洞序列;其中,疑似漏洞序列与漏洞模式中每一个漏洞序列的相似度为通过公式(4)计算
全文摘要
本发明涉及一种基于序列聚类的软件安全特性分析方法,基于软件漏洞逆向分析技术的基础上,收集现有的软件漏洞,预处理软件漏洞,将处理后的软件漏洞程序操作序列存入软件漏洞序列数据库,采用基于序列整体的相似性的聚类算法将软件漏洞序列数据库中软件序列进行分类,存入漏洞知识库,以提高漏洞知识库的质量和软件漏洞的分析效率;将从待测软件中抽取出来的疑似软件漏洞序列进行分析,利用基于编辑距离的相似性度量来衡量序列之间的相似程度,分析出软件漏洞,以提高软件漏洞检测的准确率。
文档编号G06F21/00GK101996292SQ201010582878
公开日2011年3月30日 申请日期2010年12月10日 优先权日2010年12月10日
发明者任家东, 吴迪, 王崑声, 胡昌振, 蔡斌雷 申请人:北京理工大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1