【技术实现步骤摘要】
基于树型注意力和加权图匹配的相似漏洞检测方法
[0001]本专利技术涉及一种软件相似漏洞检测方法,具体涉及一种基于树型注意力和加权图匹配的相似漏洞检测方法。
技术介绍
[0002]近年来,随着软件规模和复杂度的快速增加,代码重用越来越频繁,导致软件中出现的相似漏洞越来越多。检测软件中的相似漏洞正成为软件安全领域的一个重要问题。采用自动化的方式将正在处理的漏洞确定为与已知漏洞相似的漏洞,不仅可以避免新的漏洞被作为未知漏洞来处理,还可以为开发者提供修复漏洞的参考,加快软件漏洞修复的效率。目前,基于代码相似性的相似漏洞检测方法主要是通过比较待测代码和已知漏洞代码之间的相似性来判定相似漏洞,通常采用基于哈希函数的漏洞签名直接计算相似性。然而,现有的基于哈希函数的漏洞签名或指纹的方法不能表示漏洞相关的深层语义特征,难以适用于软件中语义相似的漏洞检测。
[0003]在相似漏洞检测任务中,存在以下挑战:1)代码的漏洞实例和补丁之间只有较小的差异,难以区分目标函数究竟相似于漏洞还是补丁。2)在真实项目的漏洞代码中,往往存在大量和漏洞无关的语句。为此,一种有效的相似漏洞检测方法应具备如下两个特性:1)它能够识别真实项目中漏洞代码和已打补丁的代码之间的细微差别。2)它能够关注漏洞和补丁中的关键信息和差异信息,而忽略甚至消除多余的与漏洞无关的信息对检测造成的干扰。
技术实现思路
[0004]本专利技术的目的是提供一种基于树型注意力和加权图匹配的相似漏洞检测方法,该方法主要由三个部分组成:(1)能够表征代码的语法和语 ...
【技术保护点】
【技术特征摘要】
1.一种基于树型注意力和加权图匹配的相似漏洞检测方法,其特征在于所述方法包括如下步骤:步骤1:利用静态解析工具解析源代码,并生成CPG,CPG将AST、PDG合并为一个数据结构;步骤2:分别为目标函数、漏洞函数和补丁函数生成FCG、vSCG、pSCG;步骤3:利用由CodeBERT模型和树型注意力机制构成的语句节点嵌入网络,分别提取FCG、vSCG和pSCG语句节点的语义和语法信息,生成由语义特征向量和语法特征向量组成的语句节点初始嵌入向量;步骤4:利用图神经网络分别对FCG、vSCG、pSCG进行表示学习,学习每个节点的向量表示;步骤5:利用加权图匹配方法分别计算FCG和vSCG之间、FCG和pSCG之间的相似度;步骤6:利用标签信息和步骤5计算得到的相似度,计算三元组损失函数,根据误差反向传播调整语句节点嵌入网络和由图神经网络和加权图匹配方法构成的图匹配模型的参数,直到语句节点嵌入网络和图匹配模型对输入的响应达到预定的目标范围为止,训练结束,得到由语句节点嵌入网络和图匹配模型构成的相似漏洞检测模型;步骤7:用训练好的相似漏洞检测模型对代码进行相似漏洞检测。2.根据权利要求1所述的基于树型注意力和加权图匹配的相似漏洞检测方法,其特征在于所述步骤2的具体步骤如下:步骤21:对于待测的目标函数,首先提取其对应的PDG,然后将语句对应的AST扩展到PDG的每个节点,最后形成FCG;步骤22:对于需要与目标函数进行匹配的漏洞函数,首先通过分析漏洞和diff文件找到被删除的语句,将删除的语句视为漏洞语句,将漏洞语句作为切片准则,使用程序切片技术在PDG中找到切片节点,然后通过数据依赖和控制依赖将这些节点连接起来,再以切片中的每个节点作为根节点,展开其对应的AST,形成漏洞函数的切片复合图,记为vSCG;若diff文件中只有添加的语句而没有删除语句,则通过从漏洞函数的PDG及其对应的补丁函数的pSCG中提取相同的节点和边来生成vSCG;步骤23:对于需要与目标函数进行匹配的补丁函数,通过分析漏洞和diff文件找到添加的语句,将添加语句视为补丁语句,将补丁语句作为切片准则,使用程序切片技术在PDG中找到切片节点,然后通过数据依赖和控制依赖将这些节点连接起来,再以切片中的每个节点作为根节点,展开其对应的AST,形成补丁函数的切片复合图,记为pSCG;如果在diff文件中只有删除的语句而没有添加的语句,则通过从漏洞函数的PDG及在步骤22中生成的vSCG中提取相同的节点和边来生成pSCG。3.根据权利要求1所述的基于树型注意力和加权图匹配的相似漏洞检测方法,其特征在于所述步骤3的具体步骤如下:步骤31:对于FCG、vSCG、pSCG中任一语句节点v
i
,使用经过漏洞数据训练微调后的CodeBERT模型,来学习语句中token之间的依赖关系,以获得节点v
i
对应的语义特征向量表示,记为步骤32:利用树型注意力机制生成节点v
i
的语法特征向量;
步骤33:将语义特征向量和语法特征向量进行拼接并送入全连接网络将其映射到同一个语义空间,最终得到节点的初始嵌入向量表示。4.根据权利要求3所述的基于树型注意力和加权图匹配的相似漏洞检测方法,其特征在于所述步骤32的具体步骤如下:步骤321:通过深度优先遍历AST获得节点序列;步骤322:使用word2vec模型获得所有节点的数字向量,计算节点的位置编码并添加到节点的数字向量中;步骤323:提取AST中拥有多个孩子节点的非叶子节点,并将其作为子树的根节点;步骤324:用子树掩码来隐藏子树根节点的兄弟节点和父节点,只计算其与自身和子节点的注意力值,将其相加得到子树的隐藏向量表示;步骤325:利用软注意力机制求出对所有AST子树的重要性,再将这些重要性作为权重进行加权求和,从而得到语句的语法特征向量表示。5.根据权利要求3所述的基于树型注意力和加权图匹配的相似漏洞检测方法,其特征在于所述树型注意力机制的具体计算公式如下:Q
i
=B
i
W
Q
,K
i
=T
i
W
K
,V
i
=T
i
W
VVV
其中,Q
i
、K
i
、V
i
分别表示树型注意力机制中节点v
i
对应的查询向量、目标向量和值向量;T
i
=[t
i,1
,t
i,2
,
…
,t
i,m
]∈R
m
×
d
则是节点v
i
对应的语法树T
i
的节点嵌入矩阵,m表示T
i
中包含的树节点数量,t
i,m
表示T
i
中第m个树节点对应的特征向量,d表示节点的向量维度;B
i
=[b
i,1
,b
i,2
,
…
,b
i,n
]∈R
n
×
d
表示T
i
对应的子树根节点的嵌入...
【专利技术属性】
技术研发人员:苏小红,郑伟宁,魏宏巍,魏子越,陶文鑫,蒋远,王甜甜,张彦航,
申请(专利权)人:哈尔滨工业大学,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。