System.ArgumentOutOfRangeException: 索引和长度必须引用该字符串内的位置。 参数名: length 在 System.String.Substring(Int32 startIndex, Int32 length) 在 zhuanliShow.Bind() 一种多维度特征融合的源代码漏洞检测方法技术_技高网

一种多维度特征融合的源代码漏洞检测方法技术

技术编号:44620411 阅读:7 留言:0更新日期:2025-03-17 18:19
本发明专利技术公开了一种多维度特征融合的源代码漏洞检测方法,首先将源代码表示为程序依赖图,然后对其进行切片处理以降低复杂度得到切片依赖图。随后,通过命名规范化和Doc2Vec技术将源代码转换为向量表示,保留语义信息。接着,分别在双曲空间和欧氏空间中对切片图进行嵌入学习,捕获不同视角下的漏洞特征,通过结合双曲空间的层次结构表征能力和欧氏空间的局部特征捕获能力,实现对源代码的全面和深入分析。最后,设计了一种融合策略,将两个空间中提取的特征进行有效融合,包含多层感知机的分类预测模块进行漏洞分类预测。本发明专利技术实现对源代码的全面和深入分析,更准确地识别和定位源代码中的潜在漏洞。

【技术实现步骤摘要】

本专利技术涉及源代码漏洞检测的,尤其是指一种多维度特征融合的源代码漏洞检测方法


技术介绍

1、源代码漏洞检测是软件安全领域的一个重要研究方向,其目标是识别并修复软件中可能导致安全风险的缺陷。随着软件系统的不断增长和复杂化,手动检测漏洞变得越来越困难,因此自动化的漏洞检测方法受到了广泛关注。近年来,基于深度学习的漏洞检测方法由于其强大的特征提取能力而成为研究热点。然而,现有的深度学习方法大多依赖于单一欧氏空间代码嵌入,这限制了它们在捕获代码中复杂漏洞模式方面的能力。深度学习技术在图像处理、自然语言处理等领域虽然已取得了巨大成功,但在源代码漏洞检测领域,其潜力尚未被完全挖掘。源代码具有丰富的结构和语义信息,传统的欧氏空间嵌入方法难以完整地捕获这些信息。双曲空间,作为一种非欧几何空间,以其独特的几何特性为表示学习提供了新的视角。特别是在表征具有层次结构和复杂关系的数据时,双曲空间展现出了优越的性能。


技术实现思路

1、本专利技术的目的在于克服现有技术的缺点与不足,提出了一种多维度特征融合的源代码漏洞检测方法,通过结合双曲空间的层次结构表征能力和欧氏空间的局部特征捕获能力,实现对源代码的全面和深入分析,更准确地识别和定位源代码中的潜在漏洞。

2、为实现上述目的,本专利技术所提供的技术方案为:一种多维度特征融合的源代码漏洞检测方法,包括以下步骤:

3、s1:获取源代码的程序依赖图pdg,并对其进行切片处理得到切片级子图,称为s-pdg,为模型训练提供切片级别的代码图,使得模型能够在细粒度级别对漏洞进行预测;

4、s2:对s-pdg进行标准化和嵌入处理,具体是执行s-pdg中节点的代码标准化以及将每个s-pdg的节点的代码令牌嵌入到向量表示中,从而减少程序变量个性化命名带来的噪音,提升原始代码语义的保留;

5、s3:设计源代码的双曲空间嵌入模块,称为dhgcn,该dhgcn包括双曲映射层、双曲图卷积神经网络层和全局注意力池化层,其利用双曲图卷积神经网络基于双曲空间实现代码图层次结构特征的深度挖掘,以低失真表现实现代码图的双曲嵌入表示;

6、s4:设计源代码的欧氏空间嵌入模块,称为degcn,该degcn包括图卷积层、图池化层和图读出层;利用结合图卷积层、图池化层和图读出层的图卷积神经网络架构执行源代码的欧几里得嵌入表示,其中图卷积层与图池化层衔接在一起称为卷积池化块;

7、s5:设计向量融合模块,将双曲嵌入表示与欧几里得嵌入表示进行融合,得到融合后的向量表示;

8、s6:将融合了双曲嵌入表示与欧几里得嵌入表示的向量输入包含多层感知机的分类预测模块进行漏洞分类预测。

9、进一步,所述步骤s1的具体操作步骤如下:

10、s11:考虑源代码的控制依赖性和数据依赖性采用joern工具来生成程序依赖图pdg;

11、s12:利用svf自动识别系统api调用,并使用antlr来识别算术运算符,将它们视为主要切片程序基准点,基于切片程序基准点进行代码切片;

12、s13:通过切片程序基准点迭代遍历pdg执行前向和后向切片:首先,s-pdg的节点是从切片程序基准点开始进行前向和后向切片得到的;对于前向切片,从切片程序基准点开始沿着pdg执行前向遍历,得到前向切片语句集sf;对于后向切片,从切片程序基准点开始遍历pdg以包含所有访问过的语句得到后向切片语句集sb;sf和sb中的语句是最终的语句集,即sf∪sb,它们保留源代码的控制流和数据流信息,并根据最终的语句集生成s-pdg的节点;然后,根据pdg的边连接sf∪sb中的节点以生成最终的s-pdg,从而在切片级别捕获程序的控制依赖性和数据依赖性。

13、进一步,所述步骤s2的具体操作步骤如下:

14、s21:用符号名称替换用户定义的变量名和函数名,将每个变量名和函数名映射到一个通用标识符和一个单独的索引,即自定义函数名与变量名统一规范为fun0、fun1、var0、var1这样的统一索引表示;

15、s22:对于构建的每个s-pdg,采用预训练好的doc2vec执行非结构化代码信息,即s-pdg上每个标准化后节点代码令牌的嵌入,其中所述doc2vec能够将s-pdg整个节点代码语句而不是单个代码令牌编码为固定长度的向量。

16、进一步,在步骤s3,所述双曲映射层、双曲图卷积神经网络层、全局注意力池化层的具体情况如下:

17、a、双曲映射层:

18、dhgcn的输入包括s-pdg的结构化和非结构化信息,即邻接矩阵和节点特征向量矩阵,步骤s2代码标准化和嵌入后的节点特征依然是属于欧几里得特征,需要将欧氏空间的节点特征向量映射到双曲空间中,双曲映射层将s-pdg的节点特征向量矩阵映射到双曲空间中,双曲映射层中的变换操作如下公式:

19、

20、式中,是欧几里得空间中的节点特征向量,是映射后双曲空间中的节点特征向量;c是双曲空间的曲率;表示从欧几里得空间到双曲空间的指数映射,基于原点o,设表示曲率为c、维度为d的双曲空间中的原点;表示向量的欧几里得范数;cosh和sinh分别是双曲余弦和双曲正弦函数;

21、b、双曲图卷积神经网络层:

22、经双曲映射层得到节点特征向量的双曲空间表示后,输入到双曲图卷积神经网络层对其进一步处理,双曲图卷积神经网络层包括双曲线性层、双曲聚合层和双曲激活层,在双曲图卷积神经网络层中的消息传递如下公式:

23、

24、式中,hi是双曲线性层更新后的节点特征向量,hi′是双曲聚合层聚合后的节点特征向量,hi″是双曲激活层激活后的节点特征向量;j∈n(i)表示节点i的邻居节点j;hj是节点i的邻居节点j经双曲线性层更新后的节点特征向量;w是双曲线性变换的权重矩阵;是对数映射;表示双曲空间中的莫比乌斯向量乘法;n(i)是节点i的邻居节点集合,|n(i)|是节点i的邻居节点数量;σ是欧几里得空间中的激活函数;

25、双曲图卷积神经网络层以低失真度保留了代码图的树结构,通过这种方式,双曲图卷积神经网络层顺利地将欧几里得特征转换为保留节点层次结构的双曲嵌入,在双曲空间中进行注意力聚合,能够更多地关注到程序代码中具有高层次结构的节点;

26、dhgcn能够堆叠多个双曲图卷积神经网络层,在每一层,双曲图卷积神经网络层都会变换并聚合中心节点切线空间中邻居的嵌入,并将结果投影到具有不同曲率的双曲空间,最后一层的双曲嵌入结果输入全局注意力池化层;

27、c、全局注意力池化层:

28、将最后一层双曲图卷积神经网络层输出后得到的双曲嵌入的节点特征向量输入全局注意力池化层做进一步处理,全局注意力池化层能够从双曲图卷积神经网络层输出的代码图的双曲嵌入隐藏表示中提取全局信息,而不仅仅局限于局部区域,通过计算权重并加权汇总,该全局注意力池化层能够将输入的复杂性降低为一个全局表示,从而提高计算效本文档来自技高网...

【技术保护点】

1.一种多维度特征融合的源代码漏洞检测方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种多维度特征融合的源代码漏洞检测方法,其特征在于,所述步骤S1的具体操作步骤如下:

3.根据权利要求2所述的一种多维度特征融合的源代码漏洞检测方法,其特征在于,所述步骤S2的具体操作步骤如下:

4.根据权利要求3所述的一种多维度特征融合的源代码漏洞检测方法,其特征在于,在步骤S3,所述双曲映射层、双曲图卷积神经网络层、全局注意力池化层的具体情况如下:

5.根据权利要求4所述的一种多维度特征融合的源代码漏洞检测方法,其特征在于,在步骤S4,所述图卷积层、图池化层、图读出层的具体情况如下:

6.根据权利要求5所述的一种多维度特征融合的源代码漏洞检测方法,其特征在于,在步骤S5,对于在双曲空间使用双曲图卷积神经网络得到的图嵌入向量VH,以及在欧氏空间使用图卷积神经网络框架得到的图嵌入向量VE进行进一步融合;在这项融合工作中,设置了两个可训练的权重融合参数w1和w2,根据模型使用随机梯度下降算法进行自动训练调整,形式上,融合表示计算为:

7.根据权利要求6所述的一种多维度特征融合的源代码漏洞检测方法,其特征在于,在步骤S6,最后将融合了双曲嵌入表示与欧几里得嵌入表示的向量Vweight输入包含多层感知机的分类预测模块进行最终预测,它允许检测特征之间的高阶关系,多层感知机中每个隐藏层包含一个线性层、一个ReLU激活函数层和一个Dropout层,最后使用softmax层输出类标签的概率,即漏洞分类结果。

...

【技术特征摘要】

1.一种多维度特征融合的源代码漏洞检测方法,其特征在于,包括以下步骤:

2.根据权利要求1所述的一种多维度特征融合的源代码漏洞检测方法,其特征在于,所述步骤s1的具体操作步骤如下:

3.根据权利要求2所述的一种多维度特征融合的源代码漏洞检测方法,其特征在于,所述步骤s2的具体操作步骤如下:

4.根据权利要求3所述的一种多维度特征融合的源代码漏洞检测方法,其特征在于,在步骤s3,所述双曲映射层、双曲图卷积神经网络层、全局注意力池化层的具体情况如下:

5.根据权利要求4所述的一种多维度特征融合的源代码漏洞检测方法,其特征在于,在步骤s4,所述图卷积层、图池化层、图读出层的具体情况如下:

6.根据权利要求5所述的一种多维度特征融...

【专利技术属性】
技术研发人员:景永俊陈子雄陈旭王叔洋唐莉君
申请(专利权)人:北方民族大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1