买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:哈尔滨工业大学
摘要:本发明公开了一种基于源代码和汇编代码跨模态特征增强的漏洞检测方法,所述方法从源代码中提取控制依赖和数据依赖相关的语法语义特征,从汇编代码中提取内存操作相关的语法语义特征,然后使用高级语言程序源代码与其语句对齐的汇编代码输入到跨模态特征增强和融合的双模态表示学习模型进行软件漏洞检测。该方法能够对高级语言源代码和汇编代码两种程序模态进行表示学习,利用源代码和汇编代码之间的语句对齐关系,分别在源代码模态和汇编代码模态提取漏洞相关的语义特征,并使用不同的深度学习网络和交叉注意力机制学习二者之间的语义关联性,充分利用两种模态程序的特征互补性进行特征级融合,从而提升软件漏洞检测的准确性。
主权项:1.一种基于源代码和汇编代码跨模态特征增强的漏洞检测方法,其特征在于所述方法包括如下步骤:步骤1:将高级语言程序源代码转化为语句对齐且带有源代码变量注释的汇编代码;步骤2:使用静态分析工具将高级语言程序源代码生成抽象语法树和程序依赖图;步骤3:根据源代码的切片准则生成源代码和汇编代码的切片代码段,汇编代码切片生成的具体步骤如下:步骤3.1:根据源代码的切片准则,提取源代码的漏洞候选关键点,前向和后向遍历在步骤2中得到的程序依赖图,获取双向切片语句集合,生成高级语言形式的切片代码段;步骤3.2:根据步骤1得到的汇编代码和高级语言源代码的语句对应关系,找到源代码切片代码段中的每条语句对应的汇编代码块,从而得到汇编语言形式的切片代码段;步骤4:根据汇编代码的切片准则生成源代码和汇编代码的切片代码段,具体步骤如下:步骤4.1:根据步骤1生成的源代码与汇编代码的语句对齐结果以及汇编代码的源代码变量注释,提取源代码变量相关的内存操作指令;步骤4.2:找到与内存操作指令对应的源代码语句,作为源代码的切片代码段;步骤4.3:根据步骤4.2中生成的切片代码段中的语句找到与其对应的汇编指令序列,作为汇编代码的切片代码段;步骤5:将步骤3和步骤4生成的源代码切片代码段集合进行合并,并为包含漏洞语句的切片代码段标记为“有漏洞”,其余切片代码段标记为“无漏洞”,从而构成源代码切片代码段的训练数据集;同理,将步骤3和步骤4生成的汇编代码切片代码段集合进行合并,并为包含漏洞语句的切片代码段标记为“有漏洞”,其余切片代码段标记为“无漏洞”,从而构成汇编代码切片代码段的训练数据集;步骤6:使用word2vec将源代码切片代码段中的token进行词嵌入,得到源代码切片代码段中每条语句的初始向量表示,将其送入由CNN构成的语句编码网络,得到每条语句的隐藏向量表示,再将每条语句的隐藏向量表示送入双向GRU构成的程序编码网络,得到源代码切片代码段的隐藏向量表示;同理,使用word2vec将汇编代码切片代码段中的token进行词嵌入,得到汇编代码切片代码段中每条语句的初始向量表示,送入由两层双向GRU构成的汇编代码表示学习网络,得到汇编代码切片代码段的隐藏向量表示;步骤7:步骤6得到的源代码切片代码段的隐藏向量表示和汇编切片代码段的隐藏向量表示使用交叉注意力机制进行特征增强,生成更准确的切片代码段向量表示,然后将源代码切片代码段的隐藏向量表示和汇编切片代码段的隐藏向量表示进行注意力加权聚合拼接,得到跨模态特征增强和融合的隐藏向量表示,具体步骤如下:步骤7.1:对步骤6得到的源代码切片代码段的隐藏向量表示PC,与汇编切片代码段的隐藏向量表示PA,使用交叉注意力机制进行特征增强,得到一个模态针对另一个模态的注意力值,得到特征增强的双模态向量表示;源代码模态相对于汇编代码模态的交叉注意力计算公式如下: 汇编代码模态相对于源代码模态的交叉注意力计算公式如下: 其中,QC为源代码模态查询序列,此时KA,VA为汇编代码模态键值对序列,QA为汇编代码模态查询序列,此时KC,VC为源代码模态键值对序列,均为可学习的权重,经交叉注意力后得到特征增强后的源代码表示其中为第i条源代码语句的特征增强后的隐藏向量表示,N为HC中源代码语句的特征增强后的隐藏向量表示的个数,经交叉注意力后得到特征增强后的汇编代码表示其中为第j条汇编指令的特征增强后的隐藏向量表示,M为HA中汇编代码语句的特征增强后的隐藏向量表示的个数;步骤7.2:将双模态代码段向量进行注意力加权聚合后,进行拼接得到融合后的特征向量,具体步骤如下:将上一时刻得到的双模态特征增强的隐藏向量表示分别送入Attention加权聚合层进行注意力加权聚合,通过基于注意力权重ai、aj的加权求和得到源代码切片注意力加权聚合向量表示xC和编码代码切片注意力加权聚合的向量表示xA,再经过拼接xC、xA后得到特征融合的向量xt,其中:源代码模态注意力加权聚合公式如下: 汇编代码模态注意力加权聚合公式如下: xt=ConcatxC,xA;其中,为经全连接层和激活函数tanh映射后的向量表示,分别为的转置向量,均为可训练的向量;步骤8:将步骤7得到的经过跨模态交叉注意力特征融合和增强的向量表示送入由全连接层和Softmax构成的分类器,根据分类器的输出结果与代码段的实际标签计算叉熵损失,反向传播更新由源代码表示学习网络、汇编代码表示学习网络以及交叉注意力层组成的跨模态特征增强和融合的双模态表示学习模型参数,直到跨模态特征增强和融合的双模态表示学习模型训练结束;步骤9:使用训练好的跨模态特征增强和融合的双模态表示学习模型和分类器网络对待测试代码进行漏洞检测。
全文数据:
权利要求:
百度查询: 哈尔滨工业大学 基于源代码和汇编代码跨模态特征增强的漏洞检测方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。