[发明专利]一种基于编程模式和模式匹配的漏洞聚类方法在审
申请号: | 201610053379.1 | 申请日: | 2016-01-26 |
公开(公告)号: | CN105718801A | 公开(公告)日: | 2016-06-29 |
发明(设计)人: | 李京春;张小松;梁利;许云清;王少杰;朱迦南;万仁忠;李霞;胡剑青;陈琳;刘楠 | 申请(专利权)人: | 国家信息技术安全研究中心 |
主分类号: | G06F21/56 | 分类号: | G06F21/56 |
代理公司: | 北京市商泰律师事务所 11255 | 代理人: | 毛燕生 |
地址: | 100084 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 编程 模式 匹配 漏洞 方法 | ||
技术领域
本发明涉及一种基于编程模式和模式匹配的漏洞聚类方法,属于计算机程序安全技术领域。
背景技术
脆弱性(Vulnerability)是系统具体实现或安全策略上存在的缺陷和不足。软件脆弱性的存在给系统服务的可持续性和数据的安全性带来的巨大的危害,是威胁信息系统安全的主要因素。黑客、蠕虫病毒和木马等都利用安全脆弱性来实现对计算机系统的入侵或自身传播。
计算机系统在社会生活中的应用日益广泛,安全脆弱性的数目呈迅速递增之势,从发现到首次被利用的时间间隔越来越短,安全漏洞的风险等级节节升高。如何应对安全漏洞给信息系统带来的威胁,已成了计算机安全领域的重大问题之一。除了利用己知脆弱性,有的黑客善于挖掘并利用一些尚未公布的脆弱性以达到他们不可告人的目的,而相比于此,安全研究者们在脆弱性研究工作的影响方面显得被动和滞后。所以加大对脆弱性的研究力度是非常有必要的,以便对各类脆弱性采取更为主动合理的处理方式。如何来检测一个现有软件的安全性是解决安全问题的头等大事。从问题的源头就开始关注安全,越早发现软件存在的脆弱性问题,那么造成的损失就越小。因此,对计算机软件脆弱性分析方法的研究具有重要的理论和实用价值。
当前,根据分析对象不同可将脆弱性分析方法分为两类:源代码分析和二进制分析。源代码分析是对程序的源代码进行手动或自动的代码审计,根据审查人员的经验来审查代码中是否包含常见已知漏洞或者潜在安全缺陷;二进制分析是在不运行程序的情况下对软件汇编代码进行分析,以发现一些潜在的漏洞,它直接反映了机器执行程序的实际过程,比源代码分析更底层但更难以分析。需要通过特定的逆向平台对软件程序进行反汇编,得到相应的反汇编文本。
发明内容
为了克服现有技术的不足,本发明提供一种基于编程模式和模式匹配的漏洞聚类方法。
本发明具体采用如下技术方案:
一种基于编程模式和模式匹配的漏洞聚类方法,能够将程序内所有函数进行统一分析,根据每个函数中出现的不同的关键词、API符号,将每个函数映射到向量空间,并利用矩阵分析方法提取出这些函数中占据主导地位的编程模式,以及每个函数最倾向的编程模式;通过计算欧几里得距离,将编程模式相近的函数发现并聚类为一类,并藉此发现潜在的、和已知漏洞相似的漏洞。
本发明的优点是:
对于一个开放源代码的程序,当已知其中某个函数存在漏洞时,可以将包括该漏洞函数在内的所有函数进行统一分析。根据每个函数中出现的不同的关键词、API符号,将每个函数用向量表示出来,并利用矩阵分析方法提取出这些函数中占据主导地位的编程模式,以及每个函数最倾向的编程模式。之后通过计算欧几里得距离,将编程模式相近的函数找出来、聚类为一类。本方法不仅可以将相似函数聚类,并且可以藉此发现潜在的、和已知漏洞相似的漏洞函数。
附图说明
当结合附图考虑时,通过参照下面的详细描述,能够更完整更好地理解本发明以及容易得知其中许多伴随的优点,但此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定,如图其中:
图1为本发明的总体工作流程图;
图2为模式抽取步骤的工作流程图;
图3为模式匹配步骤的工作流程图;
下面结合附图和实施例对本发明进一步说明。
具体实施方式
显然,本领域技术人员基于本发明的宗旨所做的许多修改和变化属于本发明的保护范围。
实施例1:如图1、图2、图3所示,基于编程模式和模式匹配的漏洞聚类方法,包括研究源代码分析,属于静态分析方法;为了更有效率、更准确的比较程序漏洞代码的相似性,以更好的将代码进行聚类,并发现潜在的漏洞代码,提出了这样一种漏洞聚类方法。
一种基于编程模式和模式匹配的漏洞聚类的方法,包括以下步骤:
步骤1.编程模式提取,对于一个包含了Cf个函数的程序源代码(Cf为整数),进行如下步骤的操作:
步骤1-1:统计该程序中出现的关键词数量Cn,包括:保留字、函数名、变量名。
步骤1-2:为该程序的每个函数创建一个维度为Cn的列向量Mi(i=1,2,…Cf)并一一赋值,然后将创建的Cf个列向量合并为一个Cn*Cf的矩阵M;其中,列向量Vi的每个分量对应于一个程序的关键词;对于一个函数,若它包含了某个关键词,则向量中对应该关键词的分量的值为1;若不包含该关键词,则该值为0。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于国家信息技术安全研究中心,未经国家信息技术安全研究中心许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201610053379.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种硬件指令调用控制系统
- 下一篇:一种识别文件溢出漏洞的方法及系统