机器学习实现漏洞自动分类

使用机器学习进行自动漏洞分类

摘要

漏洞分类是推导形式化属性以进行深入分析的基础步骤。因此,要求该分类必须及时且准确地完成。由于当前情况需要在分类过程中进行人工干预,及时处理成为一个严重问题。为此,我们提出了一种自动化替代方案来取代人工分类,因为每天识别出的漏洞数量已无法再通过人工方式进行处理。我们实现了两种不同的方法,能够基于漏洞描述自动对漏洞进行分类。我们在公开已知漏洞的基础上,对分别使用神经网络和朴素贝叶斯方法的这两种方案进行了评估。

关键词 :漏洞分析 · Security分析 · Data挖掘 · 机器学习 · Neural网络

1 引言

如今,应用程序与操作系统的可能组合总数以及每个软件的复杂性导致无法手动检查现代系统的配置。因此,维护和识别所有组件及其已报告的漏洞需要巨大的努力。在当前情况下,大量的漏洞使得现代IT基础设施的管理和保护变得复杂。因此,有必要对漏洞信息进行自动处理。通常使用通用漏洞评分系统(CVSS)参数[7]来丰富漏洞信息,提供额外的度量指标以实现自动处理。其中一些参数可用于估算漏洞的严重性和影响。特别是攻击范围以及对基本安全原则即可用性、保密性和完整性的影响,对于分析漏洞至关重要。

CVSS[7]基础指标的识别和赋值是一项耗时的工作,需要专家知识。通常,专业分析师来自美国国家标准与技术研究院(NIST)的专家必须手动执行此评分[4]。他们尝试将新漏洞与预定义模板进行匹配。但如果漏洞描述模糊,则必须进行更加耗时的手动分析。然后,识别出在描述中具有相似信息或关键词的已分析漏洞。这些漏洞的分数和CVSS属性被用作指导,以完成对新漏洞的最终评估和评分。这一过程[4]表明,人类专家在调查时也是从漏洞的文本描述开始的。用于报告新发现漏洞的常用服务,例如卡内基梅隆大学的漏洞报告表单,[2],仅限提供文本描述。因此,人类专家最初并不会收到更全面的信息。尽管他们可能从常识中获得额外的背景信息,但我们仍可识别出,在新漏洞的评估过程中,文本描述与CVSS属性之间存在直接的依赖关系。

由于这种评分方法需要专业知识和人工调查,评分过程有时会导致归因延迟。因此,一些漏洞在发布时没有CVSS指标。缺失的指标通常会在后期补充。对于依赖这些指标来评估甚至检测漏洞的分析系统而言,这一间隔可能至关重要。评分的延迟可能长达数天。例如,OpenSSH中标识为CVE‐2016‐0777的漏洞于2016年1月14日发布,而CVSS属性直到2016年1月19日才公布。因此,该漏洞有5天时间无法进行分类或自动处理。这种延迟也不能归因于软件使用率低或分布范围小,因为OpenSSH是一个广泛使用的程序,许多Linux发行版都预装了该软件。我们认为,通过漏洞的自动分类,可以显著减少此类延迟以及漏洞分析师的手动工作量。因此,我们将提出基于文本描述的机器学习方法来进行分类。

本文将从引言开始,阐述问题及其重要性。随后,将介绍并描述一些相关的思想和方法。然而,目前该问题尚未得到广泛研究,导致解决该问题的方法较为匮乏。接着,我们将在第3节中详细说明我们自己的方法。我们将描述一种神经网络方法和一种朴素贝叶斯方法,二者均通过学习漏洞描述中提取的特征来实现分类。在第4节中,我们将展示并说明评估结果。之后,我们会提及未来计划开展的进一步工作。最后,我们将总结本研究并概述主要贡献。

示意图0

2 相关工作

早期利用漏洞数据库中积累的文本数据的想法已在[15]中提出。作者提到了不同的数据挖掘算法,以充分利用各种漏洞数据库中的多样化知识。然而,他们指出,应投入大量精力进行标准化和兼容性处理,以便从不同来源的漏洞信息中获益。此外,他们希望利用数据挖掘来预测并避免未来软件产品中的漏洞。[15]的作者声称,已学习的分类器应能够在代码被纳入生产软件之前识别软件中的漏洞模式。因此,应构建形式化的漏洞特征来训练挖掘算法。

在[13]中可以观察到机器学习在漏洞领域的另一个应用。作者将文本挖掘算法应用于不同软件组件的源代码,然后预测每个组件包含漏洞的可能性。该方法使他们能够突出那些应由安全分析师审查的组件,因为这些组件极有可能存在漏洞。在[6],中提出了另一种识别软件漏洞的方法。除了源代码评估外,[6]的作者还建议使用版本控制系统的指标以及软件本身的架构来改进漏洞预测。[10]的作者也研究了将机器学习算法应用于漏洞的可能性。他们尝试基于与其他软件组件的相似性来预测软件组件中的漏洞,并将该方法集成到一个名为 Vulture的现有工具中。主要区别在于,他们使用漏洞数据库作为查找程序中漏洞的来源,而这些程序是通过CPE‐IDs(通用平台枚举标识符)[8]识别的。他们并未尝试预测漏洞本身的特征。

另一篇论文利用机器学习方法,基于国家漏洞数据库(NVD)的数据,预测某软件中迄今为止尚未发现的漏洞存在的可能性[9]。[18]的作者应用了多种机器学习算法,但得出结论:基于NVD数据的模型预测能力较差。他们试图为每个应用程序构建下一个披露漏洞的时间预测模型,但这一目标由于遇到多个问题而无法实现。例如,他们发现新漏洞会影响所有先前的版本,这导致版本差异特征无法使用。最后,他们认为NVD的数据可能根本就不是为机器学习方法设计的。

此外,[17]中提出了一种有趣的漏洞分类与识别方法。作者利用文本挖掘技术来识别漏洞和缺陷描述中的特征。他们的思路是将缺陷报告分为两类:普通缺陷和隐蔽影响缺陷。主要区别在于,隐蔽影响缺陷可能违反安全策略。因此,这些隐蔽影响缺陷通常与漏洞相关。该方法可用于从缺陷报告中识别漏洞。

文献[1]也研究了漏洞的分类问题。作者尝试根据漏洞是否被利用来对漏洞进行分类。与我们的方法不同,他们的研究基于不同的漏洞子集,并使用了 OSVDB(开源漏洞数据库)。他们关注的是漏洞是否存在已知利用程序,或仅是传闻存在,亦或无法获得利用程序,这极大地减少了可用数据的数量。此外,他们还将文本特征视为词袋模型风格的二进制表示。因此,对于文本属性,他们会得到一个高维向量,用以表示相应字段中出现的词语。这种方法与我们用于朴素贝叶斯预处理步骤的方法类似。而对于我们的神经网络,我们并未简单地采用词语的二进制表示,而是使用了GloVe[11]工具,以保留词语的语义信息。

3 分类方法

漏洞信息的分类是自动处理过程中的一个基本步骤。如前所述,关于新发现漏洞的信息通常缺乏足够的细节,无法自动处理漏洞利用的影响或完全理解其前提条件。通常报告中包含漏洞的描述、受影响软件的信息以及关于可能影响的粗略文字描述,甚至信息更少。这些描述以自然语言提交,受影响产品的信息可以通过CPE‐IDs(通用平台枚举标识符)[8]或通过关键词来指定。一个众所周知的例子是计算机应急响应小组[2]的提交表单。此过程需要人工调查,并将信息转换为形式化的漏洞属性,例如CVSS指标[7]。这些形式化指标随后可用于对现有漏洞进行自动化分析,因为这些信息可以被机器解读。

我们的想法旨在实现向形式化属性转换的自动化。因此,我们希望探究利用机器学习方法从漏洞描述中提取形式化属性的可能性。我们希望解决两个有趣的问题:第一个问题是,是否能够提取前述的特征;另一个问题是,自动化方法的准确率是否足以支持对漏洞进行自主分类。我们实现了两种不同的分类方法,以评估其准确率并讨论不同方法之间的优势。我们将首先介绍神经网络方法,然后引入朴素贝叶斯分类方法。

3.1 神经网络

我们选择神经网络作为其中一种方法,因为它是多标签分类以及高复杂度分类问题的常见选择。我们认为该方法非常适合处理自然语言描述。如果领域有限且有足够多的训练数据可用,那么在语言方面可以满足条件。在我们的情况下,这两个要求都可以通过已分类的漏洞来满足。我们可以使用 72,000个较早漏洞的描述来训练我们的网络。此外,我们发现所有描述中不同词汇的总数达到104,000个词。因此,我们可以构建有限词汇表,并收集已分类的数据作为训练集。整体工作流程使用神经网络根据漏洞的描述对漏洞进行分类如图所示。1。我们将根据示意图描述各个步骤第。一步,如图1中所示的准备阶段,是从描述中去除不必要的信息。由于描述是使用自然语言编写的,其中包含对整体含义没有额外帮助的词语。因此,我们借助从[16]收集的知名停用词预定义列表去除了停用词。此外,我们采用词干提取方法来克服由屈折变化和动词变位产生的词语差异。另外,所有大写字母的单词都被转换为小写,以消除句子内部词语顺序带来的差异。因此,每条描述都被转化为一个实质词汇的列表。

在下一步中,我们需要从预处理后的描述中提取网络的输入数据。该步骤已集成到我们的工作流程中,作为输入值的转换。由于神经网络通常无法直接处理文本数据,因此必须进行这一额外的转换。为此,我们选择了GloVe[11],,这是一种无监督学习算法,用于从给定的输入词中推导出向量表示。该算法的独特之处在于能够识别具有相似含义的词,并保留多组词之间的关系。例如,“king”和“queen”的向量之差与“man”和“woman”的向量之差具有很高的相似性。该算法为每个识别出的词分配一个50维向量。然后可以使用该词典将描述中每个词替换为其对应的向量。最后,该算法从我们先前处理过的描述中生成一个向量列表。因此,每个描述由50个浮点数值乘以描述中的词数构成。尽管每条描述的平均词数为37,但我们必须考虑所有描述中的最大词数,以便创建我们的词向量列表。这一要求源于神经网络对统一输入值的需求。如果我们使用平均词数,则不得不省略某些描述中的部分词,这可能导致关于这些描述的信息丢失。因此,我们决定将所有描述扩展至最大词数。于是,我们通过添加零向量来扩充较短的描述,以使各个描述的长度保持一致。在实验中,我们确定最大长度约为400个词,并相应地扩充较短的描述。最终,每条描述得到约2000个输入值,这些值来源于400个词,每个词包含50个浮点数值。

最后,我们只需将CVSS[7]属性的形式化值转换为数字,即可完全在数值空间中工作,并将数据输入到我们的神经网络中。最终的翻译结果在很大程度上取决于需要预测的属性。首先,我们需要确定所选属性的所有可能值。然后可以简单地枚举这些可能的值,并使用此映射将文本信息转换为数字。对于单属性预测,例如完整性或攻击范围,我们分别确定了不同的取值:无、部分、完全和未知,本地、相邻网络、对网络。对于我们的综合预测,必须考虑所选属性的可能组合。因此,保密性、完整性和可用性(CIA)的组合会产生27个不同的值。在我们的整体组合中,我们加入了攻击范围,这意味着我们必须处理108个不同的值。映射本身需要持久化存储,以便进行反向翻译,这是我们工作流程的最后一步1。

此时,我们可以将数据输入神经网络。我们决定使用80%的数据来训练网络,剩余的20%用于测试。该神经网络的配置学习率为0.001,并运行100训练轮次。此外,我们测试了不同数量的隐藏层以及每层单元数的各种配置。最理想的结果是采用3层网络,各层分别具有1200、700和50个节点。在评估过程中(将在下一章中描述),我们遇到了网络过拟合的问题。我们通过设定丢弃率来解决这一问题。该比率描述了每个节点在传播过程中被保留或丢弃的概率。因此,并非每一层的所有节点都会影响输出结果。此方法也在图1的工作流程神经网络中进行了说明。图中显示,标记为“X”的节点不会将其结果传播到网络的下一层。

随后提取结果,数值可以映射回CVSS属性的人类可读值。因此,我们可以从描述中生成单个属性值或属性组合。这样,我们就可以利用该方法根据指定的属性自动对漏洞进行分类。最后一步完成了图1所示的工作流程。

3.2 朴素贝叶斯

除了神经网络外,我们还实现了另一种自动推导漏洞CVSS[7]属性的方法。我们实现了一个朴素贝叶斯[12]分类器,该分类器可根据相关描述预测所选属性。我们选择朴素贝叶斯分类方法,因为我们认为它是一种广为人知且广泛应用于分类问题的算法。该方法已被深入研究和探讨,因此可以很好地作为与神经网络方法进行比较的参考值。

首先,我们需要执行一些类似于神经网络方法的预处理步骤。我们根据各个特征确定所有漏洞描述中最有意义的词语。因此,我们选择基于词袋模型来创建特征,该模型利用描述中词语的出现情况。整体词典由72,000条描述生成,最终形成约104,000个词的列表。在初始训练轮次中,有意义的词语会被自动收集。因此,所有漏洞描述的语料库必须清除停用词,并且我们也使用通过词干提取解决由屈折变化和动词变位引起的差异。随后,根据词汇在漏洞描述中对分类结果的影响程度,对其重要性进行排序。为此,我们将之前清理过的描述按照待预测属性的值进行划分。例如,我们创建一组与远程攻击范围相关的描述,另一组与本地攻击范围相关的描述。然后,我们计算词频和逆文档频率,以找出最有可能指示特定属性值的候选词汇。我们认为词频是一种非常适合发现这些候选词的方法,因为某个词在相应描述集合中出现得越频繁,其对该特征的影响可能越大。另一个观察结果是基于按待分析属性区分的描述。我们发现,在某一组描述中频率较高而在另一组中频率较低的词汇,对分类具有显著影响。这一观察结果也可以推广,因为我们了解领域特定词汇以及关键词提取的影响。[3]在自然语言中,我们通常使用特定的词汇来描述特定领域的场景。因此,可以通过评估所使用的词汇来推断所属领域,并尝试预测描述的含义。于是,我们逐组比较词频,并选择差异最大的词汇。例如,“remote”、“message”或“connection”等词强烈表明该漏洞的攻击范围为远程;而“crash”或“denial”等词则暗示可用性受到了破坏。

在最终的分类中,我们发现每个属性使用最重要的500个词语足以获得令人满意的结果。这一限制也显著减少了计算时间。自动生成有意义的词语列表的方法具有优势,即特征易于理解,并且可以进行人工验证。在朴素贝叶斯分类器中使用的最终特征是对先前识别出的有意义的词语是否存在的二进制表示。因此,我们遍历之前创建的有意义的词语列表,标记其存在或不存在。这些特征随后被传递给朴素贝叶斯分类器以训练模型。

每条描述的工作流程与我们的神经网络方法类似。首先,我们通过去除停用词并应用词干提取来预处理描述。然后,我们将各个单词转换为数值特征,在朴素贝叶斯方法中这些特征是二进制的。该转换将生成一个二进制向量,表示每个有意义术语的存在与否。最后,我们将该向量输入分类器,并以文本形式获得分类结果。

4 分类结果

我们使用了已公开发布的漏洞的真实描述进行实验。因此,我们收集了所有可用的漏洞及其描述和CVSS[7]在2016年1月1日之前发布的具有已知CVSS属性的漏洞。因此,该数据集包含 72,490个漏洞及其已知的CVSS属性。我们使用其中的80%用于算法训练,20%的描述作为测试集。训练数据与测试数据之间的划分在分割前通过随机打乱实现,以确保算法的训练不受特定训练数据选择的影响。由于数据的这种随机排列,每次构建分类器时测试结果可能会有所不同。因此,我们多次执行分类器的构建过程,并在评估中采用平均测量值。此外,我们还使用了2016年发布的 2,400个漏洞作为验证集,以评估训练好的算法。这使我们能够更全面地测试分类器,所用数据确信未参与任何训练步骤。这一点在神经网络方法中尤为重要,因为在网络的每一次迭代中,测试数据将被用来调整和微调参数。因此,验证集的描述对神经网络的训练没有任何影响。当网络预测所选属性时,所得结果代表了在新发现的漏洞上也能达到的准确率。

我们的CVSS属性预测重点关注最重要的属性:攻击范围、可用性、保密性和完整性。我们为这些属性分别构建了独立的分类器。此外,我们实现了一个针对保密性、完整性和可用性组合的分类器,称之为CIA分类器。最后,还构建了一个针对所有属性组合的分类器。组合分类器分别通过独立的神经网络或朴素贝叶斯分类器创建。我们将属于该组合的每个属性的主要值进行合并,并推导出每个属性可能的值组合列表。然后,将这些组合以及漏洞描述输入到我们的算法中,以构建组合分类器。

由于我们数据集中属性值的分布不同,必须调整训练数据,以获得所选属性的描述的平衡集合。例如,可用性属性将大约72,000个漏洞划分为17,700个具有完全影响、31,900个具有部分影响以及22,800个无影响的漏洞。在攻击范围方面,这种差异更为显著。超过80%的漏洞可以被远程利用。这种不平衡会导致机器学习能力出现重大问题。通常,应用机器学习算法需要训练数据集具备良好平衡的前提条件,以避免分类过程中算法受到属性特征绝对多数的影响。因此,我们调整训练集使其更加平衡,并减少考虑的漏洞数量。例如,我们的可用性分类器不会使用全部72,000条描述,而是根据前述的平衡方法,从“完全”、“部分”和“无影响”这三种特征中各选取17,700条描述进行使用。这最终形成了包含53,100个漏洞的平衡训练集。因此,分类应仅依赖于描述本身,而不依赖于数量的差异。

此外,我们的结果主要关注所测试方法的准确率,这与必须在二维空间中进行决策的线性分类器的准确率略有不同。因此,我们的准确率计算源自汉明分数。分类器准确率是在所有标签上进行计算的,以正确评估我们的多标签分类的有效性,如[14]中所述。计算准确率的公式见公式2。

$$
\text{CorrectlyClassified} = \bigcap_{\text{Label} \in \text{SelectedLabels}} { v \in \text{Vulns} \mid v.\text{Label} = \text{result} }
\quad (1)
$$

$$
\text{ClassificationAccuracy} = \frac{|\text{CorrectlyClassified}|}{|\text{AllDescriptions}|}
\quad (2)
$$

4.1 朴素贝叶斯

首次结果和初步印象表明,可以通过朴素贝叶斯分类实现对漏洞描述的自动分类。我们选择朴素贝叶斯方法,因为该方法常用于分类问题。此外,朴素贝叶斯还可用于执行多标签分类,这正是我们的需求之一。我们还认为,朴素贝叶斯因其广泛应用,非常适合作为与其他方法进行结果比较的候选方案。我们应用了朴素贝叶斯分类,具体方法如第3.2节所述。

因此,我们创建了4个独立的分类器,对数据集的每个单一属性应用朴素贝叶斯方法。结果如表1所示。正如我们已经预期的那样,训练数据的结果与测试数据的结果相似。由于我们在每次执行开始时都会重新随机选择20%的测试数据,因此测试数据和训练数据之间没有差异。此外,验证集也产生了类似且同样有希望的结果。

CVSS属性 训练数据 测试数据 验证数据
攻击向量 89.9% 90.8% 92.3%
可用性 68.4% 68.0% 70.0%
保密性 73.2% 72.4% 69.1%
完整性 74.2% 73.6% 68.3%

除了上述结果外,朴素贝叶斯分类器还提供了一个额外的指标来描述分类结果的置信度。我们修改了算法,仅在置信度值至少为0.75时才执行分类。使用置信度得到的结果与表1中已列出的结果相比没有显著差异。我们发现攻击向量分类的准确率下降了2%,而可用性、保密性和完整性分类器的准确率分别提高了3%。但修改后的版本分别遗漏了56、419、428和321个漏洞。尽管如此,如果在实际中使用朴素贝叶斯方法自动对描述进行分类,则应包含置信度值。如果置信度不理想,应考虑进行人工分类以获得准确的结果。

4.2 神经网络

正如第3节所述,我们实现了第二种基于神经网络的方法。我们的神经网络使用 TensorFlow 0.101版本和GloVe 1.2[11]版本构建。由于我们希望与第一种方法得到可比较的结果,因此为各个属性创建了不同的网络。因此,首先我们为四个CVSS属性中的每一个分别创建了一个网络。每次实验执行10次,并根据公式(2)计算准确率。对于单个属性,该公式可简化为正确分类的描述数量与描述总数之比。对于神经网络,我们将输入数据集划分为训练数据和测试数据,类似于我们的朴素贝叶斯方法。我们选择将80%的数据用于训练集,剩余的20%用于测试数据集。不同之处在于,测试数据在模型训练过程中已被考虑。我们配置网络运行100个训练轮次。该网络本身包含3个隐藏层,分别具有1200、700和50个单元。分类结果如表2所示。

CVSS属性 训练数据 测试数据 验证数据
攻击向量 99% 88.9% 80.3%
可用性 99% 80.7% 70.0%
保密性 99% 81.1% 70.2%
完整性 99% 81.9% 69.8%

结果还表明了神经网络方法出现的问题。正如第3节中已经提到的,我们遇到了在神经网络方法中经常发生的过拟合效应。该算法能够过度适应训练数据。因此,训练数据的高准确率导致测试数据的准确率较差。一种常用的防止过拟合的方法是使用丢弃率。我们在第3节中描述了丢弃率的工作原理,并在图1中进行了说明。

4.3 组合分类器

我们在前面的章节中描述了两种已实现分类器的结果,比较表明,这两种方法都能够基于单个CVSS属性对漏洞进行分类。对于每个属性的两个结果具有可比性,因此朴素贝叶斯和神经网络均未显著优于另一种方法。然而,我们的总体目标是创建一种能够对多个CVSS属性进行详细分类的方法。因此,我们考虑了保密性、完整性和可用性这一属性三元组,通常简称为CIA。CIA分类的结果如表3所示。我们根据先前描述的方法生成了这些结果。主要区别在于创建属性三元组的不同值组合。这些组合用于构建数据可能的标签。然后,工作流程与之前描述的基于单个属性的方法类似。因此,我们在训练数据集上训练了两种分类方法,并将得到的模型应用于评估数据集。该过程重复了10次,并计算了平均准确率。现在,计算时必须考虑标签的个体数量以得出正确的准确率,即我们现在使用公式2中的多标签准确率。

CVSS属性组合 朴素贝叶斯 神经网络
CIA 测试数据 63.9% 71.2%
CIA 验证数据 51.6% 53.4%
整体测试数据 61.4% 59.3%
整体验证数据 48.1% 49.1%

此外,综合分类在过程中包含了攻击范围。然后我们可以对可用性、完整性、保密性以及攻击范围进行预测,这通常足以深入分析漏洞的需求和影响。结果如表3所示。最后,我们可以观察到,使用机器学习技术进行自动化漏洞分类是可行的,从而为漏洞专家节省处理时间。此外,我们还可以看到神经网络在综合分类中的表现略优。

5 未来工作

所提出的方案代表了自动分类漏洞的首次尝试。这将有助于更快地分析已知漏洞的需求和影响。通常,手动处理描述信息所需的时间至关重要,因为攻击者也可能在此期间利用这些信息。因此,我们计划继续这项工作,以实现更高的准确率,并改进分类过程,使其可应用于公共漏洞数据库,例如国家漏洞数据库(NVD)[9], HPI-VDB[5]。对新收到的漏洞描述进行自动分类的可能性应能提高处理性能,因为目前专家仍需手动提取属性。这样一来,诸如漏洞 CVE‐2016‐077的延迟等问题将不再频繁发生。

此外,我们可以在公共安全论坛上使用训练模型来查找有关漏洞的讨论和见解。社区有时会在漏洞本身被正式或公开披露之前讨论有关漏洞的信息。因此,攻击者可能具有优势,因为他们已经可以解读这些内容并从所获得的信息中受益。我们认为,训练模型可以应用于自然语言帖子、讨论或其他文本。如果能够实现漏洞分类,或者所使用的词汇与其他已知漏洞描述中的词汇相似,那么该讨论或文本的主题极有可能是漏洞。最后,可以利用分类结果来评估所讨论的漏洞描述的是一个已知漏洞还是一个未知漏洞,这将大大增加其重要性。

6 结论

本文描述了一种应对因人工干预导致漏洞分类延迟的方法。该问题的产生是因为关于新发现漏洞的报告包含有关该漏洞的人类可读信息。这些信息将被转换为自然语言形式的漏洞描述。然而,大多数分析工具需要形式化属性来确定漏洞的需求和影响。我们提出一种自动方法,将漏洞及其自然语言描述分类到这些形式化属性中。因此,首要目标是研究自动化方法的可行性,其次评估其准确率。为此,我们实现了两种能够进行自动化分类的不同方法。其中一种方法采用了朴素贝叶斯[12],因为它是解决分类问题的广泛应用方法。另一种方法则依赖于神经网络,因为现代自然语言处理系统也广泛使用神经网络。

首先,我们确定了漏洞的最重要特征,即CVSS属性中的可用性、完整性、保密性以及攻击范围。然后,我们创建了训练、测试和验证数据集,并基于漏洞描述对模型进行了训练。这两种方法都需要一些额外的预处理步骤,正如第3节中已经描述的那样。朴素贝叶斯分类的应用优势在于它可以直接处理自然语言,而神经网络则需要额外的一个转换步骤。训练完成后,我们在测试数据集上评估了这两种方法。除了测试数据集外,我们还创建了一个验证数据集,因为神经网络方法在训练模型或调整参数时也会使用测试数据。因此,最重要的评估指标是验证数据集的准确率,因为它在训练过程中未被使用。我们发现自动化分类是可行的,对于单个属性的准确率根据属性和数据集的不同达到了70%到90%,结果也令人满意。组合属性的重要指标准确率较低,但在测试数据上仍能达到60%到70%,在验证数据上约为50%。由于这些属性组合累计超过100种可能的组合,我们认为约50%的准确率是一个可接受的结果。此外,结果显示两种方法在测试数据和验证数据上的表现存在差异。这一事实也可能表明,这些数据集中漏洞描述的语言本身存在差异。有可能是后期发布的漏洞在描述其影响时采用了不同的表述风格。尽管如此,实验结果已表明采用自动化分类方法具有实际应用价值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值