Page 115 - 《软件学报》2025年第12期
P. 115

5496                                                      软件学报  2025  年第  36  卷第  12  期


                 Abstract:  To  perform  fine-grained  vulnerability  detection,  an  ideal  model  must  determine  whether  software  contains  vulnerabilities  and
                 identify  the  type  of  vulnerability  (i.e.,  perform  vulnerability  classification).  A  series  of  deep  learning  models  have  demonstrated  strong
                 overall  performance  in  vulnerability  classification  tasks.  However,  a  severe  data  imbalance  exists  across  different  vulnerability  types.  Many
                 vulnerability  types  are  represented  by  only  a  small  number  of  samples  (referred  to  as  few-shot  types  in  this  study),  resulting  in  poor
                 classification  performance  and  generalization  for  these  few-shot  types.  To  enhance  classification  performance  for  these  types,  VulFewShot
                 is  proposed.  This  contrastive  learning-based  vulnerability  classification  framework  assigns  more  weight  to  few-shot  types  by  bringing
                 samples  of  the  same  type  closer  together  while  keeping  samples  from  different  types  further  apart.  Experimental  results  show  that
                 VulFewShot  improves  classification  performance  across  all  vulnerability  types.  The  smaller  the  number  of  samples  for  a  given  type,  the
                 more  significant  the  improvement.  Therefore,  VulFewShot  improves  classification  performance  for  vulnerabilities  with  limited  samples  and
                 mitigates the impact of sample size on the learning process.
                 Key words:  vulnerability classification; few shot; contrastive learning

                    如今各种网络攻击层出不穷, 一系列事件表明漏洞是大多数的网络攻击主要原因                            [1,2] . 在实践中, 软件的设计
                 缺陷使得漏洞在软件变得更加复杂的同时也更难以预防                    [3] . 因此, 以自动化、高效且准确的方式检测出软件漏洞
                 是至关重要的. 目前已有多种方法被用于检测软件漏洞. 传统的检测方法基于人工定义的规则或特征对漏洞的描
                 述  [4−8] , 这些方法对许多类型的漏洞都很有效但高度依赖人类专家的经验, 并不可避免地可能遇到大量的误报和漏
                 报  [9] . 为了减少专家工作量, 基于机器学习的检测方法被提出来自动学习和识别漏洞的特征                       [10,11] . 深度学习是相对
                 于机器学习的突破性技术, 它在漏洞检测中得到了广泛应用, 这些应用包括利用卷积神经网络                              (CNN) [12−15] 、长短
                 期记忆网络    (LSTM) [16−18] 等模型来提取漏洞的特征.
                    目前基于深度学习的漏洞检测方法更多的是采用二分类的方法检测一段代码是否包含漏洞                                 [14,16,17,19–22] . 但在
                 实际操作中, 识别漏洞类型也是调查漏洞产生原因并修复漏洞的必要手段. 在这种情况下漏洞检测自然会利用多
                 分类方法对漏洞进行分类. µVulDeePecker 是一种最先进的多分类系统, 它使用由                   3  个  BiLSTM  网络块组成的神
                 经网络对漏洞进行分类        [23] . 根据他们论文的结果, 它在漏洞类型分类方面可以取得理想的性能.
                    但是根据我们的统计显示, 这些数据集中不同类型漏洞的数量是严重不平衡的. 在重新评估µVulDeePecker
                 之后我们发现随着漏洞样本数量的减少, 不同漏洞类型的分类性能会随之下降使得预防工作无效                                 [24,25] . 在此结果
                 上继续评估了     CNN、BiGRU、BiLSTM    和  Atten-BiLSTM  等多个其他深度学习模型在漏洞分类任务上的效果, 发
                 现漏洞样本数量不平衡问题使得这些模型的分类性能依旧较差. 为了进一步研究性能较差的背后是否有其他的因
                 素存在, 我们在    MVD  数据集的基础上构建了一个更平衡且更符合少样本特征的数据集                       MVD-part. 实验表明在少
                 样本数据集中分类性能较差的问题依然存在.
                    为了缓解分类性能较差的问题, 少样本漏洞类型中该问题尤为明显, 我们将对比学习引入到漏洞分类任务中.
                 具体来说, 利用有监督的对比学习设计了一个新颖的训练过程, 该过程使得同一类型的漏洞样本之间相互“接近”,
                 同时使得不同类型的漏洞样本彼此“远离”, 从而更好地从少样本中提取出漏洞特征. 基于此训练过程, 我们实现了
                 基于对比学习的漏洞分类框架           VulFewShot, 并在  MVD [23] 和  MVD-part 数据上对该框架进行评估. 实验结果表明,
                 使用对比学习可以提升不同样本规模的各类漏洞的分类性能, 该提升在少样本的漏洞分类上提升尤为明显. 因此
                 VulFewShot 在分类性能方面弥合了大规模和小规模样本数量漏洞类型之间的差距.
                    综上所述, 本文做出了以下贡献.
                    (1) 全面分析了漏洞数据集中样本不平衡问题以及该问题对漏洞分类性能, 特别是少样本学习场景下的影响.
                    (2) 用对比学习提高了不同样本规模的漏洞分类性能, 尤其是少样本漏洞类型的分类性能.
                    (3) 设计并实现了    VulFewShot (代码已发布在    https://github.com/VulFewShot/VulFewShot), 这是一个基于对比
                 学习的漏洞分类框架. 同时对         4  种深度学习模型    (CNN、BiGRU、BiLSTM    和  Atten-BiLSTM) 进行了广泛实验, 证
                 明了对比学习确实带来了改进.
                    本文第   1  节介绍相关工作. 第    2  节描述漏洞分类的过程. 第       3  节介绍传统深度学习模型的分类性能. 第           4  节介
                 绍使用对比学习框架后模型的分类性能. 第              5  节讨论关键的潜在威胁. 第      6  节对本文总结并展望未来的工作.
   110   111   112   113   114   115   116   117   118   119   120