本发明涉及软件工程中的代码漏洞优先级排序这一,具体指一种基于文本挖掘和多指标度量的细粒度漏洞优先级排序的方法。
背景技术:
1、在软件开发过程中,由于开发人员低质量的编码亦或代码克隆等操作,以及安全测试程度的不足,导致了软件程序中存在大量的代码漏洞。这些数以万计的软件程序中,隐藏着大量的漏洞。这些漏洞一但被恶意攻击者利用,就有可能引发全球网络攻击,造成不可估量的后果。为了减轻软件系统中存在的漏洞造成的影响,研究人员们试图在漏洞披露之后迅速评估其优先级,进而采取积极的修复行动,并据此展开了大量相关工作。
2、在现存的漏洞优先级管理过程中,目前主流的解决方案是使用cvss评分体系。大致过程如下:首先使用静态扫描器发现代码中可能存在的漏洞,再经由相应组织中软件安全专家的分析研判,将代码漏洞的相关属性输入到cvss评分系统中,系统根据一些预先设定的计算公式,对漏洞进行评分,最后软件组织参考分数的优先次序进行漏洞审查修复。
3、然而,随着漏洞数量爆炸式增长,原有的一些评估方法无法适应目前漏洞数目大量增长的现状。从现存的漏洞优先级管理流程中,不难看出整个评估过程需要大量人工参与、高度依赖人工经验。此外,现存的漏洞优先级排序方法仍然停留在软件项目层面,而未深入到软件函数程度,缺乏细粒度的排序方法。由于软件开发技术以及网络攻击技术的进步,现有的排序方法指标相对单一,缺乏对相关漏洞的全面考量。
技术实现思路
1、为了解决解决漏洞评价相关研究中自动化程度低且过分依赖人工经验,指标不够全面,以及漏洞评分粒度过大的问题。本文设计了一种基于文本挖掘和多指标度量的漏洞优先级排序方法,从必要性、函数级指标和影响范围这三个维度提出了14个度量指标,细化至函数级别对漏洞进行优先级排序。可以更加高效准确地对漏洞进行排序,有效提升了软件漏洞排序质量,大幅提升漏洞排序工作的实用性,对于优化软件漏洞生命周期管理给出了新的方案。
2、为了解决上述技术问题,本发明的技术方案为:
3、一种基于文本挖掘和多指标度量的细粒度漏洞优先级排序的方法,包括如下步骤:
4、s1、收集待排序的漏洞代码数据,并进行数据筛选和清洗,所述漏洞代码数据包括函数源代码、漏洞描述信息、漏洞提交信息;
5、s2、利用node2vec对清洗后的漏洞代码数据进行深层次信息的提取;
6、s3、根据提取的深层次信息,并通过多指标评价体系对漏洞代码数据进行评估得到多个维度的分数,所述评估的维度包括漏洞修复必要性、函数级指标以及漏洞被成功攻击后可能造成的影响范围;
7、s4、在得到三个维度的指标之后,通过评分体系的加权方法对总分进行计算,最后进行优先级排序。
8、作为优选,提取深层次信息的方法包括:
9、s2-1、对于函数源代码,首先通过正则匹配的方式识别出其编写语言并更改相应命名;随后,使用工具为这些源代码文件生成程序依赖图表示;
10、s2-2、遍历所生成的,将中隐含的节点和边的关键信息提取出来,同时保存节点和节点内容、相连边之间的映射关系;
11、s2-3、将得到的映射关系,通过经过模型进行文本特征和边特征训练,一个节点内容的特征矩阵由多个文本对应的特征向量组成,i代表节点内容中的个数,t代表向量的最长长度;一个节点依赖边的特征矩阵由多条边对应的特征向量组成,n代表节点依赖边条数,m代表向量的长度;
12、s2-4、对于漏洞描述信息、漏洞提交信息这两个文本属性,利用已经预训练完成的公开模型进行得到特征向量、。
13、作为优选,所述步骤s3中,所述漏洞修复必要性、函数级指标以及漏洞被成功攻击后可能造成的影响范围的评估均通过二级指标进行评估;
14、所述漏洞修复必要性的评估包括类型利用率、攻击难易度和严重程度;
15、所述函数级指标的评估包括修复成本和函数重要程度;
16、所述漏洞被成功攻击后可能造成的影响范围的评估包括可用性、机密性和完整性影响。
17、作为优选,所述步骤s4中,通过评分体系对总分进行计算并得到漏洞优先级的方法为:
18、s4-1、首先分别度量三个维度的指标值,并将每一维度分数限制在10分,其公式为:
19、
20、
21、
22、s4-2、为了将总分限制在10分以内,需要为每个维度赋予相应的权重。考虑到漏洞生命周期的发展和排序结果的合理性,可以为三个维度赋予相似的指标或者相应上下微调,并使用加权方式计算,得到漏洞总分公式:
23、其中为不同维度的系数。
24、本发明具有以下的特点和有益效果:
25、采用上述技术方案,本发明基于文本挖掘和多指标度量对软件漏洞优先级进行函数粒度的排序,方法从漏洞生命周期的视角出发,综合考虑了漏洞修复前、修复中和修复后的三类因素,涵盖漏洞管理全流程中的每个部分,结合深度学习以及统计分析的方式自动地生成评分系统中8个指标的值。此外,为了抵消自动化过程中可能存在的误差,本方法中保留对漏洞基础性评分中的6个指标进行手动评估的方式。本方法的优势在于能够自动生成acvss分数评估漏洞的严重程度,并且通过综合评估漏洞的多个因素,全面而准确地评估漏洞的优先级,将排序粒度细化至函数级别从而优化漏洞修复的顺序。提出的评分体系较为合理且完整,降低了软件漏洞评估过程中的人工经验影响,提高了效率和效果。
1.一种基于文本挖掘和多指标度量的细粒度漏洞优先级排序的方法,其特征在于,包括如下步骤:
2.根据权利要求1所述的一种基于文本挖掘和多指标度量的细粒度漏洞优先级排序的方法,其特征在于,所述步骤s1中,数据的清洗方法为:使用re模块中的正则匹配工具将代码进行标准化,替换不符合要求的字符。
3.根据权利要求1所述的一种基于文本挖掘和多指标度量的细粒度漏洞优先级排序的方法,其特征在于,所述步骤s2中,提取深层次信息的方法包括:
4.根据权利要求3所述的一种基于文本挖掘和多指标度量的细粒度漏洞优先级排序的方法,其特征在于,所述步骤s2-3中,模型进行文本特征和边特征训练时,节点内容的文本token被视为最小单位。
5.根据权利要求3所述的一种基于文本挖掘和多指标度量的细粒度漏洞优先级排序的方法,其特征在于,所述步骤s3中,所述漏洞修复必要性、函数级指标以及漏洞被成功攻击后可能造成的影响范围的评估均通过二级指标进行评估;
6.根据权利要求5所述的一种基于文本挖掘和多指标度量的细粒度漏洞优先级排序的方法,其特征在于,所述步骤s3中对漏洞修复必要性进行评估的方法为:
7.根据权利要求6所述的一种基于文本挖掘和多指标度量的细粒度漏洞优先级排序的方法,其特征在于,所述步骤s3中对漏洞进行函数级别指标评估的方法为:
8.根据权利要求7所述的一种基于文本挖掘和多指标度量的细粒度漏洞优先级排序的方法,其特征在于,所述步骤s3对漏洞影响范围进行评估的方法为:
9.根据权利要求8所述的一种基于文本挖掘和多指标度量的细粒度漏洞优先级排序的方法,其特征在于,所述步骤s4中,通过评分体系对总分进行计算并得到漏洞优先级的方法为:
