type
status
date
slug
summary
tags
category
icon
password
Property
Oct 13, 2024 01:26 AM
论文题目:Multiclass Classification of Software Vulnerabilities with Deep Learning
论文作者:Crystal Contreras, Hristina Dokic等
发表会议/期刊:Computers & Security(ICMLC 23,EI)
发布时间:2023年
Part 1 研究背景
1. 关于漏洞分类技术的现状问题
目前多数软件漏洞检测技术仅能检测漏洞是否存在,只有少数技术具备对检测到的漏洞进行分类的能力。这种现状导致开发者难以快速了解漏洞性质并制定相应修复策略,增加了修复漏洞的时间和成本。
2. 基于深度学习的漏洞分类方法面临的挑战问题
- 分类标准选择问题
漏洞分类存在多种标准,如何选择合适的分类标准是一个关键问题。从开发者修复漏洞的角度出发,需要更细粒度的分类标准才更有助于工作开展。
- 特征识别问题
要根据选定的分类标准确定能够区分不同漏洞类型的特征。使用前人工作中的数据集进行多类分类时,对于那些原本专注于检测漏洞(进行二元分类)的前人研究,其所用特征是否能满足当前多类分类的需求并不明确。
- 深度学习算法选择问题
众多不同的深度神经网络算法中,哪一种算法在漏洞分类任务中能取得最佳效果需要确定。
Part 2 实验思路
数据处理阶段
数据集选择与来源:选用来自 SARD 和 NVD 的数据集,包含 54,049 个脆弱样本,以 CWE IDs 作为漏洞类型,涵盖 50 个 CWE IDs。每个样本是一个封装了脆弱代码语法特征的程序切片。
样本向量化处理:
- 首先将样本分割成 tokens,去除注释和空格,对特定语言元素保留,用户定义元素采用通用命名约定。
- 然后使用 Word2Vec 模型将 tokens 转换为向量。对 Word2Vec 模型设置特定超参数进行训练,包括
alpha、min frequency count、max vocab size
等。
- 由于向量表示中样本长度不平衡,通过计算平均长度,对长度不足的样本进行填充,长度过长的样本进行截断处理,最终得到适合模型输入的三维形状数据,还进行了扁平化处理以减少训练时间。
模型选择思路
考虑到深度神经网络处理复杂数据的能力以及漏洞分类任务的特点,选择 Bidirectional Gated Recurrent Unit (BGRU) 和 Bidirectional Long Short - Term Memory (BLSTM) 两种深度神经网络模型。
处理顺序数据的能力
软件漏洞分类任务中,程序代码的特征具有顺序性。代码中的语句顺序、函数调用顺序等都可能包含与漏洞相关的信息。GRU 和 LSTM 专门用于处理顺序数据。它们能够捕捉数据中的序列信息,这对于分析程序代码中的漏洞特征非常关键。
解决梯度消失问题
GRU 和 LSTM 通过其特殊的门控机制(如更新门和遗忘门)解决了梯度消失问题。它们可以更好地保留和更新模型在训练过程中的重要信息,从而更有效地学习程序代码中与漏洞相关的复杂特征。
双向结构的优势
双向的 GRU(BGRU)和双向的 LSTM(BLSTM)不仅可以捕捉正向序列中的信息,还可以捕捉反向序列中的信息,能够综合考虑代码前后文的信息,更全面地理解漏洞特征。例如,一个函数调用可能在其前后的代码中都有相关的上下文信息对判断是否存在漏洞以及漏洞类型有帮助,双向结构可以同时利用这些信息。
Part 3 实验过程
训练与验证思路
超参数确定:通过网格搜索和分层 3 - fold 交叉验证的方法确定模型的超参数。在隐藏层使用 sigmoid 激活函数,recurrent 激活函数使用 hard sigmoid,损失函数采用 categorical cross - entropy,评估指标选择 categorical accuracy 和 recall,密集层激活函数使用 softmax。
数据集划分:将数据集按照 80% 和 20% 的比例随机划分为训练集和测试集,且采用分层划分技术确保 50 个类别的比例在划分后保持不变。
实验环境:在配备 AMD Ryzen Threadripper 3970X CPU(3.7GHz)和 NVIDIA Quadro RTX 5000 GPU 的服务器上进行实验。
Part 4 结果分析
综合数据集实验问题(RQ1)
使用包含语法漏洞特征 API、AE、AU 和 PTR 的综合数据集进行多类漏洞分类时,所构建的模型效果如何?需要对模型的有效性进行评估,并解释其有效或无效的原因。
单一语法漏洞特征数据集实验问题(RQ2)
在仅包含单一语法漏洞特征的数据集上进行多类漏洞分类时,模型的效果怎样?同样需要评估模型有效性并解释原因。
通过计算多个评估指标来分析模型的有效性,包括
平均和加权 F1 - measure(F1 - score)、召回率(recall)、误报率(false positive rate)和漏报率(false negative rate)
。考虑到数据集不平衡的情况,加权平均计算时会根据每个漏洞类别的权重进行计算。- BGRU + SySeVR 模型在多项指标上优于 BLSTM + SySeVR 模型。BGRU 模型的平均 F1 值(M_F1)为 87.67%,而 BLSTM 模型为 84.34%。这表明 BGRU 模型在对 SySeVR 数据集进行软件漏洞分类时,整体性能更好,能够更准确地对漏洞进行分类
- BGRU + SySeVR 模型的平均真正率(M TPR)为 0.8680,高于 BLSTM + SySeVR 模型的 0.8484。这意味着 BGRU 模型更有可能正确地识别出正例,即正确地判断出存在漏洞的样本
- 本文所使用的 BGRU + SySeVR 模型(M F1 = 0.8767)性能更优。这进一步验证了本文模型在该数据集上的有效性和优势。
使用 SySeVR 数据集且样本数量至少为 100 的类别中,两个模型(BLSTM 和 BGRU)的 F1 - scores 情况
- 结果是针对 SySeVR 数据集里那些样本数量不少于 100 的类别进行分析得到的。这是为了在一定程度上保证结果的可靠性和代表性,避免因样本数量过少而导致的结果偏差
- F1 - score 是综合考虑了精确率(precision)和召回率(recall)的一个评估指标,用于衡量模型在分类任务中的性能。它的取值范围在 0 到 1 之间,越接近 1 表示模型的性能越好。
Table 4 展示了针对每个脆弱语法特征(API、AE、AU、PTR),两种模型(BLSTM 和 BGRU)的实验结果。
- 在各个脆弱语法特征上,BGRU 模型的表现与 BLSTM 模型相近或略优。在 API 特征上,BLSTM + API 的平均 F1 值为 0.7839,BGRU + API 为 0.8153;
- 两种模型在 AU 和 PTR 类型上的表现通常优于在 API 和 AE 类型上的表现,不同语法特征对模型性能有差别,以及不同模型在不同特征下的适应性也存在差异。
- 样本数量与正确预测之间没有足够强的证据支持存在相关性。这意味着模型的性能不仅仅取决于样本数量,还受到其他因素的影响,如语法特征的复杂性、模型本身的结构和学习能力等。
Part 5 总结
主要研究软件漏洞的多类分类问题。介绍使用深度学习模型自动分类漏洞的方法,包括选用合适的分类标准(CWE),从包含多种语法特征的数据集提取特征,选择 BGRU 和 BLSTM 两种深度神经网络模型进行训练和比较,通过一系列实验分析模型在综合数据集及单一语法特征数据集上对不同漏洞类别的分类效果,最终得出所提方法在漏洞分类上具有合理性能的结论
上一篇
04-论文阅读——基于CNN-GAP可解释性模型的软件源码漏洞检测方法
下一篇
02论文阅读——VulGAI: vulnerability detection based on graphs and images
- 作者:百川🌊
- 链接:https://www.baichuanweb.cn/article/example-79
- 声明:本文采用 CC BY-NC-SA 4.0 许可协议,转载请注明出处。