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

3138                                                       软件学报  2025  年第  36  卷第  7  期


                                                           (∑         )
                                                   *
                                                  h = ReLU       a uv Wh v                            (2)
                                                   u          v∈N u
                 其中,  W  为更新节点特征的权重矩阵,        ReLU  为非线性激活函数. 通过引入自适应的注意力机制, GAT 为图中节点
                 的特征分配不同的权重, 从而增强了模型的表达能力和鲁棒性. GAT 在许多图数据处理和分析任务中表现优异,
                 成为图表示学习领域的重要模型之一.

                 3   基于函数间结构特征关联的软件漏洞检测方法                     CSFF-VD

                    本节中介绍了基于函数间结构特征关联的漏洞检测方法                    CSFF-VD  的技术框架, 该框架旨在利用函数内独立
                 结构特征之间的结构相似性来增强漏洞检测的效果. 如图                   2  所示, 该框架包括    3  个主要阶段: ① 将函数解析为代
                 码属性图并生成函数独立结构特征; ② 构建函数间结构特征相似关联图, 并从中提取关联特征; ③ 应用分类技术
                 进行漏洞检测.

                    独立结构特征提取            AST
                                        CFG
                                        PDG
                                                                                CPG
                                  使用 Joern                     输入               CPG  提取结构特征
                                    转换


                       函数源码                     代码属性图             门控残差图卷积神经网络              独立结构特征








                                       关联                      输入                提取     检测     有漏洞
                                       构建
                                     …
                                                                                               无漏洞
                                                                    图注意力降噪机制

                     多函数特征向量表示             函数间结构特征相似关联图              图注意力网络      关联特征向量

                                    图 2 基于函数间结构特征关联的软件漏洞检测方法                  CSFF-VD

                    首先, CSFF-VD  构建函数的代码属性图表示, 并将其输入到神经网络中进行函数内独立结构特征的提取. 通
                 过这种方式, 可以有效地捕捉每个函数的独立结构特征, 为后续的特征关联挖掘奠定基础. 随后, 在各函数以独立
                 结构特征向量表示的基础上, CSFF-VD          通过计算函数间独立结构特征的欧氏距离, 来构建函数节点间的有向边,
                 从而形成函数间的结构特征相似关联图, 作为注意力图神经网络的输入, 从而充分挖掘函数间的结构相似性信息,
                 以提高漏洞检测的准确性和全面性. 最后, CSFF-VD            使用图注意力网络对所生成的函数间结构特征相似关联图提
                 取关联特征, 用于漏洞检测模型的构建.

                 3.1   函数独立结构特征生成
                    不同于自然语言, 代码作为一种特殊的文本, 包含丰富的结构信息. 在                    CSFF-VD  框架的第  1  步, 我们对每个函
                 数进行解析, 以生成其独立的结构特征. 具体而言, 我们利用静态代码分析工具                       Joern [29] 对每个函数进行解析, 并将
                 其转换为代码属性图        CPG. 代码属性图将抽象语法树         AST、控制流图     CFG  和程序依赖图    PDG  整合为一个联合
                 的代码图表示. 其中, AST     提供语法元素之间的层次关系, CFG          提供控制流信息, PDG      则表明数据之间和语句之间
   212   213   214   215   216   217   218   219   220   221   222