Page 222 - 《软件学报》2025年第7期
P. 222

邱少健 等: 基于函数间结构特征关联的软件漏洞检测方法                                                     3143


                 间内其他样本构建函数间结构特征相似关联图, 利用样本间关联性来结合待测样本本身信息与其他样本的信息一
                 同用于检测. 其构建结构特征关联图的机制可有效提升漏洞检测性能和模型泛化能力.
                    实验的对比涵盖了多类方法: 基于文本的              CodeBERT、基于图结构的       Devign 和 Reveal、基于代码可视化的
                 VulCNN  和基于代码行为的      VulBG. 通过与这些方法进行比较, 我们可以综合评估             CSFF-VD  的函数特征提取机制
                 对提升漏洞检测性能的有效性.

                 4.4   参数设置和实验环境
                    为确保实验的公正性与可重复性, 本研究在所有对比方法中统一采用相同的数据分割策略. 具体而言, 数据集
                 按照  8:1:1  的比例被随机划分为训练集、验证集和测试集. 本研究所提出的                  CSFF-VD  模型采用  Adam  优化器进行
                                                                  −4
                 参数优化, 其中, Gamma    参数设定为    0.9, 权重衰减设置为     5×10 , 训练周期   (epoch) 设定为  200, 初始学习率设定
                 为  0.01, 特征提取的维度设定为      256, 邻居节点数量设定为      5. 实验在一台高性能计算机上进行, 该计算机配置有英
                 特尔  i7-12700 CPU, 64 GB  内存, 以及  10 GB  显存的  NVIDIA 3080 GPU, 运行环境为  Ubuntu 20.04  操作系统.

                 4.5   评价指标
                    为了评估检测性能, 本文采用了漏洞检测研究中广泛使用的指标 Precision、Recall 、F-measure 和                 FNR. 在漏
                 洞检测任务中, 可能出现以下         4  种结果: ① 真正例   (true positive, TP): 将实际存在漏洞的实例正确检测为有漏洞.
                 ② 假正例   (false positive, FP): 将实际无漏洞的实例错误检测为有漏洞. ③ 假负例         (false negative, FN): 将实际存在
                 漏洞的实例错误检测为无漏洞. ④ 真负例            (true negative, TN): 将实际无漏洞的实例正确检测为无漏洞. 我们可以通
                 过这  4  种结果计算   3  种评价指标, 计算方法如下:

                                                              FN
                                                      FNR =                                          (11)
                                                            TP+FN

                                                                TP
                                                     Precision =                                     (12)
                                                              TP+FP

                                                               TP
                                                      Recall =                                       (13)
                                                             TP+FN

                                                         2× Precision×Recall
                                               F-measure =                                           (14)
                                                           Precision+Recall
                 其中, FNR  衡量  FN  实例在所有实际有漏洞实例中的比例, 可以反映模型对有漏洞样本的遗漏情况. 越高的                           FNR
                 表示模型对漏洞的遗漏情况更多, 模型的表现越差. Precision              衡量  TP  实例在所有分类为有漏洞的实例中所占的
                 比例, 可以反映模型对有漏洞样本分类的准确性. Recall 衡量              TP  实例在所有实际有漏洞实例中的比例, 可以反映
                 模型对无漏洞样本的误判情况. 越高的            Recall 表示模型对无漏洞样本的误判情况越少. F-measure 是           Precision  和
                 Recall 的调和平均值, 可以对     Precision  和  Recall 这两个指标进行有效的平衡. FNR    指标的最佳值为      0, 最差值为
                 100. Precision、Recall 和  F-measure 这  3  个评价指标的最佳值为 100, 最差值为 0. 通过这些指标, 我们可以全面评
                 估     CSFF-VD  在检测漏洞方面的性能, 从而为模型的有效性和实用性提供量化支持.
                 5   实验结果与分析

                 5.1   RQ1: CSFF-VD  在漏洞检测任务中的有效性如何?
                    为回答这一研究问题, 我们将          CSFF-VD  与  5  种对比方法在  3  个数据集上进行了性能比较, 验证了          CSFF-VD
                 在漏洞检测中的有效性. 对比结果如表            2 所示, 对比方法中的第      1 行表示该方法的对应评价指标, 第          2 行开头的“+”
                 或“−”分别表示    CSFF-VD  与其对比后上升或下降的幅度, 最佳性能用粗体标出. 总的来说, CSFF-VD                  在  3  个数据
                 集上的   F-measure  值分别为  67.8%、59.8%  和  48.8%. 这些结果相较于其他方法分别提高了              8.3%–30.6%、
                 7.0%–21.3%  和  33.6%–92.1%. F-measure 值的显著提升表明, CSFF-VD  在  Precision  和  Recall 之间实现了良好的
                 平衡, 是一种稳健的漏洞检测方法.
                    从其他指标观察, 在      FNR  方面, CSFF-VD  在  3 个数据集上的值分别为    11.7%、35.0%  和  45.9%. 除了在  Chrome+
   217   218   219   220   221   222   223   224   225   226   227