CN106991325B - 一种软件漏洞的防护方法和装置 - Google Patents
一种软件漏洞的防护方法和装置 Download PDFInfo
- Publication number
- CN106991325B CN106991325B CN201710121268.4A CN201710121268A CN106991325B CN 106991325 B CN106991325 B CN 106991325B CN 201710121268 A CN201710121268 A CN 201710121268A CN 106991325 B CN106991325 B CN 106991325B
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- software
- incidence relation
- vertex
- graph
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/577—Assessing vulnerabilities and evaluating computer system security
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/03—Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
- G06F2221/033—Test or assess software
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Complex Calculations (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种软件漏洞的防护方法和装置,方法包括:获取多个样本软件的漏洞数据进行统计分析,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图;根据一个软件的漏洞数据构建该漏洞关联关系图的漏洞关联关系子图,计算所述漏洞关联关系子图的核度并确定出该软件的核心漏洞;修复所述核心漏洞,以实现对该软件的漏洞的防护。本发明实施例通过对大量样本数据的统计分析结果构建表示漏洞之间关联关系的关联关系图,并构建针对一个具体软件的漏洞关联关系子图,利用该漏洞关联关系子图计算待防护软件的核心漏洞,找到核心漏洞后修复单一核心漏洞进而修复多个与其关联的漏洞,从而实现对漏洞的高效率防护。
Description
技术领域
本发明涉及软件安全技术领域,具体涉及一种软件漏洞的防护方法和装置。
背景技术
目前,由于在协议、安全策略等方面存在的缺陷和不足,软件不可避免地存在安全漏洞,漏洞是造成软件***安全威胁的重要因素。为了减少漏洞利用造成的损失,有必要在软件被攻击之前做好安全防护工作。
但是漏洞数量众多,一一填补虽然可能,却会造成严重的资源浪费或者需要较高的代价,并且在修补漏洞之后,是否可以达到理想的防护效果也难以保证。因为如果某些漏洞是由某个未检测出的漏洞所引发的,那么在修复这些漏洞后,只要满足条件,新的漏洞又会产生,从而造成明明消除了大量的漏洞,却并没有达到理想的防护效果的现象。
由此可知,现有的漏洞防护方案处理方式过于简单,防护效率低,难以满足实际需求。
发明内容
本发明提供了一种软件漏洞的防护方法,以解决现有技术防护效率低,难以满足实际需求的问题。
根据本发明的一个方面,提供了一种软件漏洞的防护方法,包括:
获取多个样本软件的漏洞数据进行统计分析,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图;
根据一个软件的漏洞数据构建该漏洞关联关系图的漏洞关联关系子图,计算所述漏洞关联关系子图的核度并确定出该软件的核心漏洞;
修复核心漏洞,以实现对该软件的漏洞的防护。
根据本发明的另一个方面,提供了软件漏洞的防护装置,包括:
模型构建单元,用于获取多个样本软件的漏洞数据进行统计分析,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图;
核心漏洞确定单元,用于根据一个软件的漏洞数据构建该漏洞关联关系图的漏洞关联关系子图,计算所述漏洞关联关系子图的核度并确定出该软件的核心漏洞;
漏洞防护单元,用于修复核心漏洞,以实现对该软件漏洞的防护。
本发明的有益效果是:本发明实施例的软件漏洞防护方法和装置,基于对已知大量软件漏洞的统计分析,采用对数正态分布描述漏洞类别之间的关联关系,构建得到漏洞关联关系图,并针对由不同类型漏洞和漏洞之间关联关系构建的漏洞关联关系图,分析不同类型漏洞之间的关联关系(这些关系中包括因果关系或共生关系),识别与其他漏洞具有较高关联度的漏洞类别从而确定出软件的核心漏洞,实现修复该单一核心漏洞的同时一并修复与其关联的漏洞,提高漏洞的防护效率的有益效果,提高了软件的安全性,满足了实际需求。
附图说明
图1是本发明一个实施例的一种软件漏洞的防护方法的流程示意图;
图2是本发明一个实施例的描述漏洞间契合概率的对数正态分布的示意图;
图3是本发明一个实施例的待防护软件中查找出的部分漏洞的示意图;
图4是根据图3查找出的漏洞构建的漏洞关联关系子图;
图5是本发明一个实施例的一种软件漏洞的防护装置的框图。
具体实施方式
本发明的核心技术构思是:不同于漏洞早期研究那样只单一地针对某个漏洞本身进行分析,而是考虑了漏洞之间存在的复杂的相互作用,进而分析漏洞之间的关联关系。相同软件上会出现不同类型的漏洞,本发明主要针对单个软件上出现的不同类型的漏洞,根据对已知大量软件漏洞分布情况的分析,采用对数正态分布刻画描述漏洞分布形成及漏洞关联关系的关联度函数,进而得到漏洞之间的分布关联性;并针对由不同类型漏洞和漏洞之间关联关系构造的漏洞关联关系图,基于无向边赋权图的核与核度理论,重点分析不同类型漏洞之间的关联关系(这些关系中包括因果关系或共生关系),识别与其他漏洞具有较高关联度的漏洞,从而实现对漏洞的高效率防护,提高软件安全性。
这里先对本发明实施例涉及的两个名词进行说明。
漏洞关联:是漏洞之间存在的复杂的相互关系,本发明所指的漏洞关联主要考虑漏洞分布关联关系。
核度理论:是利用核与核度刻画***的稳定性和连通性,研究***基本结构和基本性质的理论。核是一个***中最关键、最核心的主要素,是***的主体和关键;任何一个给定的***,均存在***的核;不同的***具有不同类型的核,核度是衡量***核的工具,应用核度理论解决相应技术问题的主要任务即是利用核度寻找***的核。
实施例一
图1是本发明一个实施例的一种软件漏洞的防护方法的流程示意图,参见图1,该方法包括如下步骤:
步骤S101,获取多个样本软件的漏洞数据进行统计分析,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图;
步骤S102,根据一个软件的漏洞数据构建该漏洞关联关系图的漏洞关联关系子图,计算所述漏洞关联关系子图的核度并确定出该软件的核心漏洞;
步骤S103,修复核心漏洞,以实现对该软件漏洞的防护。
由图1所示可知,本实施例的软件漏洞防护方法,通过对已知大量样本软件的漏洞数据的统计分析,采用对数正态分布描述漏洞类别之间的关联关系并建立漏洞关联关系图,然后基于待防护软件的漏洞数据构建该漏洞关联关系图的漏洞关联关系子图,计算出漏洞关联关系子图的核度,从而确定待防护软件的核心漏洞,并修复核心漏洞后可实现一并修复与其关联的漏洞的有益效果,提高了漏洞防护的效率和软件的安全性。
实施例二
本实施例中重点对软件漏洞的防护方法的具体实现步骤进行说明。本发明实施例的软件漏洞的防护方案是基于建立的漏洞关联关系图来实现的,以下先介绍如何构建漏洞关联关系图。
在建立漏洞关联关系图时,首先,分析漏洞特征确定漏洞图的顶点;其次,理清漏洞之间的关联关系确定漏洞图的边;再次,根据漏洞关联关系的强度确定边的权值,构建一个无向边赋权漏洞分布图。
首先,分析漏洞特征确定漏洞图的顶点;
这里,具体是分析漏洞的类别特征。任何一个给定的***,均存在***的核,漏洞关联关系图也不例外,本实施例的漏洞关联关系图是研究漏洞类别之间关联关系的方法,所以漏洞关联关系图的核是漏洞类别,因此在构建关联关系图时首先要确定漏洞类别,也就是要对漏洞进行分类。目前有很多对漏洞进行分类的方法,例如,按照漏洞威胁类型对获取的每个样本软件的漏洞进行分类,或者,按照漏洞利用位置对获取的每个样本软件的漏洞进行分类,或者,按照漏洞的权限提升动作对获取的每个样本软件的漏洞进行分类,或者,按照软件或者软件厂商对获取的每个样本软件的漏洞进行分类,或者,按照漏洞影响对获取的每个样本软件的漏洞进行分类。
这里的,权限提升动作,是将具有相同提权动作的漏洞作为一类,而将与该类漏洞的提权动作不同的漏洞作为另一类。按照软件或软件厂商分类是指将一个软件或一系列软件作为漏洞的分类依据,例如,Windows***软件上检测出的漏洞作为一类,Linux***软件上检测出的漏洞作为另一类。实践中可以根据需要选择一种漏洞分类方法对已知软件的漏洞进行分类,对此不作限制。
本实施例中是按照漏洞威胁类型分类的,也就是说,在获取到大量样本软件的信息后,按照漏洞威胁类型对每个样本软件中的漏洞进行分类,将漏洞类别作为漏洞关联关系图的顶点,每个顶点一一对应每个漏洞类别。一般地,一个样本软件中有多少种类的漏洞,漏洞关联关系图就对应有多少个顶点。
其次,理清漏洞之间的关联关系确定漏洞图的边;
在确定了漏洞关联关系图的顶点之后,漏洞关联关系图的边由顶点的全连接组成。
再次,根据漏洞关联关系的强度确定边的权值;
需要说明的是,本实施例中漏洞关联关系图中每两个顶点之间都存在一条边,但是各条边上的权值不相同,权值大小表示了漏洞之间关联程度的强弱。
为了减少计算量,降低复杂性。本实施例中,提供了两种方式,第一种是通过筛选样本软件信息,第二种是通过为表示漏洞类别之间关联关系的关联度(即,权值)设定阈值,并根据计算出的关联度和关联度阈值的比较结果控制关联关系图中边的个数。
具体的,采用第一种方式的情况下,是对获取的每个样本软件的漏洞进行分类,得到每个样本软件上出现的漏洞的类别数据后,将每个样本软件上的漏洞类别与预设漏洞类别阈值进行比较,若小于或等于预设漏洞类别阈值,则在构建漏洞关联关系图时排除该样本软件。
实际应用中当采取现有技术方法获取大量包含漏洞类别的漏洞信息后,按照漏洞信息中的软件名称以及漏洞类别进行分类统计。上述漏洞数据均可以来源于中国国家信息安全漏洞库CNNVD(China National Vulnerability Database of InformationSecurity,简称CNNVD)或美国国家漏洞库NVD(National Vulnerability Database,简称NVD)等漏洞数据库。可以理解,这里的CNNVD漏洞数据库和NVD漏洞数据库仅为示例性的说明,在本发明的其它实施例中也可以采用其它的漏洞数据库,对此不作限制。
获取漏洞信息为现有技术,例如自行编写爬虫工具,或者使用已存在的统计软件等。接下来,对每个样本软件的漏洞的类别进行统计,如果该样本软件的漏洞类别的统计结果小于预设类别阈值,则在构建漏洞关联关系图时排除该样本软件。
举例而言,预设类别阈值为2,获取到的某个软件Z中只有1类漏洞,则在构建漏洞关联关系图时排除该样本软件Z,也就是说,不考虑软件Z。这是由于,同一软件上单一类别漏洞不会出现和其它类别漏洞的关联。
采用第二种方式的情况下,将计算出的第一顶点对应的漏洞类别和第二顶点对应的漏洞类别之间的关联度与预设关联度阈值进行比较,当计算出的关联度大于或等于预设关联度阈值时,确定第一顶点和第二顶点之间存在一条边。
在实际应用中,根据需要,可为两个顶点对应的漏洞类别之间的关联度设置关联度阈值θ,当根据顶点计算出对应的漏洞类别之间的关联度时,将计算出的关联度和关联度阈值θ比较,如果关联度大于或等于θ,表示与两个顶点对应的漏洞类别之间存在关联关系,即,两个顶点之间存在连接边,反之则不存在。经过这样的处理,可以减少漏洞关联关系图中边的个数,从而降低计算量。可以理解,经过这样的处理后,漏洞关联关系图中可能存在没有连接边的孤立的顶点。
优选地,上述两种方式都采用,即在计算关联度之前先对样本软件的数量进行筛选和控制,然后在计算关联度之后对关联关系图的边进行筛选和控制,这样可以减少整个计算过程的复杂度,提高计算效率。可以理解,实践中也可以根据需求,对上述两种方式进行选择,即,可以仅采用第一种方式或者仅采用第二种方式,对此不作限制。
另外,实践中,为了获得足够多的可用漏洞数量以提高计算的精度和准确性,需要对同一样本软件的不同版本进行合并,在软件处理粒度、漏洞数据统计精度及准确性之间进行折中。具体来说,可用漏洞数量与软件处理粒度相关。这里的软件处理粒度对应软件版本。如果处理粒度较细,需要针对同一软件的不同版本分别统计在其中出现的漏洞数量;如果处理粒度较粗,可以合并软件版本,仅针对合并版本后的软件统计漏洞数量。因此,软件处理粒度越粗,可用漏洞数量越多。而漏洞数量对基于统计学方法分析漏洞关联关系是很重要的,数据量越大,准确性越高,因此实际应用时可根据需要在软件处理粒度以及可用漏洞数量之间进行折中。
在获取到的漏洞数据集的基础上,进一步分析漏洞之间的关联关系。
由于实践中不同类别漏洞在各软件上出现的总量会有很大不同,如果只是按照漏洞数量多少来分析其关联性,势必会造成热门漏洞类别的权重远大于冷门漏洞类别,从而对分析漏洞类别之间的关系产生不良影响。为了避免上述问题,本实施例从各类漏洞出现比例入手分析漏洞类别之间的关联关系。
通过对获取的漏洞数据信息进行分析,可以发现:如果两类漏洞之间具有关联关系,那么无论这两类漏洞出现在任何软件上,它们都呈现出“同高同低”的特点。也就是说,如果一类漏洞会导致另一类漏洞出现(可能是一个或多个),例如,如果每个A类漏洞会引发2个B类漏洞,当用各类漏洞出现比例表示漏洞之间的关联关系时,可以知道A类漏洞与B类漏洞的出现比例为1:2;那么,理想状态下,在任何软件上A类漏洞与B类漏洞出现的比例都应该为1:2。但是,实际情况下,在不同的软件上,A类漏洞与B类漏洞出现的比例并不完全相同。基于上述分析可知:单纯用各类漏洞出现比例也无法完全分析漏洞类别之间的关联关系。
对此,本实施例的软件漏洞防护方法考虑用各类漏洞总数之比与实际漏洞分布比例的数学关系表示各类漏洞间的关联度,提出在分析漏洞关联关系时关注两类漏洞出现比例的契合度。契合度是计算漏洞关联度的基础,这里的契合度是指:若两类漏洞在所有软件中出现的总数量之比为x,而两类漏洞在某个软件上出现的数量之比为y,那么y/x就表示y相对于x的契合度。
举例来说,针对A和B这两类漏洞,当它们在所有软件上出现的总数量之比为1:3时,如果在某个软件S1上它们出现的数量之比也为1:3,那么它们在软件S1上的契合度就为1,这也是它们在所有软件上契合度最高的情况;如果在某个软件S2上A和B这两类漏洞出现的数量之比为2:7,那么它们在软件S2上的契合度比较接近1;如果在某个软件S3上A和B这两类漏洞出现的数量之比为20:1,那么它们在软件S3上的契合度就会非常低;如果在某个软件S4上A和B这两类漏洞中的一类或两类的数量均为0,例如,A和B这两类漏洞出现的数量之比为0:3或0:0,那么它们在软件S4上的契合度就为0。
由于在实际情况中,每个软件上的各类漏洞两两之间的契合度并不能保证达到最大值,每个软件都是以一种概率接近这个最大契合度,而这个概率才反映了各类漏洞之间实际的关联度。因此,为了确定各类漏洞之间的关联度,必须确定这个概率的分布。根据对契合度特性的分析后可确定出每个软件上的各类漏洞两两之间的契合度应该符合一种概率分布。为此,本实施例进行如下数据拟合过程:
对契合度的特性进行分析后发现:对于总数量比为1:1的两类漏洞,在单个软件上分布为1:2或是2:1,其对于1:1的偏差是相同的,因此漏洞的契合概率的分布应该满足对数对称分布的特点。更进一步,对于该概率分布函数,除了具有对称关系以外,还应具有如下特性:①该概率分布函数的值应具有单一最大值,且函数的值向两侧逐渐减小;②该概率分布函数的自变量为两类漏洞数量之比。漏洞的数量为自然数,其比值区间应为[0,+∞);③该概率分布函数的一阶导数应先大于0后小于0,并最终趋于0。
基于上述特性,本方法选取满足上述特性的对数正态分布来描述各类漏洞间的契合概率。图2是本发明一个实施例的描述契合概率的对数正态分布示意图,如图2所示,在图2中,x表示同一软件上两类漏洞数量之比的对数;y表示此比例与两类漏洞在所有软件上的总数量之比的契合概率。因此,y轴上的最大值为1;理想情况下,契合度为1,实际情况下,契合度不可能大于1,因此,函数的值会向两侧逐渐减小,从前述对称性也可知函数的值向两侧逐渐减小;在图2中,当同一软件上两类漏洞数量之比越接近两类漏洞在所有软件上的总数量之比时,其契合概率越高,即y值越大,因此左侧单调递增,右侧单调递减。
接着,根据对数正态分布可确定漏洞类别间的契合概率公式如下:
确定了契合概率的表示后,下一步要计算漏洞类别之间的关联度。具体方法如下:
首先,针对每个软件i,根据公式(3)计算各类漏洞两两之间的契合概率f'(i),其中取方差σ=1,取μ为两类漏洞在所有软件中出现的总数量之比的对数,取x为两类漏洞在每个软件i上出现的数量之比的对数;
其次,考虑到即便是同样的两类漏洞在不同的软件上出现的数量也是不同的,为了在计算中考虑漏洞数量的权重,本实施例对上一步处理得到的契合概率进行加权处理,具体处理方法是:设软件i上出现的关联关系图中第一顶点对应的A类漏洞数量为Cia,关联关系图中第二顶点对应的B类漏洞数量为Cib,那么在全部软件上出现的A类漏洞总数量则为B类漏洞总数量则为则针对软件i的带权契合概率为:
这个关联度即为连接漏洞关联关系图中第一顶点和第二顶点的边上的权值。由于本实施例的漏洞关联关系图中的顶点表示的是漏洞类别,所以,权值也是漏洞类别之间的关联度。
这里的第一顶点和第二顶点指漏洞关联关系图中的任意两个顶点,第一和第二不表示漏洞顶点的顺序,可以理解为名称。
确定了漏洞关联关系图的顶点和边,以及边上的权值后,即可建立漏洞关联关系图。可以理解,在漏洞关联关系图中,顶点为漏洞类别,边表示漏洞类别之间的关联关系。由分析可知,漏洞关联关系图是一个边赋权图,又因为本方案讨论的漏洞关系是在各类漏洞两两之间的相互关系,则该图是一个无向边赋权图。
接下来介绍如何计算漏洞关联关系图的核度并寻找核心漏洞。
传统的核度计算方法主要是针对无向无权图进行的,因此如何计算无向边赋权图的核度仍然是一个关键问题。通过对无向无权图的核度计算公式进行研究分析后本实施例提出了适用于无向边赋权图的核度计算公式。
设G是一个无向边赋权图,C(G)表示G中所有点割集构成的集合,一般的|V(G)|≥4,则称h(G)为该图的核度,h(G)的计算公式如下:
h(G)=max{a*ω(G-S)-b*S|+Ws,S∈C(G)} 公式(4)
其中,常量参数a与b以及变量参数Ws均为与权值相关的参数。
考虑到核度计算公式主要是计算新增加的连通分支数与删除的顶点数,因此,常量参数a与b是与总权重相关的常量,它们分别与连通分支数和顶点数相乘后即可以使得在不改变原有计算公式物理意义的基础上又考虑了图中边的权重;参数Ws则是为了消除具有不同权重的边产生的不同的影响,其意义为消除顶点集S后图中减少的边的总权重。
公式(4)中,参数a和b设为a=b=2*(Wg/|V(G)|),其中Wg表示图G中所有边上的权重之和,|V(G)|表示图G中的顶点总数,则Wg/|V(G)|表示平均每个顶点连接的边权重的一半,也即a与b的值等于平均每个顶点连接的边的权重。
在确定出核心漏洞后对核心漏洞进行修复,从而能够实现软件漏洞的高效率防护。
由上可知,本实施例将核与核度理论用到对一个具体软件中的漏洞进行高效率防护,通过选取一种漏洞分类方法,获取大量不同软件的漏洞信息,建立漏洞关联关系图,然后确定待防护的软件,优选地,获取待防护的软件的源代码。接着,利用漏洞分析工具找到待防护软件中存在的漏洞,并按照选取的漏洞分类方式对漏洞分析工具得到的漏洞进行分类。进而构建得到漏洞关联模型,建立一个只包含分析所得漏洞类型的漏洞关联关系子图。
最后根据无向边赋权图的核度计算方法计算漏洞关联关系子图的核与核度。从而修复核点所在的漏洞,通过修复单一核点漏洞进而修复多个与其关联的漏洞,实现了对漏洞的高效率防护。
实施例三
本实施例中以CNNVD漏洞分类方法为例介绍本发明的软件漏洞防护方法的实现过程。
CNNVD漏洞分类方法是中国国家信息安全漏洞库的一种按照漏洞威胁类型对漏洞进行分类的方法。CNNVD库中包含约十万条漏洞记录,每条漏洞信息中包含漏洞类别,CNNVD编号,CVE编号,危害等级,漏洞类型,威胁类型等属性以及漏洞简介。
步骤3.1:CNNVD按照漏洞威胁类型,将漏洞划分为26个类别,如表1所示。
表1
表1是CNNVD漏洞分类表,由于“资料不足”、“未知”和“其他”三类漏洞无法详细描述其漏洞信息,并且它们也难以与其他漏洞建立联系,因此在后续处理中未考虑这三类漏洞,最终只分析了表1中的23类漏洞数据。
之后,利用自行编写的爬虫软件获取约10万条漏洞信息,并按照软件名称及CNNVD漏洞类型自动进行分类统计,形成37000多个文件。在获得原始漏洞数据后,对数据进行处理,最终形成了3500多个具有多种类型漏洞及相应漏洞数量的文件集,这些数据构成了后续待分析的漏洞数据集。
步骤3.2:将一款Java语言编写的数独游戏软件作为实例,使用Findbugs软件查找该软件代码中的bug。
图3是本发明一个实施例的待防护软件中查找出的部分漏洞的示意图,如图3中Hodoku_src(29)所示,共计找出了29项bug,去除其中4项不可用的bug,将剩余25项bug按照Findbugs的分类方法进行分类,产生11项不同的漏洞类别。
FindBugs是一个静态分析工具,它检查类或者JAR文件,将字节码与一组缺陷模式进行对比以发现可能的问题。有了该静态分析工具,就可以在不实际运行程序的情况下对软件进行分析。
由于使用Findbugs找到的漏洞分类信息与CNNVD不一致,因此要做一个映射。
步骤3.3:Findbugs找到的每一个bug中都有其详细描述与分类,因此先按Findbugs本身的分类方式统计,再将其漏洞分别对应到CNNVD漏洞类别,如表2所示。
表2
表2是检测出的bug与CNNVD漏洞类别的映射表,由表2可知,1个bug可能导致CNNVD漏洞分类中的一类或两类漏洞,所以对检测出的bug引发的漏洞数量进行统计即可得到总漏洞数,具体的,总漏洞数=1*2+1*2+1*1+1*1+2*1+4*2+6*1+3*2+4*2+0+0=36。这里需要说明的是,对于Findbugs找到的表2中的最后两个bug,由于无法归类到CNNVD漏洞分类中的任一类,所以本实施例中将这两个bug导致的漏洞数量均设为0。
步骤3.4:得到在这款数独软件源代码中的所有CNNVD漏洞分类的数量。在此基础上,将其包含的漏洞类别提取出来建立新的漏洞关联关系图。
即,建立包含数独软件中的漏洞的关联关系子图,具体的建立步骤可参见前述实施例二中的对确定顶点、边以及边上的权值的说明。
由表2可知,新的漏洞关联关系图包含的漏洞类别为0、4、7、11、16共5类,对应漏洞类别为:缓冲区溢出、资源管理错误、数字错误、设计错误、竞争条件,其之间的关联度可通过前述实施例二中说明的方法计算得到,然后建立如图4所示的漏洞关联关系图。图4是根据图3所示漏洞构建的软件漏洞关联关系子图的示意图;如图4所示,序号4表示漏洞类别序号为4的漏洞,即:资源管理错误漏洞,以此类推。
步骤3.5:按照前述实施例二中的无向边赋权图核与核度计算公式计算可得图4所示的漏洞关联关系子图的核度h(x)=2.56,核点为序号7,即,数字错误漏洞,图4中浅灰色部分为核点及其相关边。
由此可知,在图4中,序号为7的漏洞为核心漏洞,也就是说,针对待分析软件(数独软件),其中的核心漏洞为数字错误漏洞。将数字错误漏洞所对应的Findbugs漏洞修复之后,总漏洞数由36降为34,而修复的漏洞数为1,也就是说,只需要修复一个核心漏洞,即可减少***中的两个漏洞,所以大大提高了漏洞的防护效率。
由上可知,本发明实施例的软件漏洞防护方法基于对已有大量软件漏洞分布情况的统计分析,对漏洞关联关系建模,并构建漏洞关联关系图。所建立的漏洞关联关系图中,顶点为来自漏洞数据库中的不同的漏洞类型,边定义为不同漏洞类别之间的联系,边上的权值代表各类漏洞之间关联关系的强弱。对漏洞关联关系进行分析时,从漏洞之间的比例关系入手,采用对数正态分布进行拟合和预测,从而获得描述漏洞类别之间关联关系的关联度描述函数。将核与核度理论应用于漏洞关联检测与防护提高了防护效率。
实施例四
图5是本发明一个实施例的一种软件漏洞的防护装置的框图,参见图5,该软件漏洞的防护装置50包括:
关联关系图构建单元501,用于获取多个样本软件的漏洞数据进行统计分析,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图;
核心漏洞确定单元502,用于根据一个软件的漏洞数据构建该漏洞关联关系图的漏洞关联关系子图,计算所述漏洞关联关系子图的核度并确定出该软件的核心漏洞;
漏洞防护单元503,用于修复核心漏洞,以实现对该软件的漏洞的防护。
在本发明的一个实施例中,关联关系图构建单元501具体用于按照预定的漏洞分类方法,对获取的每个样本软件的漏洞进行分类,得到每个样本软件上出现的漏洞的类别数据,对各类漏洞在各样本软件上的分布数据进行统计分析,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图。
在本发明的一个实施例中,关联关系图构建单元,用于根据每一类漏洞的类别构建漏洞关联关系图的顶点,根据顶点以及顶点对应的各类漏洞之间的关联度确定漏洞关联关系图的边和边上的权值。
在本发明的一个实施例中,关联关系图构建单元,具体用于通过如下公式(1)计算漏洞关联关系图中连接第一顶点和第二顶点的边的关联度,即权值w:
公式(1)中,n表示样本软件的总数量,f(i)表示样本软件i中第一顶点对应的漏洞类别和第二顶点对应的漏洞类别之间的带权契合概率;
带权契合概率f(i)通过如下公式(2)计算得到:
公式(2)中,f'(i)表示样本软件i中第一顶点对应的漏洞类别和第二顶点对应的漏洞类别之间的契合概率;
算式表示契合概率的权值,其中,Cia表示样本软件i中出现的第一顶点对应的A类漏洞的数量,Cib表示样本软件i中出现的第二顶点对应的B类漏洞的数量,表示在所有样本软件上出现的第一顶点对应的A类漏洞的总数量,表示在所有样本软件上出现的第二顶点对应的B类漏洞的总数量;
契合概率f'(i)通过如下公式(3)计算得到:
公式(3)中,取方差σ=1,取μ为第一顶点对应的漏洞类别和第二顶点对应的漏洞类别在所有样本软件中出现的总数量之比的对数,取x为第一顶点对应的漏洞类别和第二顶点对应的漏洞类别在样本软件i上出现的数量之比的对数。
在本发明的一个实施例中,关联关系图构建单元,用于对获取的每个样本软件的漏洞进行分类,得到每个样本软件上出现的漏洞的类别数据后,将每个样本软件上的漏洞类别与预设漏洞类别阈值进行比较,若小于或等于预设漏洞类别阈值,则在构建漏洞关联关系图时排除该样本软件,否则,在构建漏洞关联关系图时保留该样本软件;
以及,将计算出的第一顶点对应的漏洞类别和第二顶点对应的漏洞类别之间的关联度与预设关联度阈值进行比较,当计算出的关联度大于或等于预设关联度阈值时,确定第一顶点和第二顶点之间存在一条边。
在本发明的一个实施例中,关联关系图构建单元,按照漏洞威胁类型对获取的每个样本软件的漏洞进行分类,或者,按照漏洞利用位置对获取的每个样本软件的漏洞进行分类,或者,按照漏洞的权限提升动作对获取的每个样本软件的漏洞进行分类,或者,按照软件或者软件厂商对获取的每个样本软件的漏洞进行分类,或者,按照漏洞影响对获取的每个样本软件的漏洞进行分类。
在本发明的一个实施例中,核心漏洞确定单元,用于检测该软件的漏洞,并按照与构建漏洞关联关系图时采用的相同的漏洞分类方法对检测出的漏洞进行分类;从漏洞关联关系图中提取与分类得到的漏洞类别数据对应的顶点以及连接所述顶点的边得到基于漏洞类别数据构建的漏洞关联关系子图;根据漏洞关联关系子图计算关联关系子图的核度并确定出该软件的核心漏洞。
在本发明的一个实施例中,核心漏洞确定单元,具体用于通过如下公式(4)计算漏洞关联关系子图的核度:
h(G)=max{a*ω(G-S)-b*|S|+Ws,S∈C(G)}公式(4)
公式(4)中,h(G)为漏洞关联关系子图G的核度,C(G)表示G中所有点割集构成的集合,
参数a和b为常量,a=b=2*(Wg/|V(G)|),|V(G)|表示图G中的顶点总数,Wg表示图G中所有边上的权值的和;
参数Ws为变量,表示消除顶点集S后图中减少的边的总权重;
根据计算出的漏洞关联关系子图的核度可得漏洞关联关系子图的核,进而确定得到该软件的核心漏洞。在本发明的一个实施例中,漏洞防护单元在核心漏洞确定之后,通过修复核心漏洞以保证软件安全性。
需要说明的是,本实施例的软件漏洞的防护装置的工作过程是和前述软件漏洞的防护方法的工作步骤相对应的,因此,本实施例中未尽事项可参见前述方法实施例的说明,在此不再赘述。
综上,本发明实施例的软件漏洞防护方法和装置,基于对已知大量软件漏洞的统计分析,得到描述漏洞关联关系的漏洞关联关系图,并针对由不同类型漏洞和漏洞之间关联关系构建的漏洞关联关系图,重点分析不同类型漏洞之间的关联关系(这些关系中包括因果关系或共生关系),识别与其他漏洞具有较高关联度的漏洞从而确定出软件的核心漏洞,实现修复该单一核心漏洞即可实现一并修复与其关联的漏洞,提高漏洞的防护效率的有益效果,提高了软件的安全性,满足了实际需求。
以上所述,仅为本发明的具体实施方式,在本发明的上述教导下,本领域技术人员可以在上述实施例的基础上进行其他的改进或变形。本领域技术人员应该明白,上述的具体描述只是更好的解释本发明的目的,本发明的保护范围以权利要求的保护范围为准。
Claims (9)
1.一种软件漏洞的防护方法,其特征在于,包括:
获取多个样本软件的漏洞数据进行统计分析,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图;
根据一个软件的漏洞数据构建该漏洞关联关系图的漏洞关联关系子图,计算所述漏洞关联关系子图的核度并确定出该软件的核心漏洞;
修复所述核心漏洞,以实现对该软件的漏洞的防护;
所述漏洞关联关系图为无向边赋权图;
所述根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图包括:
根据每一类漏洞的类别构建漏洞关联关系图的顶点,根据顶点以及顶点对应的漏洞类别之间的关联度确定漏洞关联关系图的边和边上的权值;
采用对数正态分布来描述各类漏洞间的契合概率,通过契合概率确定漏洞类别之间的关联度。
2.根据权利要求1所述的方法,其特征在于,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图包括:
按照预定的漏洞分类方法,对获取的每个样本软件的漏洞进行分类,得到每个样本软件上出现的漏洞的类别数据,对各类漏洞在各样本软件上的分布数据进行统计分析,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图。
3.根据权利要求1所述的方法,其特征在于,根据顶点以及顶点对应的漏洞类别之间的关联度确定漏洞关联关系图的边和边上的权值包括:
通过如下公式(1)计算漏洞关联关系图中连接第一顶点和第二顶点的边的关联度,即权值w:
公式(1)中,n表示样本软件的总数量,f(i)表示样本软件i中第一顶点对应的漏洞类别和第二顶点对应的漏洞类别之间的带权契合概率;
带权契合概率f(i)通过如下公式(2)计算得到:
公式(2)中,f'(i)表示样本软件i中第一顶点对应的漏洞类别和第二顶点对应的漏洞类别之间的契合概率;
算式表示所述的契合概率的权值,其中,Cia表示样本软件i上出现的第一顶点对应的A类漏洞的数量,Cib表示样本软件i上出现的第二顶点对应的B类漏洞的数量,表示在所有样本软件上出现的第一顶点对应的A类漏洞的总数量,表示在所有样本软件上出现的第二顶点对应的B类漏洞的总数量;
契合概率f'(i)通过如下公式(3)计算得到:
公式(3)中,取方差σ=1,取μ为第一顶点对应的漏洞类别和第二顶点对应的漏洞类别在所有样本软件上出现的总数量之比的对数,取x为第一顶点对应的漏洞类别和第二顶点对应的漏洞类别在样本软件i上出现的数量之比的对数。
4.根据权利要求3所述的方法,其特征在于,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图包括:
对获取的每个样本软件的漏洞进行分类,得到每个样本软件上出现的漏洞的类别数据后,将每个样本软件上的漏洞类别与预设漏洞类别阈值进行比较,若小于或等于预设漏洞类别阈值,则在构建漏洞关联关系图时排除该样本软件;
根据顶点以及顶点对应的漏洞类别之间的关联度确定漏洞关联关系图的边包括:
将计算出的第一顶点对应的漏洞类别和第二顶点对应的漏洞类别之间的关联度与预设关联度阈值进行比较,当计算出的关联度大于或等于预设关联度阈值时,确定第一顶点和第二顶点之间存在一条边。
5.根据权利要求2所述的方法,其特征在于,按照预定的漏洞分类方法,对获取的每个样本软件的漏洞进行分类包括:
按照漏洞威胁类型对获取的每个样本软件的漏洞进行分类,
或者,按照漏洞利用位置对获取的每个样本软件的漏洞进行分类,
或者,按照漏洞的权限提升动作对获取的每个样本软件的漏洞进行分类,或者,按照软件或者软件厂商对获取的每个样本软件的漏洞进行分类,
或者,按照漏洞影响对获取的每个样本软件的漏洞进行分类。
6.根据权利要求3所述的方法,其特征在于,根据一个软件的漏洞数据构建该漏洞关联关系图的漏洞关联关系子图,计算所述漏洞关联关系子图的核度并确定出该软件的核心漏洞包括:
检测该软件的漏洞,并按照与构建漏洞关联关系图时采用的相同的漏洞分类方法对检测出的该软件的漏洞进行分类;
从所述漏洞关联关系图中提取与分类得到的漏洞类别数据对应的顶点以及连接所述顶点的边,得到基于所述漏洞类别数据构建的漏洞关联关系子图;
根据漏洞关联关系子图计算漏洞关联关系子图的核度,并确定出该软件的核心漏洞。
7.根据权利要求6所述的方法,其特征在于,根据漏洞关联关系子图计算漏洞关联关系子图的核度并确定出该软件的核心漏洞包括:
通过如下公式(4)计算漏洞关联关系子图的核度:
h(G)=max{a*ω(G-S)-b*|S|+Ws,S∈C(G)} 公式(4)
公式(4)中,h(G)为漏洞关联关系子图G的核度,C(G)表示G中所有点割集构成的集合,
参数a和b为常量,a=b=2*(Wg/|V(G)|),|V(G)|表示漏洞关联关系子图G中的顶点总数,Wg表示图G中所有边上的权值的和,ω(G-S)表示图G去掉割集S后的分支数;
参数Ws为变量,表示消除顶点集S后漏洞关联关系子图中减少的边的总权重;
根据计算出的漏洞关联关系子图的核度可得漏洞关联关系子图的核,进而确定得到该软件的核心漏洞。
8.一种软件漏洞的防护装置,其特征在于,包括:
关联关系图构建单元,用于获取多个样本软件的漏洞数据进行统计分析,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图;
核心漏洞确定单元,用于根据一个软件的漏洞数据构建该漏洞关联关系图的漏洞关联关系子图,计算所述漏洞关联关系子图的核度并确定出该软件的核心漏洞;
漏洞防护单元,用于修复所述核心漏洞,以实现对该软件的漏洞的防护;
所述漏洞关联关系图为无向边赋权图;
所述关联关系图构建单元,用于根据每一类漏洞的类别构建漏洞关联关系图的顶点,根据顶点以及顶点对应的各类漏洞之间的关联度确定漏洞关联关系图的边和边上的权值;
采用对数正态分布来描述各类漏洞间的契合概率,通过契合概率确定漏洞类别之间的关联度。
9.根据权利要求8所述的装置,其特征在于,所述关联关系图构建单元包括具体用于按照预定的漏洞分类方法,对获取的每个样本软件的漏洞进行分类,得到每个样本软件上出现的漏洞的类别数据,对各类漏洞在各样本软件上的分布数据进行统计分析,根据统计分析结果采用对数正态分布描述漏洞类别之间的关联关系并构建漏洞关联关系图。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710121268.4A CN106991325B (zh) | 2017-03-02 | 2017-03-02 | 一种软件漏洞的防护方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710121268.4A CN106991325B (zh) | 2017-03-02 | 2017-03-02 | 一种软件漏洞的防护方法和装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106991325A CN106991325A (zh) | 2017-07-28 |
CN106991325B true CN106991325B (zh) | 2020-10-02 |
Family
ID=59412635
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710121268.4A Active CN106991325B (zh) | 2017-03-02 | 2017-03-02 | 一种软件漏洞的防护方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106991325B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107566376B (zh) * | 2017-09-11 | 2020-05-05 | 中国信息安全测评中心 | 一种威胁情报生成方法、装置及*** |
CN107526971A (zh) * | 2017-09-28 | 2017-12-29 | 北京计算机技术及应用研究所 | 一种基于漏洞关联分布模型的漏洞发现方法 |
CN107844705B (zh) * | 2017-11-14 | 2021-04-02 | 苏州棱镜七彩信息科技有限公司 | 基于二进制代码特征的第三方组件漏洞检测方法 |
CN110287704B (zh) * | 2019-06-25 | 2021-03-26 | 北京中科微澜科技有限公司 | 一种基于漏洞图谱的漏洞软件依赖关系构建方法 |
CN110263566B (zh) * | 2019-06-29 | 2020-12-22 | 西安交通大学 | 一种海量日志提权行为检测及分类方法 |
US11729222B2 (en) * | 2019-07-12 | 2023-08-15 | Palo Alto Research Center Incorporated | System and method for extracting configuration-related information for reasoning about the security and functionality of a composed internet of things system |
US11930046B2 (en) | 2021-06-17 | 2024-03-12 | Xerox Corporation | System and method for determining vulnerability metrics for graph-based configuration security |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150047044A1 (en) * | 2013-08-06 | 2015-02-12 | Medknex Software, Llc | System and methods for protecting and using digital data |
CN105046155A (zh) * | 2015-06-24 | 2015-11-11 | 北京***工程研究所 | 软件***漏洞风险评估方法及装置 |
US20160188882A1 (en) * | 2014-12-24 | 2016-06-30 | Hesham MAHROUS | Software nomenclature system for security vulnerability management |
CN105991521A (zh) * | 2015-01-30 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 网络风险评估方法和装置 |
-
2017
- 2017-03-02 CN CN201710121268.4A patent/CN106991325B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20150047044A1 (en) * | 2013-08-06 | 2015-02-12 | Medknex Software, Llc | System and methods for protecting and using digital data |
US20160188882A1 (en) * | 2014-12-24 | 2016-06-30 | Hesham MAHROUS | Software nomenclature system for security vulnerability management |
CN105991521A (zh) * | 2015-01-30 | 2016-10-05 | 阿里巴巴集团控股有限公司 | 网络风险评估方法和装置 |
CN105046155A (zh) * | 2015-06-24 | 2015-11-11 | 北京***工程研究所 | 软件***漏洞风险评估方法及装置 |
Non-Patent Citations (2)
Title |
---|
《基于关联关系的漏洞评估技术研究》;刘平平;《中国优秀硕士学位论文全文数据库信息科技辑》;20150815;第15-56页 * |
《***核度力量在核心竞争力识别中的应用》;黄璐艳;《中国优秀硕士学位论文全文数据库经济与管理科学辑》;20070915;第1-53页 * |
Also Published As
Publication number | Publication date |
---|---|
CN106991325A (zh) | 2017-07-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106991325B (zh) | 一种软件漏洞的防护方法和装置 | |
CN109933984B (zh) | 一种最佳聚类结果筛选方法、装置和电子设备 | |
CN108268777B (zh) | 一种利用补丁信息进行未知漏洞发现的相似性检测方法 | |
RU2708356C1 (ru) | Система и способ двухэтапной классификации файлов | |
CN111639337B (zh) | 一种面向海量Windows软件的未知恶意代码检测方法及*** | |
CN106503558A (zh) | 一种基于社团结构分析的Android恶意代码检测方法 | |
CN109871688B (zh) | 漏洞威胁程度评估方法 | |
WO2017152877A1 (zh) | 网络威胁事件评估方法及装置 | |
EP3968197A1 (en) | Method and system for detecting malicious files in a non-isolated environment | |
CN110633211A (zh) | 对于多接口的测试方法、装置、服务器及介质 | |
RU2587429C2 (ru) | Система и способ оценки надежности правила категоризации | |
US20220279045A1 (en) | Global iterative clustering algorithm to model entities' behaviors and detect anomalies | |
US10929531B1 (en) | Automated scoring of intra-sample sections for malware detection | |
CN115098292B (zh) | 应用程序崩溃根原因识别方法、装置及电子设备 | |
CN108170467A (zh) | 约束限定聚类和信息度量软件胎记特征选择方法、计算机 | |
CN114036531A (zh) | 一种基于多尺度代码度量的软件安全漏洞检测方法 | |
Vadrevu et al. | Maxs: Scaling malware execution with sequential multi-hypothesis testing | |
CN110598959A (zh) | 一种资产风险评估方法、装置、电子设备及存储介质 | |
WO2023035362A1 (zh) | 用于模型训练的污染样本数据的检测方法及装置 | |
Hu et al. | Interpreters for GNN-based vulnerability detection: Are we there yet? | |
CN113127864A (zh) | 特征码提取方法、装置、计算机设备和可读存储介质 | |
Cheers et al. | A novel approach for detecting logic similarity in plagiarised source code | |
CN111368128A (zh) | 目标图片的识别方法、装置和计算机可读存储介质 | |
CN114710344B (zh) | 一种基于溯源图的入侵检测方法 | |
CN110990834A (zh) | 一种android恶意软件的静态检测方法、***及介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |