基于编程模式和模式匹配的漏洞聚类方法.pdf

上传人:e2 文档编号:6401508 上传时间:2019-06-07 格式:PDF 页数:8 大小:401.34KB
返回 下载 相关 举报
摘要
申请专利号:

CN201510443533.1

申请日:

2015.07.27

公开号:

CN105045715A

公开日:

2015.11.11

当前法律状态:

授权

有效性:

有权

法律详情:

授权|||实质审查的生效IPC(主分类):G06F 11/36申请日:20150727|||公开

IPC分类号:

G06F11/36

主分类号:

G06F11/36

申请人:

电子科技大学

发明人:

张小松; 宋珺; 牛伟纳; 卓中流; 陈瑞东; 孙恩博; 戴中印; 黄金

地址:

611731四川省成都市高新区(西区)西源大道2006号

优先权:

专利代理机构:

电子科技大学专利中心51203

代理人:

李明光

PDF下载: PDF下载
内容摘要

本方法用于软件脆弱性分析,属于计算机程序安全领域。本发明是一种基于编程模式和模式匹配的漏洞发现方法,可以将程序内所有函数进行统一分析,根据每个函数中出现的不同的关键词、API符号,将每个函数映射到向量空间,并利用矩阵分析方法提取出这些函数中占据主导地位的编程模式,以及每个函数最倾向的编程模式。通过计算欧几里得距离,将编程模式相近的函数发现并聚类为一类,并藉此发现潜在的、和已知漏洞相似的漏洞。

权利要求书

1.一种基于编程模式和模式匹配的漏洞聚类的方法,具体包括以下步骤:
步骤1.编程模式提取;记已知存在漏洞的函数为函数F,对于一个包含(Cf—1)个函数的
程序源代码,进行如下步骤的操作:
步骤1-1:将函数F置于所述程序源代码中,此时程序源代码包含有Cf个函数,统计插
入函数F后的程序源代码中出现的不同关键词并记其总数量为Cn,所述关键词类型包括保留
字、函数名、变量名;
步骤1-2:为该程序源代码的每个函数创建一个维度为Cn的列向量Mi,i=1,2,…Cf,列向
量Mi中的每个元素与步骤1-1所统计的不同关键词一一对应,若列向量Mi对应的函数中包
含有相应关键词,则列向量Mi中相应位置的元素值记为1,否则记为零;将创建的Cf个列向
量合并为一个Cn×Cf的矩阵M;
步骤1-3:选取特征数值D,0<D≤Cf;
步骤1-4:对矩阵M进行截断奇异值分解M=USVT,并取前D个奇异值,分解之后得到
矩阵U、S、V;其中,矩阵U为Cn*D阶矩阵,矩阵S为D*D阶对角矩阵,矩阵V为Cf*D
阶矩阵;
矩阵V的每一个行向量与所述程序源代码中的每一个函数一一对应,即矩阵V的每一个
行向量即代表所述程序源代码中的一个函数的模式块,由此得到Cf个与程序源代码的函数一
一对应的模式块向量,提取其中与函数F对应的模式块向量;
步骤2.模式匹配聚类;对于步骤1中提取出的Cf个函数的模式块向量,进行如下步骤的
操作:
步骤2-1:针对程序源代码中除函数F之外的函数所对应的模式块向量,计算每个模式块
向量Fi与函数F的模式块向量的欧几里得距离;
步骤2-2:设定欧氏距离阈值δ,将与函数F的模式块向量的欧几里得距离小于等于阈值
δ的模式块向量对应的函数提取出来,即将程序源代码中与带有漏洞的函数F具有较近欧氏
距离即较高相似度的函数聚类为一类,供进一步分析。
2.根据权利要求1所述的基于编程模式和模式匹配的漏洞聚类的方法,其特征在于,所
述欧几里得距离S(Fi,F)的具体公式如下:
S ( F i , F ) = Σ j = 1 D ( a j - b j ) 2 ]]>
其中,向量(a1a2…aD)、(b1b2…bD)分别为模式块向量Fi及函数F的模式块向量。

说明书

基于编程模式和模式匹配的漏洞聚类方法

技术领域

本发明属于计算机程序安全领域,提供一种基于编程模式和模式匹配的漏洞聚类方法。

背景技术

脆弱性(Vulnerability)是系统具体实现或安全策略上存在的缺陷和不足。软件脆弱性的存
在给系统服务的可持续性和数据的安全性带来了巨大的危害,是威胁信息系统安全的主要因
素。黑客、蠕虫病毒和木马等都利用安全脆弱性来实现对计算机系统的入侵或自身传播。

计算机系统在社会生活中的应用日益广泛,安全脆弱性的数目呈迅速递增之势,从发现
到首次被利用的时间间隔越来越短,安全漏洞的风险等级节节升高。如何应对安全漏洞给信
息系统带来的威胁,已成了计算机安全领域的重大问题之一。除了利用己知脆弱性,有的黑
客善于挖掘并利用一些尚未公布的脆弱性以达到他们不可告人的目的,而相比于此,安全研
究者们在脆弱性研究工作的影响方面显得被动和滞后。所以加大对脆弱性的研究力度是非常
有必要的,以便对各类脆弱性采取更为主动合理的处理方式。如何来检测一个现有软件的安
全性是解决安全问题的头等大事。从问题的源头就开始关注安全,越早发现软件存在的脆弱
性问题,那么造成的损失就越小。因此,对计算机软件脆弱性分析方法的研究具有重要的理
论和实用价值。

当前,根据分析对象不同可将脆弱性分析方法分为两类:源代码分析和二进制分析。源
代码分析是对程序的源代码进行手动或自动的代码审计,根据审查人员的经验来审查代码中
是否包含常见已知漏洞或者潜在安全缺陷;二进制分析是在不运行程序的情况下对软件汇编
代码进行分析,以发现一些潜在的漏洞,它直接反映了机器执行程序的实际过程,比源代码
分析更底层但更难以分析,需要通过特定的逆向平台对软件程序进行反汇编,得到相应的反
汇编文本。

专利申请“一种基于属性提取的软件漏洞挖掘系统及方法”(申请号:CN201410577779)
提供一种基于属性提取的软件漏洞挖掘系统及方法,包括以下步骤:提取待测软件关键代码
的步骤;对待测软件在虚拟机环境中执行,并采用虚拟机故障注入引擎与关键代码进行测试
交互,记录测试结果;将测试结果结合挖掘经验知识库进行推理。该发明的不足在于,漏洞
发掘非常依赖于经验知识库的完备,若知识库不包含相关信息,则难以检测出新类型的漏洞。

专利申请“一种用于漏洞发掘的动态符号执行路径搜索方法”(申请号:CN201410230479)
提供如下方法,在使用动态符号执行对被测程序的可能执行路径进行搜索的过程中,标记实
际执行被测程序时触发漏洞的路径,对于路径探索过程中生成的每一个新的测试用例,计算
该测试用例执行路径与上次触发漏洞路径的相关度r,并以此计算该测试用例对应执行路径的
权重分数score,在下次执行测试时选择score值最大的测试用例执行。该发明的不足在于,
漏洞发掘依赖于合适的测试用例的设计,难以设计出适用于不同程序类型的一组用例,故难
以保证效率和准确性。

发明内容

本发明主要解决的技术问题在于,为了更有效率、更准确的比较程序漏洞代码的相似性,
以更好的将代码进行聚类,并发现潜在的漏洞代码,提出了这样一种漏洞聚类方法。本发明
主要研究源代码分析,属于静态分析方法。

本发明涉及的相关术语解释如下:

编程模式:在本发明中,编程模式是指,反应了一个函数的源代码中,函数名、变量名、
保留字三者组合而成的向量,可以从一定程度上反应该函数的功能;

模式块向量:在本发明中,模式块向量是指,反应了一个函数对于指定多种编程模式的“倾
向”程度的向量,这是根据数学方法得到的结果;

截断奇异值分解:奇异值分解是矩阵特征值分解在非方针情况下的推广,用来计算描述
一般矩阵重要特征的分析方法;很多情况下,前面一小部分的奇异值之和占据了所有奇异值
总和的绝大部分,故可以截断前一部分的奇异值来过滤“噪音”,得到矩阵重要的信息,这就
是截断奇异值分解;

欧几里得距离:是一个通常采用的距离定义,指在m维空间中两个点之间的真实距离,
或者向量的自然长度(即该点到原点的距离);

模式匹配:在本发明中,模式匹配是指,通过计算若干函数的模式块与目标函数的模式
块的欧几里得距离,找到与目标函数模式块最相近的函数。

本发明具体采用如下技术方案:

一种基于编程模式和模式匹配的漏洞聚类的方法,其流程图如图1所示,具体包括以下
步骤:

步骤1.编程模式提取,其流程如图2所示;记已知存在漏洞的函数为函数F,对于一个
包含(Cf-1)个函数的程序源代码,进行如下步骤的操作:

步骤1-1:将函数F置于所述程序源代码中,此时程序源代码包含有Cf个函数,统计插
入函数F后的程序源代码中出现的不同关键词并记其总数量为Cn,所述关键词类型包括保留
字、函数名、变量名;

步骤1-2:为该程序源代码的每个函数创建一个维度为Cn的列向量Mi,i=1,2,…Cf,列向
量Mi中的每个元素与步骤1-1所统计的不同关键词一一对应,若列向量Mi对应的函数中包
含有相应关键词,则列向量Mi中相应位置的元素值记为1,否则记为零;将创建的Cf个列向
量合并为一个Cn×Cf的矩阵M;

步骤1-3:选取特征数值D,0<D≤Cf,数值D代表之后步骤从源代码中提取出的模式
种类的数量的最大值;D值过小则不能提供足够的精度,过大则不能提供更高的精度;

步骤1-4:对矩阵M进行截断奇异值分解M=USVT,并取前D个奇异值,分解之后得到
矩阵U、S、V;其中,矩阵U为Cn*D阶矩阵,矩阵S为D*D阶对角矩阵,矩阵V为Cf*D
阶矩阵;

矩阵V的每一个行向量与所述程序源代码中的每一个函数一一对应,即矩阵V的每一个
行向量即代表所述程序源代码中的一个函数的模式块,由此得到Cf个与程序源代码的函数一
一对应的模式块向量,提取其中与函数F对应的模式块向量;

步骤2.模式匹配聚类,其流程图如图3所示;对于步骤1中提取出的Cf个函数的模式块,
进行如下步骤的操作:

步骤2-1:针对程序源代码中除函数F之外的函数所对应的模式块向量,计算每个模式块
向量Fi与函数F的模式块向量的欧几里得距离;

步骤2-2:设定欧氏距离阈值δ,将与函数F的模式块向量的欧几里得距离小于等于阈值
δ的模式块向量对应的函数提取出来,即将程序源代码中与带有漏洞的函数F具有较近欧氏
距离即较高相似度的函数聚类为一类,供进一步分析。

本发明的有益效果:

对于一个开放源代码的程序,当已知其中某个函数存在漏洞时,利用本发明方法可以将
包括该漏洞函数在内的所有函数进行统一分析,根据每个函数中出现的不同的关键词、API
符号,将每个函数用向量表示出来,并利用矩阵分析方法提取出这些函数中占据主导地位的
编程模式,以及每个函数最倾向的编程模式;并通过计算欧几里得距离,将编程模式相近的
函数找出来、聚类为一类;本方法不仅可以将相似函数聚类,并且可以藉此发现潜在的、和
已知漏洞相似的漏洞函数。

附图说明

图1为本发明的总体工作流程图

图2为模式抽取模块的工作流程图

图3为模式匹配模块的工作流程图

具体实施方式

本具体实施方式提供一种基于编程模式和模式匹配的漏洞聚类的方法,其流程图如图1
所示,具体包括以下步骤:

步骤1.编程模式提取,其流程如图2所示;记已知存在漏洞的函数为函数F,对于一个
包含(Cf—1)个函数的程序源代码,进行如下步骤的操作:

步骤1-1:将函数F置于所述程序源代码中,此时程序源代码包含有Cf个函数,统计插
入函数F后的程序源代码中出现的不同关键词并记其总数量为Cn,所述关键词类型包括保留
字、函数名、变量名;

步骤1-2:为该程序源代码的每个函数创建一个维度为Cn的列向量Mi,i=1,2,…Cf,列向
量Mi中的每个元素与步骤1-1所统计的不同关键词一一对应,若列向量Mi对应的函数中包
含有相应关键词,则列向量Mi中相应位置的元素值记为1,否则记为零;将创建的Cf个列向
量合并为一个Cn×Cf的矩阵M;

步骤1-3:选取特征数值D,0<D≤Cf,数值D代表之后步骤从源代码中提取出的模式
种类的数量的最大值;D值过小则不能提供足够的精度,过大则不能提供更高的精度;

步骤1-4:对矩阵M进行截断奇异值分解,并取前D个奇异值,分解之后得到矩阵U、
S、V:


其中,矩阵U为Cn*D阶矩阵,矩阵S为D*D阶对角矩阵,矩阵V为Cf*D阶矩阵;矩阵U
的每一列记载了一种主要的编程模式共计D种,在某种程度上显示该模式里某个关键字的使
用频率;矩阵S的对角线上的每个奇异值反映了矩阵U中每个编程模式的重要程度;矩阵V
的每一行反映了某个函数对D种编程模式的“倾向”,“倾向”越相近的函数,则它们越有可能
属于一类;

矩阵V的每一个行向量与所述程序源代码中的每一个函数一一对应,即矩阵V的每一个
行向量即代表所述程序源代码中的一个函数的模式块,由此得到Cf个与程序源代码的函数一
一对应的模式块向量,提取其中与函数F对应的模式块向量;

步骤2.模式匹配聚类,其流程图如图3所示;对于步骤1中提取出的Cf个函数的模式块,
进行如下步骤的操作:

步骤2-1:针对程序源代码中除函数F之外的函数所对应的模式块向量,计算每个模式块
向量Fi与函数F的模式块向量的欧几里得距离S(Fi,F),具体公式如下:

S ( F i , F ) = Σ j = 1 D ( a j - b j ) 2 ]]>

其中,向量(a1a2…aD)、(b1b2…bD)分别为模式块向量Fi及函数F的模式块向量;

步骤2-2:设定欧氏距离阈值δ,将与函数F的模式块向量的欧几里得距离小于等于阈值
δ的模式块向量对应的函数提取出来,即将程序源代码中与带有漏洞的函数F具有较近欧氏
距离即较高相似度的函数聚类为一类,供进一步分析。

基于编程模式和模式匹配的漏洞聚类方法.pdf_第1页
第1页 / 共8页
基于编程模式和模式匹配的漏洞聚类方法.pdf_第2页
第2页 / 共8页
基于编程模式和模式匹配的漏洞聚类方法.pdf_第3页
第3页 / 共8页
点击查看更多>>
资源描述

《基于编程模式和模式匹配的漏洞聚类方法.pdf》由会员分享,可在线阅读,更多相关《基于编程模式和模式匹配的漏洞聚类方法.pdf(8页珍藏版)》请在专利查询网上搜索。

本方法用于软件脆弱性分析,属于计算机程序安全领域。本发明是一种基于编程模式和模式匹配的漏洞发现方法,可以将程序内所有函数进行统一分析,根据每个函数中出现的不同的关键词、API符号,将每个函数映射到向量空间,并利用矩阵分析方法提取出这些函数中占据主导地位的编程模式,以及每个函数最倾向的编程模式。通过计算欧几里得距离,将编程模式相近的函数发现并聚类为一类,并藉此发现潜在的、和已知漏洞相似的漏洞。。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 物理 > 计算;推算;计数


copyright@ 2017-2020 zhuanlichaxun.net网站版权所有
经营许可证编号:粤ICP备2021068784号-1