一种基于知识图谱的软件漏洞可利用性预测方法与流程

文档序号:30580799发布日期:2022-06-29 12:04阅读:258来源:国知局
一种基于知识图谱的软件漏洞可利用性预测方法与流程

1.本发明涉及网络安全技术领域,尤其是指一种基于知识图谱的软件漏洞可利用性预测方法。


背景技术:

2.软件漏洞的存在使得计算机信息系统的运行存在着诸多安全隐患,在当前的互联网环境下,安全问题显得尤为重要。对于每天公布的众多软件漏洞,计算机信息系统运维人员如何针对公布的软件漏洞进行漏洞维护优化是一个重点和难点问题。而这些被公布的软件漏洞中,也并非所有的软件漏洞都能够被利用至进行违法行为,信息系统运维人员可以对能够被利用的软件漏洞进行筛选,并对其优先处理,从而有效降低网络安全风险。而现有技术中存在对于软件漏洞可利用性预测方法,现有的预测方法在一定程度上可以进行软件漏洞可利用性预测,但该类方法只是考虑了漏洞描述文本中的词频等信息,未考虑词与词之间深层的语义信息,仍旧存在着预测效果差、准确率低等问题。


技术实现要素:

3.本发明的目的是克服现有技术中的缺点,提供一种基于知识图谱的软件漏洞可利用性预测方法。
4.本发明的目的是通过下述技术方案予以实现:
5.一种基于知识图谱的软件漏洞可利用性预测方法,包括以下步骤:
6.步骤一,采集软件漏洞库数据,并根据软件漏洞库数据获取漏洞描述文本,对漏洞表述文本进行预处理,从漏洞描述文本中提取实体、实体属性和实体间的关系,并根据提取出的实体、实体属性和实体间的关系构建软件漏洞知识图谱;
7.步骤二,对构建所得软件漏洞知识图谱进行专家修订,并将修订后的软件漏洞知识图谱以图数据库的方式进行储存;
8.步骤三,构建软件漏洞可利用性预测模型,并将储存的软件漏洞知识图谱进行图嵌入处理,根据图嵌入处理后的软件漏洞知识图谱构建训练集,对软件漏洞可利用性预测模型进行训练;
9.步骤四,获取待预测软件漏洞描述文本,并对其进行预处理,获取待预测软件漏洞描述文本的实体、实体属性和实体间的关系,并将其输入软件漏洞可利用性预测模型,软件漏洞可利用性预测模型输出对应的软件漏洞可利用性预测结果。
10.进一步的,步骤三中对储存的软件漏洞知识图谱进行的图嵌入处理包括词嵌入、一阶关系嵌入和复杂路径嵌入。
11.进一步的,步骤三中在构建训练集前,还对步骤一中采集的软件漏洞知识图谱进行可利用性标注,并根据可利用性标注后获取的软件漏洞知识图谱的标签数据以及图嵌入处理后的知识图谱构建训练集。
12.进一步的,所述软件漏洞可利用性预测模型为深度堆栈自编码网络。
13.进一步的,所述软件漏洞可利用性预测模型包括一个输入层、若干个隐层和一个输出层,每个隐层均为一个自编码网络,每个隐层均包括若干个神经元。
14.进一步的,软件漏洞可利用性预测模型中每一层的自编码网络模型为:
15.yk=σk(wk×yk-1
+bk)
16.其中,k指第k个隐层,wk和bk分别为第k层自编码网络的权重和偏置,y
k-1
和yk分别为第k-1层、第k层自编码网络的输出。
17.进一步的,所述输出层采用softmax函数对输入软件漏洞可利用性预测模型的软件漏洞知识图谱进行分类,所述softmax函数的计算公式为:
[0018][0019]
其中,x为包含m个元素的数组,m为隐层的数量,xi为数组x中的第i个元素,si为xi的softmax值。
[0020]
进一步的,步骤四中在待预测软件漏洞描述文本的软件漏洞可利用性预测结果后,还将待预测软件漏洞描述文本以及其可利用性结果与软件漏洞库数据进行对比,若待预测软件漏洞描述文本以及其可利用性结果不能与软件漏洞库数据中的数据匹配,则将待预测软件漏洞描述文本以及其可利用性结果作为新数据添加至软件漏洞库数据中,对软件漏洞库数据进行更新,并根据更新后的软件漏洞库数据重新训练软件漏洞可利用性预测模型。
[0021]
本发明的有益效果是:
[0022]
通过对知识图谱的图嵌入操作,能够使得所得到的特征具有更强的语义表征能力。且通过引入深度堆栈自编码网络,能够保证在相对少的调参时间情况下,进一步保持更多的软件漏洞描述的语义特征。而对于软件可利用性的预测结果能够为软件漏洞处理提供辅助依据,能够将软件漏洞的可利用性作为软件漏洞处理依据,提高软件处理效率。且对于新的软件漏洞,能够以此对预测模型进行优化更新,能够适应更多情况下的软件漏洞处理场景。对于已知数据集的软件漏洞可利用性预测的准确度很高,具有非常优秀的泛化能力。
附图说明
[0023]
图1是本发明的一种流程示意图;
[0024]
图2是本发明实施例的一种软件漏洞知识图谱构建流程图;
[0025]
图3是本发明实施例的一种软件漏洞知识图谱片段示意图;
[0026]
图4是本发明实施例中的一种深度堆栈自编码网络模型示意图。
具体实施方式
[0027]
下面结合附图和实施例对本发明进一步描述。
[0028]
实施例:
[0029]
一种基于知识图谱的软件漏洞可利用性预测方法,如图1所示,包括以下步骤:
[0030]
步骤一,采集软件漏洞库数据,并根据软件漏洞库数据获取漏洞描述文本,对漏洞表述文本进行预处理,从漏洞描述文本中提取实体、实体属性和实体间的关系,并根据提取
出的实体、实体属性和实体间的关系构建软件漏洞知识图谱;
[0031]
步骤二,对构建所得软件漏洞知识图谱进行专家修订,并将修订后的软件漏洞知识图谱以图数据库的方式进行储存;
[0032]
步骤三,构建软件漏洞可利用性预测模型,并将储存的软件漏洞知识图谱进行图嵌入处理,根据图嵌入处理后的软件漏洞知识图谱构建训练集,对软件漏洞可利用性预测模型进行训练;
[0033]
步骤四,获取待预测软件漏洞描述文本,并对其进行预处理,获取待预测软件漏洞描述文本的实体、实体属性和实体间的关系,并将其输入软件漏洞可利用性预测模型,软件漏洞可利用性预测模型输出对应的软件漏洞可利用性预测结果。
[0034]
本实施例中具体采用图数据库neo4j对于修订后的软件漏洞知识图谱进行存储和管理,能够有效节省存储空间、增加数据访问效率。
[0035]
步骤一中所述预处理具体为分词处理。
[0036]
步骤一中所建立的软件漏洞知识图谱能够形式化表示为kg=(n,r,e),其中n表示所有实体的集合,r是所有关系的集合,e是软件漏洞知识图谱中实体间的关系集合;e中每个元素由三元组(eh,r,et)组成,eh为头实体、et为尾实体、r表示之间的关系。
[0037]
软件漏洞知识图谱的构件流程具体如图2所示,针对软件漏洞数据库中的每条漏洞描述文本,自动进行分词处理,抽取文本中的实体、实体间的关系、以及他们的属性,并在此基础上构建并更新软件漏洞知识图谱,直到软件漏洞库中的所有漏洞描述文本都被处理完成。
[0038]
步骤二中需要由领域专家对自动构建的软件漏洞知识图谱进行修订,从而消除里面错误信息,增加遗漏信息,从而获取准确性更高的软件漏洞知识图谱。本实施例中所构建的知识图谱片段如图3所示。
[0039]
步骤三中对储存的软件漏洞知识图谱进行的图嵌入处理包括词嵌入、一阶关系嵌入和复杂路径嵌入。
[0040]
词嵌入也称为实体嵌入,将软件漏洞领域的实体进行嵌入操作,将其变为计算可以理解的向量;一阶关系嵌入将知识图谱中实体与其直接邻居以及他们之间的关系进行转换操作,变成计算机可以理解的向量;复杂路径嵌入将知识图谱中实体与其直接邻居、间接邻居,以及他们之间的关系,变换为计算机可以理解的向量。复杂路径是指知识图谱中实体和关系交替构成的序列,如:复杂路径{e1,r12,e2,r23,e3,

,en-1,r(n-1)n,en}包含n个实体、n-1个关系,这n个实体{e1,e2,

,en}通过关系{r12,r23,r(n-1)n}连接起来,构成一条路径;路径的长度n可以根据实际需要进行配置。
[0041]
步骤三中在构建训练集前,还对步骤一中采集的软件漏洞知识图谱进行可利用性标注,并根据可利用性标注后获取的软件漏洞知识图谱的标签数据以及图嵌入处理后的知识图谱构建训练集。本实施例中具体采用exploitdb(漏洞利用程序集)数据库中的数据进行可利用性标注,所述exploitdb数据库为由offensive security(信息安全培训和渗透测试服务提供商)提供的漏洞利用程序集的数据库。
[0042]
在确定网络参数模型的过程中,采用逐层学习策略,将相邻的层级作为简单的两层神经网络进行训练,再逐层将学习后的层级叠加在一起形成深度神经网络,从而使得软件漏洞可利用性预测模型具备较快的学习效率和泛化能力。
[0043]
所述软件漏洞可利用性预测模型为深度堆栈自编码网络,所述深度堆栈自编码网络模型如图4所示。
[0044]
所述软件漏洞可利用性预测模型包括一个输入层、若干个隐层和一个输出层,所述输入层内数据为步骤三中由图嵌入处理后软件漏洞知识图谱所提供的图嵌入向量,以及根据exploitdb数据库进行可利用性标注后获取的标签数据;而软件漏洞可利用性预测模型的每个隐层均为一个自编码网络,每个隐层都包含多个神经元,神经元数量记为numi,i∈{1,2,

,m},m为本实施例中软件漏洞可利用性预测模型的隐层的数量,神经元激活函数采用relu函数;输出层则具体采用softmax函数进行分类。
[0045]
软件漏洞可利用性预测模型中每一层的自编码网络模型为:
[0046]
yk=σk(wk×yk-1
+bk)
[0047]
其中,k指第k个隐层,wk和bk分别为第k层自编码网络的权重和偏置,y
k-1
和yk分别为第k-1层、第k层自编码网络的输出。
[0048]
所述输出层采用softmax函数对输入软件漏洞可利用性预测模型的软件漏洞知识图谱进行分类,所述softmax函数的计算公式为:
[0049][0050]
其中,x为包含m个元素的数组,m为隐层的数量,xi为数组x中的第i个元素,si为xi的softmax值。
[0051]
步骤四中在待预测软件漏洞描述文本的软件漏洞可利用性预测结果后,还将待预测软件漏洞描述文本以及其可利用性结果与软件漏洞库数据进行对比,若待预测软件漏洞描述文本以及其可利用性结果不能与软件漏洞库数据中的数据匹配,则将待预测软件漏洞描述文本以及其可利用性结果作为新数据添加至软件漏洞库数据中,对软件漏洞库数据进行更新,并根据更新后的软件漏洞库数据重新训练软件漏洞可利用性预测模型。
[0052]
以上所述的实施例只是本发明的一种较佳的方案,并非对本发明作任何形式上的限制,在不超出权利要求所记载的技术方案的前提下还有其它的变体及改型。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1