[发明专利]代码漏洞检测方法、装置、电子设备及存储介质在审
申请号: | 202310573945.1 | 申请日: | 2023-05-19 |
公开(公告)号: | CN116595538A | 公开(公告)日: | 2023-08-15 |
发明(设计)人: | 秦一伟;张斯璟 | 申请(专利权)人: | 中国农业银行股份有限公司 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F8/41;G06F18/2411;G06F18/214 |
代理公司: | 北京品源专利代理有限公司 11332 | 代理人: | 王风茹 |
地址: | 100005 北*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 代码 漏洞 检测 方法 装置 电子设备 存储 介质 | ||
1.一种代码漏洞检测方法,其特征在于,包括:
解析样本代码得到抽象语法树、控制流图和程序依赖图,并根据所述抽象语法树、所述控制流图和所述程序依赖图构建原始代码属性图;
对所述原始代码属性图中的节点特征向量进行卷积聚合操作,得到目标代码属性图;
根据所述目标代码属性图确定所述样本代码的表征向量;
基于所述样本代码的表征向量和样本标签进行模型训练,得到代码检测模型;
基于所述代码检测模型对目标代码进行漏洞检测。
2.根据权利要求1所述的方法,其特征在于,所述原始代码属性图中包括用于表示所述样本代码的组成对象的节点和用于表示节点连接关系的边。
3.根据权利要求2所述的方法,其特征在于,所述对所述原始代码属性图中的节点特征向量进行卷积聚合操作,得到目标代码属性图,包括:
根据所述边确定所述原始代码属性图中每个节点的邻居节点;
根据所述每个节点的节点特征向量和对应节点的邻居节点的节点特征向量对所述每个节点进行向量聚合操作,得到所述目标代码属性图。
4.根据权利要求3所述的方法,其特征在于,所述根据所述每个节点的节点特征向量和对应节点的邻居节点的节点特征向量对所述每个节点进行向量聚合操作,得到所述目标代码属性图,包括:
将所述每个节点的节点特征向量和对应节点的邻居节点的节点特征向量代入节点特征更新函数进行向量聚合操作,得到所述每个节点的聚合向量;
将所述每个节点的节点特征向量更新为对应节点的聚合向量,得到所述目标代码属性图。
5.根据权利要求2至4任一项所述的方法,其特征在于,所述根据所述目标代码属性图确定所述样本代码的表征向量,包括:
根据所述边的类型将所述目标代码属性图拆分成多个子图;
获取所述多个子图中每个子图的权重和所述每个子图的表征向量;
根据所述每个子图的权重和所述每个子图的表征向量确定所述样本代码的表征向量。
6.根据权利要求5所述的方法,其特征在于,所述根据所述每个子图的权重和所述每个子图的表征向量确定所述样本代码的表征向量,包括:
将所述每个子图的权重和对应子图的表征向量加权求和,得到所述样本代码的表征向量。
7.根据权利要求1所述的方法,其特征在于,在基于所述样本代码的表征向量和样本标签进行模型训练,得到代码检测模型之后,还包括:
利用测试代码对所述代码检测模型进行测试;
在测试通过时,触发执行所述基于所述代码检测模型对目标代码进行漏洞检测。
8.一种代码漏洞检测装置,其特征在于,包括:
构建模块,用于解析样本代码得到抽象语法树、控制流图和程序依赖图,并根据所述抽象语法树、所述控制流图和所述程序依赖图构建原始代码属性图;
聚合模块,用于对所述原始代码属性图中的节点特征向量进行卷积聚合操作,得到目标代码属性图;
确定模块,用于根据所述目标代码属性图确定所述样本代码的表征向量;
训练模块,用于基于所述样本代码的表征向量和样本标签进行模型训练,得到代码检测模型;
检测模块,用于基于所述代码检测模型对目标代码进行漏洞检测。
9.一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7中任一所述的代码漏洞检测方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至7中任一所述的代码漏洞检测方法。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国农业银行股份有限公司,未经中国农业银行股份有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310573945.1/1.html,转载请声明来源钻瓜专利网。