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

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


                 的相互依赖关系. 工具       Joern  解析这  3  种图结构并将其整合为一种表示方式, 记作           G CPG (V CPG ,E CPG ). 在该图中, 节

                 点集合   V CPG  表示代码语句或语法元素, 边集      E CPG  则描述各种类型的信息流. 为了从        G CPG  生成函数结构特征, 我们
                 实现了一个基于残差门控图神经网络的特征生成模块. 该步骤选择残差门控图神经网络的原因是其计算复杂度比
                 传统图注意力网络更低, 且比图卷积神经网络有更强的表示能力                     [12,28]  . 该模块首先使用  Word2Vec 将每个节点嵌
                                                                                    ]
                                    i   d                                 [  1  2  n T  n×d     n 表示节点
                 入到一个   d  维特征向量   α ∈ R , i ⩽ n 中, 所有节点共同形成特征矩阵      M = α ,α ,...,α  ∈ R  , 其中,
                             G CPG  中节点信息的上下文理解, 本文采用基于门控循环单元               (gated recurrent unit, GRU) 的聚合函
                 个数. 为了增强
                 数   f agg-GRU , 捕捉代码结构上下文. 该函数表示如下:

                                                              (      )
                                                     ℓ+1          ℓ  ℓ
                                                   M   = f agg-GRU AM ,M                              (3)
                                           ℓ
                                                  ℓ
                 其中,  A 表示  G CPG  的邻接矩阵,   M  表示第   层的节点特征矩阵. 更新后的节点表示           M ℓ+1   通过  f agg-GRU  聚合邻近节
                            ℓ             ℓ
                 点的信息   AM  以及输入特征      M  得到. 随后, 使用平均池化层整合各层所有节点的特征, 并将其连接形成函数结
                              d
                 构特征表示    x ∈ R .
                                                                                 X = x , x ,..., x . 函数独立结
                                                                                    {
                                                                                              }
                                                                                      1
                                                                                        2
                                                                                             N
                    在漏洞数据集中, 我们为每个函数生成独立结构特征, 构成函数独立结构特征
                 构特征生成模块使用数据集的子集进行训练. 需要注意的是, 整个                    CSFF-VD  框架在所有阶段使用数据集的同一个
                 子集进行训练, 从而避免信息泄露.

                 3.2   函数间关联特征提取
                    在本节中, CSFF-VD   利用了函数间独立结构特征的相似性, 通过提取关联特征来更有效地识别潜在的安全漏
                 洞. 具体来说, 如图    3  所示, 该过程主要分为两个步骤: 函数间结构特征相似关联图构建和关联特征提取.


                                        节点   距离        x 7  v 7     x 1     v 4  x 4
                                   构建函数间结构特征相似关联图  ··· v 3  ··· d 3  x 8  x 2  v 2  x  v  v 1  v 5  x 5
                                          v 1
                                              d 1
                                          v 2
                                              d 2
                                          v 4
                                              d 4
                                          v 8
                                              d 8
                                      选中距离最小的前
                                      k 个节点建立连接         v 8   v 3          x 6
                                                                       v 6



                                                                                   i
                                                              特征转换
                                v 7                                              Wx ,   Wx  j
                                                  v 4       注意力系数计算        FFN 注意力    点积注意力
                         提取函数间关联特征  v 2  v      注意力计算         系数归一化          e x i ,x  j  e x i ,x  j
                                            v 1
                                                                                         DP
                                                                              GO
                                                   v 5
                                                                                          MX
                              v 8
                                                                                   ×
                                   v 3                        注意力聚合               相乘     ϕ x i ,x  j
                                                             关联特征提取                MX
                                            v 6                                    e x i ,x  j

                                    图 3 函数间结构特征相似关联构建和函数间关联特征提取方法
   213   214   215   216   217   218   219   220   221   222   223