兰州交通大学张学军获国家专利权
买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!
龙图腾网获悉兰州交通大学申请的专利一种基于多关系图的源代码漏洞检测方法获国家发明授权专利权,本发明授权专利权由国家知识产权局授予,授权公告号为:CN118260773B 。
龙图腾网通过国家知识产权局官网在2025-12-05发布的发明授权授权公告中获悉:该发明授权的专利申请号/专利号为:202410525501.5,技术领域涉及:G06F21/57;该发明授权一种基于多关系图的源代码漏洞检测方法是由张学军;郭梅凤;张一帆;张斌;周博;曾宇辰;陈卓;梁书滨设计研发完成,并于2024-04-29向国家知识产权局提交的专利申请。
本一种基于多关系图的源代码漏洞检测方法在说明书摘要公布了:一种基于多关系图的源代码漏洞检测方法,其首先从标准漏洞数据库SARD和NVD数据集中切分得到C语言源代码数据集,借助Joern生成AST并取得其程序切片;其次,为了捕获AST的额外语法信息,使用编译器对AST添加携带额外信息的边进行扩展以增强其结构和连接性,然后将增强的AST转化为多关系图;最后,构建多关系图注意力网络学习嵌入向量。使用图注意力网络从源代码中提取多个代码关系,利用多关系图的邻接矩阵和初始节点表示学习全局嵌入向量,对其进行归一化并馈送到softmax层进行处理。本发明借助新设计的表征方式和多关系图聚合学习,能够为下游软件漏洞检测任务提供更优质的代码表示,从而实现准确、高效且更适用的漏洞检测方法。
本发明授权一种基于多关系图的源代码漏洞检测方法在权利要求书中公布了:1.一种基于多关系图的源代码漏洞检测方法,其特征在于,包含以下步骤: 步骤A:生成程序切片,从软件保障参考数据集SARD和国家漏洞数据库NVD中切分得到C语言源代码数据集,并利用Joern对源代码进行解析和提取,通过指定切片起始点,Joern提取出相关的代码和依赖项,生成对应的抽象语法树AST,基于漏洞规则对代码进行切片,最终得到程序切片;所述漏洞规则包括API库函数调用FC、数组使用AU、指针使用PU、算术表达式AE; 步骤B:生成扩展AST,利用编译器在步骤A生成的AST基础上添加携带额外信息的边对其进行扩展和优化后生成扩展AST;具体实现如下:在步骤A形成的AST的基础上利用编译器添加额外的边connect、passing、invoking、unexchange对其进行扩展,使得AST能够携带更多的语法语义信息; 对扩展边描述如下: connect:在每个赋值语句中,将变量连接到赋值语句;通过在AST中添加connect边,能够追踪数据传递的路径,该connect边锁定了变量或缓冲区的使用场景; passing:在实参向形参的传递过程中,添加一条从实参指向形参的边;passing直接关联着函数之间数据的流动和共享,通过捕捉参数传递的方式和过程,能够追踪数据参数的流动,并且用于检测是否存在参数污染漏洞; invoking:从调用函数指向被调函数;通过跟踪invoking,能够分析数据如何在不同的函数之间流动; unexchange:从第一个参数指向第二个参数;该unexchange边能够检测出潜在的参数顺序错误; 步骤C:将扩展AST编码为多关系图,利用多关系图来存储扩展的AST关系,每条边对应一个关系图,从而形成多关系图;该多关系图是一个有向图,由节点和边组成,节点代表AST或中间表示IR的节点,边代表两个节点之间存在某种关系,并使用邻接矩阵对每个关系图的边重新编码; 步骤C具体实现如下: 代码关系:反应了程序图矩阵之间的连接情况;多关系图中的每个节点代表AST或IR的节点;对于每对节点,如果它们之间存在某种关系,则在这两个节点之间创建一条边,每条边都对应一个特定的关系; 邻接矩阵:遍历多关系图中的每条边,根据边的起点和终点在邻接矩阵中对应的位置进行标记;邻接矩阵就包含了多关系图中所有边的信息,从而实现了对边的重新编码;对于每一个关系图,使用邻接矩阵表示图中节点之间的连接关系,从而构造八个邻接矩阵;在邻接矩阵中,两个邻居节点之间有直接关系的记为1,没有直接关系的记为0; 步骤D:构建多关系图注意力网络,将步骤C得到的邻接矩阵和初始顶点嵌入传递给图注意力网络GAT对所有邻居节点进行聚合操作,进而学习多关系图的全局嵌入向量;其中初始顶点嵌入利用Word2Vec向量化得到,将每个顶点映射为一个向量表示; 步骤D具体实现如下:图注意力网络的节点领域聚合过程通过节点自身的特征和邻居节点的特征进行信息传播和聚合,并不依赖于节点间的连接关系;在聚合过程中,每个顶点有一个嵌入层;每个嵌入层都遵循一个领域聚合方案,对于初始节点,用word2vec进行向量化,得到嵌入向量,该嵌入向量代表当前状态的信息,随后传递给图中所有邻居以交换信息;在每个顶点上,将自身的嵌入向量作为信息传递给所有邻居,经过消息的汇聚与整合,用于下一轮嵌入层更新相关的顶点表示,经过多次状态更新,每个顶点终将收获一组新的嵌入;具体如下: 多关系图嵌入:在图注意力网络中,多关系嵌入层旨在结合节点和关系的特征,生成富含多关系信息的节点嵌入;它通过对初始节点嵌入进行关系特定变换和特征融合,为每个节点构建出一个既反映其原始特性又体现与其他节点交互的综合表示; GAT层:为了能在多个网络层中逐步捕捉图结构中的复杂关系,并允许模型学习不同节点之间的相对重要性,使用GAT层实现节点的聚合与更新;GAT基于节点状态与边类型进行信息传递、特征融合、网络结构学习和动态更新;每个节点根据其邻居节点的attention系数来聚合邻居节点的信息,从而更新自身的状态或表示;在聚合过程中,GAT不仅考虑了节点的特征,还融入了边的类型信息;在每个GAT中,根据边类型、节点状态以及邻居节点的特征来动态计算当前节点与其邻居节点之间的注意力系数,每个邻居节点的特征向量会与其对应的注意力系数相乘,利用softmax得到归一化的注意力权重;所述注意力权重反映了邻居节点对当前节点的重要性;然后根据所述注意力权重对邻居节点的特征进行加权聚合,得到一个新的聚合特征向量;通过多层的GAT网络结构,逐层传递和更新节点的表示,实现节点间的信息共享和状态更新;其中,每个GAT层为其所关注的代码关系生成一个嵌入向量;所述嵌入向量各自捕捉了节点在该关系下的特定信息和交互模式;最后,将聚合后的特征向量与当前节点的原始特征向量进行结合作为全连接层的输入,进一步对该包含多关系信息的特征向量应用线性变换和激活函数ReLU进一步处理和转换该包含多关系信息的特征向量,得到更新后的节点表示;为了防止过拟合现象的发生,使用dropout技术对当前节点的表示进行随机失活; 全局池化层:将全连接层的输出作为全局平均池化层的输入,实现对全局范围内信息的捕获,因为该层本身有助于减少模型的参数数量,它将特征图转换为固定大小的表示向量,防止过拟合现象的发生;该层将所有节点的特征向量进行聚合,得到一个代表整个图的全局特征向量,该向量包含了图中所有节点的信息; 步骤E中所述归一化的具体实现如下:图嵌入模块,为了防止过拟合现象的出现,将步骤D得到的图嵌入向量利用归一化层进行归一化的处理;归一化层会对嵌入向量进行归一化,使得每个向量的均值为0,方差为1;根据反向传播算法,更新归一化层中的参数,参数包括每个维度的均值和方差,在训练过程中被不断调整以适应数据的分布。
如需购买、转让、实施、许可或投资类似专利技术,可联系本专利的申请人或专利权人兰州交通大学,其通讯地址为:730070 甘肃省兰州市安宁区安宁西路88号;或者联系龙图腾网官方客服,联系龙图腾网可拨打电话0551-65771310或微信搜索“龙图腾网”。
以上内容由龙图腾AI智能生成。
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。

皖公网安备 34010402703815号
请提出您的宝贵建议,有机会获取IP积分或其他奖励