VulExplainer A Transformer-Based Hierarchical
Distillation for Explaining Vulnerability Types
Abstract
提出了一种解释漏洞类型的方法。引入了基于 Transformer 的软件漏洞分类分层蒸馏,以
解决高度不平衡的软件漏洞类型。具体来说,我们根据 CWE 抽象类型(即对相似的 CWE-
ID 进行分组的分类)将复杂的标签分布拆分为子分布。因此,相似的CWE-ID可以被分
组,并且每个组将具有更平衡的标签分布。分别在每个分类上训练 TextCNN 教师模型,然
而,他们只在自己的组中表现良好。因此,构建了一个 Transformer 学生模型,通分层知
识蒸馏框架来概括 TextCNN 教师的表现。通过使用现实世界中的 8,636 个漏洞进行广泛评
估,方法比所有基线高出 5%–29%。结果还表明,方法可以应用于基于 Transformer 的架
构,例如 CodeBERT、GraphCodeBERT 和 CodeGPT。此外,方法保持与任何基于
Transformer 的模型的兼容性,无需任何架构修改,而只需向输入添加特殊的蒸馏令牌。
1 Introduction
1. 如果漏洞分类时能给出漏洞类型(CWE-ID)可以帮助安全工程师
2. 已有几种自动化方法来识别给定程序或漏洞描述的CWE-ID,但由于收集方法和数据
集的不平衡问题,导致方法效果不佳
3. 从深度学习领域的文章受到启发,使用蒸馏从一个或多个教师模型转移知识到学生模
型
4. 推测按照标签频率分组有助于减轻数据不平衡问题(将相似的CWE-ID分成一组),
根据NVD官网将CWE分成五组(base、category、class、variant和deprecated)
贡献
5. 提出了VULEXPLAINER,一种分层软件漏洞蒸馏方法,包括两个阶段,旨在解决
SVC 的数据不平衡问题
6. 提出了一种新颖的数据划分方法来分割标签基于 CWEID 的分层性质,分布为由更相
似的 CWE-ID 组成的多个更平衡的子分布
7. 引入了基于 Transformer 模型自注意力机制的蒸馏方法,根据源代码数据的层次结构
从多个 TextCNN 教师中分层蒸馏知识。
8. 将 VULEXPLAINER 与第 IV-B 节中提到的七种竞争性基线方法进行比较来进行广泛的
评估。
9. 将VULEXPLAINER 与针对不平衡数据问题提出的两种先进的基于损失的方法(即焦
点损失和 logit 调整)进行比较来进行实证评估。