CN115906091A - 一种基于异构数据的软件安全漏洞严重度评估方法及系统 - Google Patents
一种基于异构数据的软件安全漏洞严重度评估方法及系统 Download PDFInfo
- Publication number
- CN115906091A CN115906091A CN202211349188.1A CN202211349188A CN115906091A CN 115906091 A CN115906091 A CN 115906091A CN 202211349188 A CN202211349188 A CN 202211349188A CN 115906091 A CN115906091 A CN 115906091A
- Authority
- CN
- China
- Prior art keywords
- vulnerability
- software security
- severity
- feature vector
- data
- 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.)
- Pending
Links
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Debugging And Monitoring (AREA)
Abstract
本发明提供一种基于异构数据的软件安全漏洞严重度评估方法及系统,设计合理,增加了检测维度,准确性高,实现对漏洞严重度的量化评估。所述方法包括,获取待评估的软件安全漏洞的漏洞描述信息和对应的源码;将所述漏洞描述信息通过预训练的BERT模型提取得到第一特征向量;将所述源码通过程序分析得到代码结构信息,再通过embedding的嵌入生成第二特征向量;将第一特征向量和第二特征向量进行拼接,得到输入向量;通过预训练的神经网络对输入向量进行分类,得到待评估的软件安全漏洞的严重等级。
Description
技术领域
本发明涉及软件安全检测领域,具体为一种基于异构数据的软件安全漏洞严重度评估方法及系统。
背景技术
当漏洞被发现时,软件开发者一般是开发补丁以解决漏洞问题。理想情况下,软件用户只需要在漏洞被利用之前,更新软件补丁即可。然而,事实上打补丁会导致业务停机或者不可预知的副作用,这些对用户来说都是不可接受的。此外,软件提供商几乎很少拥有足够的人力资源一次性将所有发现的漏洞都解决掉。因此,软件开发者需要对漏洞按照严重性划分优先级,保证严重性较高的漏洞优先被修复。
业界已经有多种漏洞排名系统,譬如Common Vulnerability Scoring System(CVSS),Microsoft Security Bulletin Severity Rating System,US-CERTVulnerability Notes Database,SANS Critical Vulnerability Analysis Archive,其中CVSS以一种特有的标准度量漏洞严重性。在漏洞被发现之后,CVSS将其文档化,公布于漏洞数据库之中,生成漏洞报告。漏洞报告一方面描述漏洞是如何工作,另一方面提供漏洞严重性的专家打分。该打分是通过精心设计的方法计算所得,方法的输入值为可利用性指标与影响指标。CVSS中的指标值皆是取自于漏洞的工作方式。与之不同的是Zhuobing Han等人的工作,其利用漏洞描述,抽取表面层次的信息,预测漏洞的严重性。Georgios Spanos等人采用了类似的方法,从漏洞描述与总结中挖掘出信息进行预测。
以上方法由于信息维度的单一性,对漏洞严重程度进行等级评估往往存在着不准确性,从而无法客观的评估软件系统的风险,不能对软件的开发和补丁的决策提供可靠的依据。
发明内容
针对现有技术中存在的问题,本发明提供一种基于异构数据的软件安全漏洞严重度评估方法及系统,设计合理,增加了检测维度,准确性高,实现对漏洞严重度的量化评估。
本发明是通过以下技术方案来实现:
本发明一方面提供一种基于异构数据的软件安全漏洞严重度评估方法,包括,
获取待评估的软件安全漏洞的漏洞描述信息和对应的源码;
将所述漏洞描述信息通过预训练的BERT模型提取得到第一特征向量;
将所述源码通过程序分析得到代码结构信息,再通过embedding的嵌入生成第二特征向量;
将第一特征向量和第二特征向量进行拼接,得到输入向量;
通过预训练的神经网络对输入向量进行分类,得到待评估的软件安全漏洞的严重等级。
可选的,所述预训练的BERT模型和预训练的神经网络,均采用获取的漏洞数据进行预训练;
所述漏洞数据来源于漏洞库,包括漏洞描述信息、源码和对应的CVSS中的严重性评级。
可选的,所述代码结构信息获取方法如下,
通过程序分析源码,在触发漏洞的路径上收集对应数据,得到所述代码结构信息;所述代码结构信息包括攻击入口点数量、系统调用函数数量和外部API调用数量中的至少一种。
可选的,所述攻击入口点为路径上从外部获取数据的函数;所述外部API是指用户层实现的类库函数。
可选的,所述预训练的神经网络进行预训练时,将所述漏洞数据对应的训练输入向量和对应的严重性评级共同作为输入,对神经网络进行训练,使用softmax函数进行多分类,输出对应CVSS中的严重性评级的四种分类级别。
可选的,所述CVSS中的严重性评级的四种分类级别分别为Critical、High、Medium和Low。
可选的,所述漏洞描述信息为自然语言描述的非结构话数据,所述代码结构信息为结构化数据。
本发明一方面提供一种基于异构数据的软件安全漏洞严重度评估系统,包括,
获取模块,用于获取待评估的软件安全漏洞的漏洞描述信息和对应的代码结构信息;
第一特征向量提取模块,用于将所述漏洞描述信息通过预训练的BERT模型提取得到第一特征向量;
第二特征向量提取模块,用于将所述代码结构信息通过程序分析和embedding的嵌入生成第二特征向量;
特征向量拼接模块,用于将第一特征向量和第二特征向量进行拼接,得到输入向量;
分类评估模块,用于通过预训练的神经网络对输入向量进行分类,得到待评估的软件安全漏洞的严重等级。
本发明一方面提供一种计算机设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上任一项所述的基于异构数据的软件安全漏洞严重度评估方法。
本发明一方面提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的基于异构数据的软件安全漏洞严重度评估方法。
与现有技术相比,本发明具有以下有益的技术效果:
本发明一种基于异构数据的漏洞严重度智能评估方法和系统,通过结合了漏洞内部代码实现与外部人工描述两个维度的知识,利用基于神经网络的分类方法,准确地预测出漏洞严重度;同时对于漏洞描述信息,利用BERT模型提升自然语言描述的特征表示,从而优化下一阶段分类任务的效果,提高了其评估的准确性,并且降低了整体系统的复杂度,实现了对漏洞的快速、高效和准确的评估。
附图说明
图1为本发明实例中所述方法的流程示意图。
图2为本发明实例中所述方法中特征抽取的流程示意图。
图3为本发明实例中所述神经网络的分类模型结构示意图。
图4为本发明实例中所述系统的结构示意图。
具体实施方式
下面结合具体的实施例对本发明做进一步的详细说明,所述是对本发明的解释而不是限定。
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
在本发明中,“模块”、“装置”、“系统”等指应用于计算机的相关实体,如硬件、硬件和软件的组合、软件或执行中的软件等。详细地说,例如,元件可以、但不限于是运行于处理器的过程、处理器、对象、可执行元件、执行线程、程序和/或计算机。还有,运行于服务器上的应用程序或脚本程序、服务器都可以是元件。一个或多个元件可在执行的过程和/或线程中,并且元件可以在一台计算机上本地化和/或分布在两台或多台计算机之间,并可以由各种计算机可读介质运行。元件还可以根据具有一个或多个数据包的信号,例如,来自一个与本地系统、分布式系统中另一元件交互的,和/或在因特网的网络通过信号与其它系统交互的数据的信号通过本地和/或远程过程来进行通信。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本发明一种基于异构数据的软件安全漏洞严重度评估方法,如图1所示,包括,
获取待评估的软件安全漏洞的漏洞描述信息和对应的源码;
将所述漏洞描述信息通过预训练的BERT模型提取得到第一特征向量;
将所述源码通过程序分析得到代码结构信息,再通过embedding的嵌入生成第二特征向量;
将第一特征向量和第二特征向量进行拼接,得到输入向量;
通过预训练的神经网络对输入向量进行分类,得到待评估的软件安全漏洞的严重等级。
本优选实例中,一种基于异构数据的漏洞严重度智能评估方法,优势在于结合了内部代码实现与外部人工描述两个维度的知识,利用基于神经网络的分类方法,准确地预测出漏洞严重度。具体来说,对于漏洞描述信息,利用BERT模型提升自然语言描述的特征表示,从而优化下一阶段分类任务的效果。此方法主要分为三部分:一、数据爬取与预处理,二、特征抽取,三、模型训练与预测。
一、数据爬取与预处理。
本发明的漏洞数据来源可以为CVE(Common Vulnerabilities and Exposures)网站等漏洞库,或者其他也可以,每个漏洞皆带有一个严重性评级,该评级来自于CVSS(Common Vulnerability Scoring System)的专家打分。CVSS将漏洞严重度分为四类:Critical、High、Medium、Low,本发明按照同样的分类方法进行分类分级。对于每个漏洞,除了爬取漏洞描述信息与CVSS专家打分之外,还需拉取漏洞对应的源码。
在数据预处理阶段,漏洞描述信息不需要做过多处理。对于代码结构信息,包括以下数据:攻击入口点数量、系统调用函数数量、外部API调用数量等,获取途径是通过程序分析源码,在触发漏洞的路径上收集;本优选实例中采用静态程序分析得到。其中,攻击入口点,即是路径上从外部获取数据(网络流量,IO等)的函数;外部API是指用户层实现的类库函数,譬如pthread类库或JDK等。漏洞描述信息为自然语言描述的非结构化数据,而代码结构信息则是一组结构化数据。
二、特征抽取。
如图2所示,对于自然语言描述的漏洞信息,BERT模型能够学习出特征向量表示,即第一特征向量,相比传统的word2vec技术,BERT的优势在于能够丰富动态的表达词汇含义。对于代码结构信息,此处将程序分析源码之后得到的数据即代码结构信息,形成一个向量,通过embedding生成对应的特征向量为第二特征向量,然后将上下两个特征向量进行拼接,也就是将第一、二特征向量进行拼接,生成的拼接特征向量作为下一步的输入向量。
三、模型训练与预测。
训练数据集来自于CVE实例,爬取到的所有漏洞样本训练样本与测试样本比例为9:1。将上一步所生成的输入向量与CVSS对漏洞的严重性评分结合,作为神经网络模型训练的输入。如图3所示,神经网络只有三层,此处不采用深度神经网络原因是因为BERT已经为自然语言描述生成了一个较好的特征表示。此处使用深度神经网络不但不会提升效果,反而会适得其反。在输出层之后,使用softmax函数解决多分类问题,最终输出对应CVSS的四种分类级别。模型训练完成之后,对于每一个漏洞需要进行图2中的流程,获取到其对应的拼接特征向量,即输入向量,再通过预训练好的神经网络既可以预测新发现漏洞的严重度评级。
上述过程是完整的训练过程,在实际的应用中,输入样本为待取待评估的软件安全漏洞,其与训练样本的差别在于不包括严重度评级,其他的处理过程是相同的,训练是将输出的严重度评级与本身匹配的进行对比,反过来对神经网络进行训练,而实际评估时,输出的严重度评级即为评估的结果。
本发明还提供一种基于异构数据的软件安全漏洞严重度评估系统,如图4所示,包括,
获取模块,用于获取待评估的软件安全漏洞的漏洞描述信息和对应的代码结构信息;
第一特征向量提取模块,用于将所述漏洞描述信息通过预训练的BERT模型提取得到第一特征向量;
第二特征向量提取模块,用于将所述源码通过程序分析得到代码结构信息,再通过embedding的嵌入生成第二特征向量;
特征向量拼接模块,用于将第一特征向量和第二特征向量进行拼接,得到输入向量;
分类评估模块,用于通过预训练的神经网络对输入向量进行分类,得到待评估的软件安全漏洞的严重等级。
本发明还提供一种计算机设备,包括:存储器,用于存储计算机程序;处理器,用于执行所述计算机程序时实现如上任一项所述的基于异构数据的软件安全漏洞严重度评估方法。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上任一项所述的基于异构数据的软件安全漏洞严重度评估方法。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
最后应当说明的是:以上实施例仅用以说明本发明的技术方案而非对其限制,尽管参照上述实施例对本发明进行了详细的说明,所属领域的普通技术人员应当理解:依然可以对本发明的具体实施方式进行修改或者等同替换,而未脱离本发明精神和范围的任何修改或者等同替换,其均应涵盖在本发明的权利要求保护范围之内。
Claims (10)
1.一种基于异构数据的软件安全漏洞严重度评估方法,其特征在于,包括,
获取待评估的软件安全漏洞的漏洞描述信息和对应的源码;
将所述漏洞描述信息通过预训练的BERT模型提取得到第一特征向量;
将所述源码通过程序分析得到代码结构信息,再通过embedding的嵌入生成第二特征向量;
将第一特征向量和第二特征向量进行拼接,得到输入向量;
通过预训练的神经网络对输入向量进行分类,得到待评估的软件安全漏洞的严重等级。
2.根据权利要求1所述的一种基于异构数据的软件安全漏洞严重度评估方法,其特征在于,所述预训练的BERT模型和预训练的神经网络,均采用获取的漏洞数据进行预训练;
所述漏洞数据来源于漏洞库,包括漏洞描述信息、源码和对应的CVSS中的严重性评级。
3.根据权利要求2所述的一种基于异构数据的软件安全漏洞严重度评估方法,其特征在于,所述代码结构信息获取方法如下,
通过程序分析源码,在触发漏洞的路径上收集对应数据,得到所述代码结构信息;所述代码结构信息包括攻击入口点数量、系统调用函数数量和外部API调用数量中的至少一种。
4.根据权利要求3所述的一种基于异构数据的软件安全漏洞严重度评估方法,其特征在于,所述攻击入口点为路径上从外部获取数据的函数;所述外部API是指用户层实现的类库函数。
5.根据权利要求2所述的一种基于异构数据的软件安全漏洞严重度评估方法,其特征在于,所述预训练的神经网络进行预训练时,将所述漏洞数据对应的训练输入向量和对应的严重性评级共同作为输入,对神经网络进行训练,使用softmax函数进行多分类,输出对应CVSS中的严重性评级的四种分类级别。
6.根据权利要求2或5所述的一种基于异构数据的软件安全漏洞严重度评估方法,其特征在于,所述CVSS中的严重性评级的四种分类级别分别为Critical、High、Medium和Low。
7.根据权利要求1所述的一种基于异构数据的软件安全漏洞严重度评估方法,其特征在于,所述漏洞描述信息为自然语言描述的非结构话数据,所述代码结构信息为结构化数据。
8.一种基于异构数据的软件安全漏洞严重度评估系统,其特征在于,包括,
获取模块,用于获取待评估的软件安全漏洞的漏洞描述信息和对应的代码结构信息;
第一特征向量提取模块,用于将所述漏洞描述信息通过预训练的BERT模型提取得到第一特征向量;
第二特征向量提取模块,用于将所述代码结构信息通过程序分析和embedding的嵌入生成第二特征向量;
特征向量拼接模块,用于将第一特征向量和第二特征向量进行拼接,得到输入向量;
分类评估模块,用于通过预训练的神经网络对输入向量进行分类,得到待评估的软件安全漏洞的严重等级。
9.一种计算机设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序时实现如权利要求1至7中任一项所述的基于异构数据的软件安全漏洞严重度评估方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述的基于异构数据的软件安全漏洞严重度评估方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211349188.1A CN115906091A (zh) | 2022-10-31 | 2022-10-31 | 一种基于异构数据的软件安全漏洞严重度评估方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211349188.1A CN115906091A (zh) | 2022-10-31 | 2022-10-31 | 一种基于异构数据的软件安全漏洞严重度评估方法及系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115906091A true CN115906091A (zh) | 2023-04-04 |
Family
ID=86477025
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211349188.1A Pending CN115906091A (zh) | 2022-10-31 | 2022-10-31 | 一种基于异构数据的软件安全漏洞严重度评估方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115906091A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116720197A (zh) * | 2023-08-09 | 2023-09-08 | 北京比瓴科技有限公司 | 一种对漏洞优先级排列的方法及装置 |
-
2022
- 2022-10-31 CN CN202211349188.1A patent/CN115906091A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116720197A (zh) * | 2023-08-09 | 2023-09-08 | 北京比瓴科技有限公司 | 一种对漏洞优先级排列的方法及装置 |
CN116720197B (zh) * | 2023-08-09 | 2023-11-03 | 北京比瓴科技有限公司 | 一种对漏洞优先级排列的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110737899B (zh) | 一种基于机器学习的智能合约安全漏洞检测方法 | |
CN106557695B (zh) | 一种恶意应用检测方法和系统 | |
US10564939B2 (en) | Method and system for arbitrary-granularity execution clone detection | |
US11509667B2 (en) | Predictive internet resource reputation assessment | |
CN110287702A (zh) | 一种二进制漏洞克隆检测方法及装置 | |
CN114861194B (zh) | 一种基于bgru与cnn融合模型的多类型漏洞检测方法 | |
US20220292200A1 (en) | Deep-learning based device and method for detecting source-code vulnerability with improved robustness | |
US11385988B2 (en) | System and method to improve results of a static code analysis based on the probability of a true error | |
CN110619213A (zh) | 基于多模型特征的恶意软件识别方法、系统及相关装置 | |
CN115146282A (zh) | 基于ast的源代码异常检测方法及其装置 | |
Wang et al. | Explainable apt attribution for malware using nlp techniques | |
CN115022026A (zh) | 一种区块链智能合约威胁检测装置及方法 | |
CN115906091A (zh) | 一种基于异构数据的软件安全漏洞严重度评估方法及系统 | |
Hegedűs et al. | Static code analysis alarms filtering reloaded: A new real-world dataset and its ML-based utilization | |
Armaly et al. | A case study of automated feature location techniques for industrial cost estimation | |
CN110808947B (zh) | 一种自动化的脆弱性量化评估方法及系统 | |
CN116702157A (zh) | 一种基于神经网络的智能合约漏洞检测方法 | |
CN116821903A (zh) | 检测规则确定及恶意二进制文件检测方法、设备及介质 | |
CN116401670A (zh) | 一种无源码场景下的漏洞补丁存在性检测方法及系统 | |
CN114925750A (zh) | 信息推荐方法、装置、计算机可读存储介质及电子设备 | |
Paes et al. | Layout cross-browser incompatibility detection using machine learning and DOM segmentation | |
Ahmed et al. | Machine Learning for Software Vulnerability Detection: A Survey | |
CN113901459A (zh) | 固件内部二进制程序脆弱性发现方法及装置 | |
CN112464237A (zh) | 一种静态代码安全诊断方法及装置 | |
Imtiaz et al. | Predicting vulnerability for requirements |
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 |