欢迎来到知嘟嘟! 联系电话:13336804447 卖家免费入驻,海量在线求购! 卖家免费入驻,海量在线求购!
知嘟嘟
我要发布
联系电话:13336804447
知嘟嘟经纪人
收藏
专利号: 2019112124794
申请人: 西安工业大学
专利类型:发明专利
专利状态:已下证
专利领域: 计算;推算;计数
更新日期:2024-01-05
缴费截止日期: 暂无
价格&联系人
年费信息
委托购买

摘要:

权利要求书:

1.一种面向源代码双极性软件安全漏洞图谱的构建方法,其特征在于,包括有如下步骤:(1)漏洞源代码获取:将国家安全漏洞库NVD中的漏洞源代码通过爬虫的方式下载并获取到漏洞源代码的数据,该数据包括漏洞代码和补丁代码,将获取到的漏洞源代码数据存储在本地漏洞源代码仓库;

(2)数据预处理:将漏洞源代码数据通过自然语言预处理NLP技术,剔除其中无用信息和干扰信息,得到预处理数据;

(3)数据分析提取与抽取:对预处理数据依次进行特征提取,实体抽取,关系抽取;经特征提取,得到漏洞源代码的根节点分类,根节点是以CWE-编号进行分类,在根节点分类中以CVE-编号为子节点;经实体抽取,得到了漏洞源代码的实体,其中包括漏洞实体和补丁实体,每个实体为一个节点;经过关系抽取,得到漏洞源代码中实体和实体之间的关系,其中包括控制依赖、数据流依赖、赋值传参、引用传参、声明依赖和函数调用依赖,任意两实体间关系为一条边;

(4)漏洞图谱构建:以漏洞源代码中的所有实体集合为节点集,实体和实体的关系的所有集合为边集,构建生成面向源代码双极性软件安全漏洞图谱;漏洞图谱中实线表示漏洞的节点和节点关系,虚线表示补丁的节点和节点的关系,漏洞图谱将漏洞的正向特征和反向特征表现出来;生成的漏洞图谱存储在Neo4j数据库中;所述漏洞图谱由许多个子图构成,子图是以漏洞补丁代码增减位置为出发点,以CVE-编号构成的漏洞图谱基本单元,通过CWE-编号将其中所有子图连接构成完整的漏洞图谱;

(5)漏洞图谱优化:通过优化公式逐一计算判断每一子图的超图得分上限值,对子图剪枝进行漏洞图谱优化,按照同样的方法遍历漏洞图谱的所有子图,完成漏洞图谱整体优化。

2.根据权利要求1所述的面向源代码双极性软件安全漏洞图谱的构建方法,其特征在于,步骤(3)中所述的数据分析提取与抽取,包括如下步骤:

3.1)特征提取

特征提取的漏洞源代码包括漏洞代码和补丁代码,将预处理数据经文本挖掘的方法同时进行特征提取;得到以CWE-编号为根节点,CVE-编号为子节点的树形分类。

3.2)实体抽取

实体抽取又称为命名实体识别,实体识别分为三类,其中包括节点类型,语句和属性;

在实体抽取的过程中,以漏洞补丁代码增减位置为出发点,每一行代码为一条语句,进行实体识别,遍历循环出发点的定义,得到整个漏洞代码和补丁代码中的节点类型、语句和属性;

3.3)关系抽取

定义数据依赖、控制依赖、赋值传参、引用传参、声明依赖和函数调用依赖的关系;按照定义逐一对每个实体进行关系抽取,遍历循环整个实体,得到实体和实体之间的关系。

3.根据权利要求1所述的面向源代码双极性软件安全漏洞图谱的构建方法,其特征在于,步骤(4)中所述的漏洞图谱构建,包括如下步骤:

4.1)子图为漏洞图谱的基本单元

子图是以补丁代码增减位置为出发点,以CVE-编号为依据构成的单元,子图中包括超图,超图就是每一个边可以包含两个以上的点所构成的图;

在子图中节点之间的关系可以是一对多,也可以是多对多的关系,不同形状的箭头来表示节点和节点的关系;

子图和子图中通过CWE-编号构成完整的漏洞图谱,G=g1∪g2∪…∪gn表示N个子图所构成的漏洞图谱,其中gn为第n个子图,n为任意子图的序号,N为子图的总数,n取值范围为正整数,即n∈N+。

4.2)定义点集、边集和图

将实体抽取得到了所有点构成点集,用V表示,将关系抽取得到的所有边构成边集用E表示,漏洞图谱用G表示,漏洞图谱中的子图用g表示,漏洞图谱表示为G=(V,E);

4.3)循环遍历子图

以漏洞补丁增减位置为出发点,此时 last=NULL;执行路径中的每一条语句记为s;循环遍历得到点的集合为:V(g)=V(g)∪{s},边的集合为:E(g)=E(g)∪{},一直循环直到last=s,结束循环;

4.4)漏洞图谱可视化及存储

通过Python调用Graphviz库可视化生成漏洞图谱子图,漏洞图谱中用不同形状的箭头表示节点和节点的关系,实线代表漏洞节点和节点间的关系,虚线表示补丁节点和节点的关系,通过对比的方式将漏洞的正向特征和反向特征表现出来,体现特征项之间错综的复杂关系,生成的图谱存放在Neo4j数据库中。

4.根据权利要求1所述的面向源代码双极性软件安全漏洞图谱的构建方法,其特征在于,步骤(5)中漏洞图谱优化,包括如下步骤:

5.1)对子图进行剪枝判断处理:通过优化公式对漏洞图谱中的子图的超图得分上限值进行判断,对超过得分上限值部分进行剪枝,未超过得分上限值予以保留;完成子图的优化处理;

5.2)对所有子图执行优化处理:逐一判断其他子图,对漏洞图谱中其他子图按照上述同样方法逐一进行判断和剪枝,完成所有子图,即漏洞图谱的优化处理,得到G=g1∪g2∪…∪gn。

5.根据权利要求4所述的面向源代码双极性软件安全漏洞图谱的构建方法,其特征在于,步骤(5)中所述的优化公式,计算公式如下:其中,GPass表示成功的测试超图用例图,Gfail表示失败的测试超图用例图, 表示边在成功测试超图用例图GPass中出现的频率均值, 表示边在失败测试超图用例图Gfail中出现的频率均值, 表示边在成功测试超图用例图GPass中出现的频率方差, 表示边在失败测试超图用例图Gfail中出现的频率方差;

对任何某一子图g,在子图的超图在GPass中出现的次数大于等于零,且小于等于子图g在GPass中出现的次数和在Gfail中出现的次数大于等于零,且小于等于子图g在Gfail中出现的次数的情况下,均属于子图的超图的得分具有一个上限值,需要对该上限值进行剪枝。