买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
申请/专利权人:兰州交通大学
摘要:一种基于序列和图双通道模型的源代码漏洞检测方法VulD‑SG,其首先从公开的源代码漏洞数据集MSR中切分得到C语言源代码数据集,使用Joern工具生成源代码的程序依赖图PDG并取得其程序切片;其次,构建一个双通道的局部模型模块,分为上下两个部分,上部分为基于序列的特征向量提取模型,下部分为基于图的特征向量提取模型。融合模型阶段将基于序列的特征向量提取模型和基于图的特征向量提取模型的输出使用全连接层连接,最后输出漏洞检测的结果。本发明有效解决了传统的基于序列模型缺少源代码结构信息和基于图模型缺少源代码语法语义信息的问题。此外,通过设计融合模型,提升了漏洞检测的准确率。
主权项:1.一种基于序列和图双通道模型的源代码漏洞检测方法,其特征在于,主要包含以下步骤:步骤A:包括数据预处理和生成程序切片;数据预处理:从MSR数据集中切分得到只包含C语言的子数据集,接着,将func_before列重命名为func,将vul列重命名为target,删除lang列,然后,将处理后的数据保存为JSON格式;生成程序切片:基于所述的子数据集,利用开源静态分析工具Joern生成源代码对应的程序依赖图PDG,和抽象语法树AST,包含代码间的控制依赖图CDG,和数据依赖图DDG,AST包含程序语句间的语法信息;基于CDG和DDG中的控制依赖信息和数据依赖信息及漏洞规则对代码进行切片,最终得到想要的程序切片并存储在Neo4j图数据库中;所述漏洞规则包括API库函数调用FC、数组使用AU、指针使用PU、算术表达式AE;步骤B:基于序列的源代码特征向量表征,首先将步骤A生成的PDG节点进行向量表示,每一个语句,即每一行代码,转化成子令牌序列sub-token,即将某些序列token再切分为sub-token;之后,使用Glove工具向量化单个子令牌序列,并用BLSTM神经网络来提取整个源代码序列的长距离依赖关系,最终得到基于序列的特征向量表示;步骤C:基于图的源代码特征向量表征,将步骤A生成的PDG基于亲密度采样矩阵分解为无边子图,得到中心节点,再用top-k关系值方法计算得到其关系值最大的前k个节点作为邻接点;将采样子图进行四部分的节点特征序列嵌入表示,分别是原始的节点特征嵌入表示、Weisfeiler-Lehman位置嵌入表示、基于亲密关系的相对位置嵌入表示和基于跳hop的相对距离嵌入表示,最后将这四种嵌入表示聚合,送入Transformer编码器逐步更新节点表示,最终得到基于图的特征向量表示;步骤D:融合模块:将步骤B和步骤C生成的特征向量通过一个全连接层融合到一起形成一个新的特征向量,将融合后的新的特征向量输入最大池化层,然后输入到分类检测模块中;步骤E:分类检测模块:分类检测模块包含线性计算层和Softmax层,模块最后一层是Softmax层,Softmax层负责输出二分类的结果:输出为0代表目标程序不存在漏洞,输出为1代表目标程序存在漏洞。
全文数据:
权利要求:
百度查询: 兰州交通大学 一种基于序列和图双通道模型的源代码漏洞检测方法
免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。