掌桥专利:专业的专利平台
掌桥专利
首页

基于社区发现算法的CWE划分方法、设备及存储介质

文献发布时间:2023-06-19 19:30:30


基于社区发现算法的CWE划分方法、设备及存储介质

技术领域

本发明涉及计算机网络安全技术领域,具体涉及一种基于社区发现算法的CWE划分方法、设备及存储介质。

背景技术

CWE(Common Weakness Enumeration)是一种软件和硬件漏洞脆弱性描述标准。如何对漏洞的脆弱性进行分类一直以来是业界的难点问题。分类太细,会导致可读性差;分类太粗,则分析结果准确率和召回率都会随之下降。

目前业界对于漏洞分类的解决方案,绝大多数是以CWE标准为基础,通过人工筛选的方式,选择一些典型CWE作为自己分类的标准。图1是现有技术中选取典型CWE作为分类标准的示意图。如图1所示,CNNVD(是中国国家信息安全漏洞库)标准选取了26个CWE作为漏洞脆弱性分类类别,并以“树”的形式将其分为五个层次。CWE官方每年也有CWE Top 25的分类,代表过去两年最常见和影响最严重的CWE列表,这些漏洞通常很容易被发现和利用,CWETop 25分类可以有效地帮助开发人员、安全研究院、测试人员等深入了解当前最严重的安全漏洞。CWE Most Important Hardware Weaknesses分类标准,包含了12个当前CWE最重要的硬件弱点列表,对硬件设计师、教育工作者等有很重要的借鉴意义。诸如此类基于CWE标准的分类方式还有很多,不再一一举例。

现有分类方式虽然大幅提高了CWE标准的可读性,但也牺牲了漏洞脆弱性分类给漏洞情报分析带来的收益。比如在做某一组件的历史漏洞原因分析时,使用对CWE分类方式进行分析,可以清晰准确的看到组件的脆弱性分布图,并能够进行“未知漏洞预测”、“漏洞成因趋势发展”等项目研究。但使用现有技术中的分类方式,则无法构建清晰的脆弱性分布图,主要原因是因为脆弱性划分太粗导致的数据密度过大,无法进行有效识别和判断。

发明内容

为了解决现有技术中的上述问题,本发明提出了一种基于社区发现算法的CWE划分方法、设备及存储介质,提高了漏洞脆弱性分类给漏洞情报分析带来的收益。

本发明的第一方面,提出一种基于社区发现算法的CWE划分方法,所述方法包括:

根据不同CWE之间的关系构建知识图谱;

将所述知识图谱中的每个CWE单独划分到一个社区;

采用基于模块度的社区发现算法将社区进行逐步合并,直到所述模块度不再增大,得到最终划分好的CWE社区。

优选地,所述根据不同CWE之间的关系构建知识图谱,包括:

根据每个CWE描述文件中Related_Weaknesses字段所描述的该CWE与其他CWE之间的关系,构建知识图谱;

将两个互连CWE之间的关系权重设置为1;

其中,

所述知识图谱中的实体包括:CWE;

所述知识图谱中的实体关系包括:上下级。

优选地,所述知识图谱中的实体关系还包括:需要、同属、提前于、近似和起始于。

优选地,所述根据不同CWE之间的关系构建知识图谱,包括:

根据每个CWE描述文件中Related_Weaknesses字段所描述的该CWE与其他CWE之间的关系,以及CAPEC描述文件中Consequence字段所描述的攻击收益与CWE编号之间的对应关系,构建知识图谱;

统计每个CWE带来的攻击收益,并计算每个CWE的平均攻击收益;

将两个互连CWE之间的关系权重设置为这两个CWE的平均攻击收益差值的绝对值;

其中,

所述知识图谱中的实体包括:CWE和CAPEC;

所述知识图谱中的实体关系包括:每个CWE与所述其他CWE之间的关系,以及每个CWE与CAPEC的关系;

所述知识图谱中CWE之间的关系包括:上下级、需要、同属、提前于、近似和起始于。

优选地,所述知识图谱中CWE的属性包括:名称和CWE的英文描述;

所述知识图谱中CAPEC的属性包括:名称和攻击收益;

所述CWE之间的关系的属性包括:攻击收益差值;

所述知识图谱中CWE与CAPEC之间的关系包括:使用关系;

所述CWE与CAPEC之间的关系的属性包括:使用该CWE的CAPEC的名称。

优选地,所述采用基于模块度的社区发现算法将社区进行逐步合并,直到所述模块度不再增大,得到最终划分好的CWE社区,包括:

针对所述知识图谱中的每个社区,依次尝试把该社区合并到各相邻社区,并计算合并前后模块度的变化量,取其中最大变化量,若所述最大变化量大于零,则把该社区合并到所述最大变化量对应的所述相邻社区中,否则该社区和所述相邻社区均保持不变;

更新社区数量,并重复执行社区合并操作,直到所述模块度不再增大,得到最终划分好的CWE社区。

优选地,将所述知识图谱中每个CWE视为一个节点,将两个互连的CWE之间的连线视为一条边,根据下式计算所述模块度:

其中,M表示所述知识图谱中的社区数量,c表示社区的序号,e

优选地,所述统计每个CWE带来的攻击收益,并计算每个CWE的平均攻击收益,包括:

针对每个CWE,统计使用该CWE的所有CAPEC所描述的攻击收益个数得到该CWE带来的攻击收益总数,将所述攻击收益总数除以使用该CWE的所有CAPEC的个数,得到该CWE的所述平均攻击收益。

本发明的第二方面,提出一种处理设备,包括存储器和处理器,所述存储器上存储有能够被所述处理器加载并执行如上面所述方法的计算机程序。

本发明的第三方面,提出一种计算机可读存储介质,存储有能够被处理器加载并执行如上面所述方法的计算机程序。

与最接近的现有技术相比,本发明具有如下有益效果:

本发明根据CWE之间的关系构建知识图谱,并基于社区发现算法对CWE进行划分,克服了现有技术中因为划分太粗导致的数据密度过大,无法进行有效识别和判断的问题。另外,本发明还提出构建CAPEC和CWE联合知识图谱,计算每个CWE的平均攻击收益,将两个互联CWE之间的关系权重设置为两个CWE平均攻击收益的差值的绝对值,从而对图谱中的边的权重进行了优化,基于此权重再对CWE使用社区发现算法进行社区划分,大幅度提高了漏洞脆弱性分类给漏洞情报分析带来的收益。

附图说明

图1是现有技术中选取典型CWE作为分类标准的示意图;

图2是本发明的基于社区发现算法的CWE划分方法实施例一的主要步骤示意图;

图3是本发明的基于社区发现算法的CWE划分方法实施例二和三的主要步骤示意图;

图4(a)是本发明实施例二和三中未经过社区合并的知识图谱的示意图;

图4(b)是本发明实施例中二和三经过初步的社区合并以后得到的社区划分示意图;

图4(c)是本发明实施例二和三中经过进一步社区合并以后得到的最终社区划分示意图;

图5是本发明的基于社区发现算法的CWE划分方法实施例四的主要步骤示意图;

图6是本发明实施例四中构建好的CWE和CAPEC联合知识图谱的示意图。

具体实施方式

下面参照附图来描述本发明的优选实施方式。本领域技术人员应当理解的是,这些实施方式仅用于解释本发明的技术原理,并非旨在限制本发明的保护范围。

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于本申请的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在本发明的描述中,术语“第一”、“第二”仅仅是为了便于描述,而不是指示或暗示所述装置、元件或参数的相对重要性,因此不能理解为对本发明的限制。另外,本发明中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,如无特殊说明,一般表示前后关联对象是一种“或”的关系。

本发明尝试从攻击收益角度,利用知识图谱构建CWE及其内部关系,并基于该图谱对CWE进行社区划分。

图2是本发明的基于社区发现算法的CWE划分方法实施例一的主要步骤示意图。如图2所示,本实施例的方法包括步骤A10-A30:

步骤A10,根据不同CWE之间的关系构建知识图谱。

步骤A20,将知识图谱中的每个CWE单独划分到一个社区。

步骤A30,采用基于模块度的社区发现算法将社区进行逐步合并,直到模块度不再增大,得到最终划分好的CWE社区。

图3是本发明的基于社区发现算法的CWE划分方法实施例二的主要步骤示意图。如图3所示,本实施例的方法包括步骤B10-B40:

步骤B10,根据每个CWE描述文件中Related_Weaknesses字段所描述的该CWE与其他CWE之间的关系,构建知识图谱。

其中,知识图谱中的实体包括CWE;知识图谱中的实体关系包括:上下级。

在“Research Concepts”视图中,CWE的描述文件采用的是xml格式,在“Related_Weaknesses”字段中描述了该CWE与其他CWE之间的关系,如下面的例子所示:

由上述字段描述可知,CWE-1007是CWE-451的子类漏洞,即两者之间存在上下级关系(ChildOf)。

CWE标准中的上下级关系(ChildOf)中,上级与下级之间的关联是可以视为强关联关系的,但同属一个上级的下属之间绝大多数是没有关联关系的,而如表1所示,CWE标准中关联关系占比最大的恰恰是上下级关系:

表1 CWE实体之间的关系名称和对应的数量

在漏洞脆弱性概念研究中,如果想对CWE进行划分,则必须要保证划分到同一类的CWE在某一场景中(如攻击、溯源、告警分类等)不同的CWE之间具有漏洞脆弱类型相似性和连通性,只有这样才能保证在后续的研究过程中,具有应用意义。

步骤B20,将两个互连CWE之间的关系权重设置为1。

步骤B30,将知识图谱中的每个CWE单独划分到一个社区。

假设当前的知识图谱中共有N个CWE实体,则社区个数M的初始值为N。例如,图4(a)是本实施例中构建好的知识图谱的示意图。如图4(a)所示的知识图谱中共有16个CWE实体,小圆圈表示CWE实体,两个圆圈之间的连线表示实体之间的关系。将每个CWE单独划分到一个社区,设定社区序号为0~15。

步骤B40,采用基于模块度的社区发现算法将社区进行逐步合并,直到模块度不再增大,得到最终划分好的CWE社区。该步骤可以具体包括步骤B41-B42:

步骤B41,针对知识图谱中的每个社区,依次尝试把该社区合并到各相邻社区,并计算合并前后模块度的变化量,取其中最大变化量,若最大变化量大于零,则把该社区合并到该最大变化量对应的相邻社区中,否则该社区和相邻社区均保持不变。

具体地,该步骤可以包括步骤B411-B413:

步骤B411,取m=0,m为知识图谱中的社区序号;

步骤B412,依次尝试把社区m合并到与该社区相连的各相邻社区,并计算合并前后模块度的变化量,取其中最大变化量,若最大变化量大于零,则把社区m合并到最大变化量对应的相邻社区中,否则社区m和相邻社区均保持不变。

例如,社区m的相邻社区有3个,分别为社区b1、社区b2和社区b3。先尝试把社区m合并到社区b1中,计算合并前后模块度的变化量

步骤B413,m=m+1;若m

例如,图4(a)中的16个社区经过步骤B411-B413的初步合并之后,就划分为如图4(b)中所示用虚线椭圆圈出的4个社区。

步骤B42,更新社区数量M(社区序号也一并更新),并转至步骤B41继续执行社区合并操作,直到模块度不再增大,得到最终划分好的CWE社区。

上面图4(b)中的4个社区,经过进一步合并以后,模块度不再增大,最终得到2个CWE社区,如图4(c)中所示用虚线椭圆圈出的2个社区。在实际应用中,CWE的数量很多,因此,需要多次重复执行步骤B41,直到模块度不再增大。

本实施例中,将知识图谱中每个CWE视为一个节点,将两个互连的CWE之间的连线视为一条边,根据下面的公式(1)计算模块度Q:

其中,M表示知识图谱中的社区数量,c表示社区的序号,e

从公式(1)可以看出,想要得到最大的模块度,就要通过合并社区来尽可能增大e

本发明还提供了基于社区发现算法的CWE划分方法实施例三。本实施例的主要步骤与上面的实施例二完全相同,因此,仍可以参考图3的主要步骤示意图。差别只在于:本实施例在步骤B10构建的知识图谱中,实体关系除了包括上下级关系(ChildOf),还包括:Requires(需要)、PeerOf(同属)、CanPrecede(提前于)、CanAlsoBe(近似)和StartsWith(起始于)等,以便全面考虑CWE实体之间的各种关系。

上述实施例二和三中,为了计算简便,各CWE之间的关系权重均设置为1。但是,在漏洞研究、网络安全情报分析等领域,更关心的是漏洞在“利用方式”、“攻击收益”等与实战贴近的属性的相似度。攻击收益是指漏洞利用成功后具体会造成哪一种影响,如窃取用户名密码、远程执行操作系统命令、提取权限、读取数据、修改数据和访问控制等。因此,本发明在下面的实施例四中,构建CWE和CAPEC联合知识图谱,并将两个互连CWE之间的关系权重设置为两个CWE平均攻击收益的差值的绝对值(因为社区发现算法对应的是无向图),如此图谱中的边的权重便有了意义,代表两个CWE的攻击收益的差异性,基于此权重再对CWE使用社区发现算法进行社区划分。

图5是本发明的基于社区发现算法的CWE划分方法实施例四的主要步骤示意图。如图5所示,本实施例的方法包括步骤C10-C50:

步骤C10,根据每个CWE描述文件中Related_Weaknesses字段所描述的该CWE与其他CWE之间的关系,以及CAPEC描述文件中Consequence字段所描述的攻击收益与CWE编号之间的对应关系,构建知识图谱。

CAPEC是漏洞攻击类型和收益的标准分类数据集,在CAPEC标准中,字段“Consequence”代表了其攻击收益,其仍旧是xml格式的文件。例如,对于ID为101的CAPEC来说,有多种攻击收益(对应多个Consequence标签),其中一种是Read Data(读取数据),其对应的CWE的编号为20、74、97,如下面的描述所示:

本实例中,知识图谱中的实体包括:CWE和CAPEC;知识图谱中的实体关系包括:每个CWE与其他CWE之间的关系,以及每个CWE与CAPEC的关系;知识图谱中CWE之间的关系包括:ChildOf(上下级关系)、Requires(需要)、PeerOf(同属)、CanPrecede(提前于)、CanAlsoBe(近似)和StartsWith(起始于);知识图谱中CWE的属性包括:名称和CWE的英文描述;知识图谱中CAPEC的属性包括:名称和攻击收益;CWE之间的关系的属性包括:攻击收益差值;知识图谱中CWE与CAPEC之间的关系包括:UsedBy(使用关系);CWE与CAPEC之间的关系的属性包括:使用该CWE的CAPEC的名称。

本实施例中,知识图谱中实体和关系以及其对应的属性如下面表2所示:

表2 CWE、CAPEC知识图谱中的实体、关系、属性对应表

构建好的CWE和CAPEC联合知识图谱如图6所示,大圆圈表示CAPEC实体,小圆圈表示CWE实体,两个圆圈之间的连线表示实体之间的关系。

步骤C20,统计每个CWE带来的攻击收益,并计算每个CWE的平均攻击收益。

具体地,针对每个CWE执行如下操作:统计使用该CWE的所有CAPEC所描述的攻击收益个数得到该CWE带来的攻击收益总数,将攻击收益总数除以使用该CWE的所有CAPEC的个数,得到该CWE的平均攻击收益。

例如,某个CWE被3个CAPEC使用,这3个CAPEC的描述文件中所描述的攻击收益个数分别为4、5和3,则这个CWE带来的攻击收益总数为4+5+3=12,该CWE的平均攻击收益为12/3=4。

步骤C30,将两个互连CWE之间的关系权重设置为这两个CWE的平均攻击收益差值的绝对值。

例如,两个互连CWE中,一个CWE的平均攻击收益为4,另一个CWE的平均攻击收益为6,则这两个互连CWE之间的关系权重设置为2。

步骤C40,将知识图谱中的每个CWE单独划分到一个社区。

步骤C50,采用基于模块度的社区发现算法将社区进行逐步合并,直到模块度不再增大,得到最终划分好的CWE社区。具体划分方法与实施例二中步骤B40相同,此处不再赘述。

上述实施例中虽然将各个步骤按照上述先后次序的方式进行了描述,但是本领域技术人员可以理解,为了实现本实施例的效果,不同的步骤之间不必按照这样的次序执行,其可以同时(并行)执行或以颠倒的次序执行,这些简单的变化都在本发明的保护范围之内。

为了验证本发明提出的CWE社区划分方法,发明人还进行了测试。大致步骤为:收集数据集;构建知识图谱;利用构建的知识图谱,使用基于模块度的发现算法对CWE进行社区划分;利用数据集对构建的社区进行评价。

在互联网范围内存在大量社区、论坛发布的漏洞分析文章,其中就包含有利用方式、攻击收益等信息。我们筛选了9000+相关文章,并对每一篇文章中提到的漏洞脆弱类型进行统计,然后以CAPEC标准中表述的攻击收益为基础样本,对文章中包含的攻击收益数据进行实体识别。集合CWE与CAPEC的原有关联关系,与文章中识别出的CWE对应的攻击收益,通过对所有CWE的攻击收益有向图使提取特征(密度、分布状态、距离参数等),进行聚类,可以从“攻击收益”相似性这个角度对收集的文章进行划分,从攻击收益角度出发,同一篇文章对应的CWE理应在同一个社区,以此为基准得到测试集。

利用CWE和CAPEC标准构建数据集,并以此使用社区划分算法对CWE进行社区划分,得到了模块度大于0.7(一般认为模块度在0.3~0.7之间即可表明社区稳定,模块度越大社区越稳定)的社区划分实践。

对划分的社区进行评价:(1)为保证划分的社区中,同一社区的漏洞具备高度的概念相似性,所以仅使用“ChildOf”关系作为连接边,但发现,会有孤岛节点的存在,且召回率和精确率都并不算高。(2)将CWE之间的全部关系作为连接边,发现精确率有所提高,但召回率提高不明显;(3)利用社区划分算法对构建的基于攻击收益的知识图谱,给图谱中的边赋予一定权重,对CWE进行社区划分,最终得到了一个将所有CWE划分为19类的CWE划分模型。划分出的社区,在各项测试中均表现良好如下表3所示:

表3不同的划分方法的结果对照表

进一步地,基于上面的CWE社区划分方法,本发明还提供了一种处理设备的实施例。本实施例中的处理设备包括存储器和处理器,所述存储器上存储有能够被所述处理器加载并执行如上面所述方法的计算机程序。

更进一步地,本发明还提供了一种计算机可读存储介质的实施例。本实施例的存储介质中存储有能够被处理器加载并执行如上面所述方法的计算机程序。

所述计算机可读存储介质例如包括:U盘、移动硬盘、只读存储器(Read-OnlyMemory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本领域技术人员应该能够意识到,结合本文中所公开的实施例描述的各示例的方法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明电子硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以电子硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。本领域技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

至此,已经结合附图所示的优选实施方式描述了本发明的技术方案。但是,本领域技术人员容易理解的是,本发明的保护范围显然不局限于这些具体实施方式。在不偏离本发明的原理的前提下,本领域技术人员可以对相关技术特征做出等同的更改或替换,这些更改或替换之后的技术方案都将落入本发明的保护范围之内。

相关技术
  • 基于go语言的算法保护方法、装置、设备及存储介质
  • 基于遗传算法的适配装箱方法、装置、设备和存储介质
  • 一种网格划分方法、计算机可读存储介质及终端设备
  • 一种网格划分方法、计算机可读存储介质及终端设备
  • 基于Louvain算法的社区发现方法、计算机设备及其可读存储介质
  • 基于B树的重叠社区发现方法、装置、设备及存储介质
技术分类

06120115929193