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

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


                    一种可能的内部威胁是以特定库/API 函数调用为起点的代码片段漏洞. 我们没有使用整个程序代码, 而是使
                 用这些代码片段来提取特征, 这些特征在多项研究中被证明对漏洞的检测和分类是有效的                              [16,20,23] . 并且提取的代
                 码片段不仅是原始漏洞代码的一部分而且是可解释的. 相关研究正试图基于代码片段检测并以图片的形式直观地
                 表示漏洞.
                    另一个潜在的内部威胁可能是我们对类型尺度的定义. 由于不同漏洞类型之间的严重数据不平衡                                 (最大的有
                 17 872  个漏洞样本, 最小的只有    6  个), 不能将所有漏洞类型降采样到最小的大小, 因为大多数样本将会丢失. 因此,
                 本文采用了分层的下采样策略, 以保持不同规模的漏洞数量相对均匀. 明确地说, 将样本量在                           400  以上的类型设置
                 为大规模类型, 样本量在       80–400  之间的为中等规模类型, 样本量小于          80  的为小规模类型. 这样一来, 数据相对比
                 较均衡, 从而便于考察模型在各种规模的漏洞类型上的表现.
                    最后, 数据集的质量和代表性可能是我们研究的外部威胁. 我们相信                     MVD  的质量, 因为它是由专门从事安全
                 工作的研究人员构建的并且已经在各种现有的研究中使用. 与此同时, 数据集中漏洞片段的提取是基于相应的
                 CWE ID, 我们已经观察到具有相同类型标签的代码片段的数据特征有相似之处. 未来, 可以在更多的漏洞分类数
                 据集上进一步验证我们的发现.

                  6   结 论
                    在本文工作中, 我们发现漏洞类型之间存在严重的数据不平衡. 然后本文评估了多个传统深度学习模型, 包
                 括  CNN、BiGRU、BiLSTM   和  Atten-BiLSTM, 来对漏洞进行分类. 结果表明, 不同漏洞类型的分类性能随着漏洞
                 样本数量的减少而下降, 导致在少样本类型上的分类性能较差. 为了应对这一挑战, 本文实现了                             VulFewShot, 这是
                 一个基于对比学习的漏洞分类框架, 以提高当前的分类性能. VulFewShot 显著提高了整体水平和不同样本规模下
                 所有类型漏洞的分类性能, 并且在少样本类型上的提升是不可否认的, 这进一步提升了整体性能.
                    MVD  和  MVD-part 数据集的评估结果表明, VulFewShot 不仅在总体水平上, 而且在具有不同样本规模的所有
                 类型的漏洞上, 都显著提高了分类性能. 这种改进在少样本类型上尤其明显, 这进一步提高了整体性能.未来, 我们
                 有兴趣应用更多的特征提取方法来探索其他编程语言                   (如  Python、Java 等) 中的漏洞分类任务, 并在      3  种不同规
                 模的漏洞大小     (大、中、小) 上进一步实验这         4  种传统的深度学习模型.

                 References:
                  [1]   Sun N, Zhang J, Rimba P, Gao S, Zhang LY, Xiang Y. Data-driven cybersecurity incident prediction: A survey. IEEE Communications
                     Surveys & Tutorials, 2019, 21(2): 1744–1772. [doi: 10.1109/COMST.2018.2885561]
                  [2]   Liu L, De Vel O, Han QL, Zhang J, Xiang Y. Detecting and preventing cyber insider threats: A survey. IEEE Communications Surveys &
                     Tutorials, 2018, 20(2): 1397–1417. [doi: 10.1109/COMST.2018.2800740]
                  [3]   Rajeh W, Jin H, Zou DQ. Saudi cloud infrastructure: A security analysis. Science China Information Sciences, 2017, 60(12): 122102.
                     [doi: 10.1007/s11432-016-0322-7]
                  [4]   Cherem S, Princehouse L, Rugina R. Practical memory leak detection using guarded value-flow analysis. In: Proc. of the 28th ACM
                     SIGPLAN  Conf.  on  Programming  Language  Design  and  Implementation.  San  Diego:  ACM,  2007.  480–491.  [doi:  10.1145/1250734.
                     1250789]
                  [5]   Fan G, Wu RX, Shi QK, Xiao X, Zhou JG, Zhang C. SMOKE: Scalable path-sensitive memory leak detection for millions of lines of
                     code. In: Proc. of the 41st IEEE/ACM Int’l Conf. on Software Engineering (ICSE). Montreal: IEEE, 2019. 72–82. [doi: 10.1109/ICSE.
                     2019.00025]
                  [6]   Li W, Cai HP, Sui YL, Manz D. PCA: Memory leak detection using partial call-path analysis. In: Proc. of the 28th ACM Joint Meeting
                     on European Software Engineering Conf. and Symp. on the Foundations of Software Engineering. ACM, 2020. 1621–1625. [doi: 10.1145/
                     3368089.3417923]
                  [7]   Shi QK, Xiao X, Wu RX, Zhou JG, Fan G, Zhang C. Pinpoint: Fast and precise sparse value flow analysis for million lines of code. In:
                     Proc. of the 39th ACM SIGPLAN Conf. on Programming Language Design and Implementation. Philadelphia: ACM, 2018. 693–706.
                     [doi: 10.1145/3192366.3192418]
                  [8]   Smith J, Johnson B, Murphy-Hill E, Chu B, Lipford HR. How developers diagnose potential security vulnerabilities with a static analysis
   122   123   124   125   126   127   128   129   130   131   132