[发明专利]基于图卷积网络对代码图表示学习的源代码漏洞检测方法有效
申请号: | 202010576421.4 | 申请日: | 2020-06-22 |
公开(公告)号: | CN111783100B | 公开(公告)日: | 2022-05-17 |
发明(设计)人: | 苏小红;段亚男;王甜甜;蒋远;赵玲玲 | 申请(专利权)人: | 哈尔滨工业大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F21/56;G06N3/04;G06N3/08 |
代理公司: | 哈尔滨龙科专利代理有限公司 23206 | 代理人: | 高媛 |
地址: | 150001 黑龙*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 图卷 网络 代码 图表 学习 源代码 漏洞 检测 方法 | ||
1.一种基于图卷积网络对代码图表示学习的源代码漏洞检测方法,其特征在于所述方法包括如下步骤:
步骤1:通过解析源代码,生成以抽象语法树、控制流图和程序依赖图联合表示代码结构信息,以代码内容和节点类型表示代码属性信息的代码属性图;
步骤2:在代码属性图中添加函数调用关系和过程间依赖关系,具体步骤如下:
步骤21:选取图中类型为函数的节点;
步骤22:遍历其孩子节点即函数体的节点,查找边类型为与控制流和数据流相关的边,获取到节点和边信息加入图结构信息中;
步骤23:从孩子节点中选取类型为Callee的节点,根据函数名和路径递归查找被调用的函数;
步骤24:重复步骤21、22、23,直至遍历完函数中的所有节点,得到与漏洞相关的控制流、程序依赖和函数调用的图结构信息;
步骤3:利用程序切片技术提取与漏洞关键点相关的程序切片;
步骤4:利用得到的程序切片简化步骤1和步骤2提取得到的图结构信息,得到简化后的与漏洞相关的图结构,具体步骤如下:
步骤41:初始化简化后的图结构列表为空,节点列表N为空,边列表E为空;
步骤42:对于输入的全部图结构中的每个函数体的图结构gr,从切片列表(Sliceslist,S)中筛选出属于同一个函数体的切片s;
步骤43:使用Filter过滤函数,从object中筛选出符合condition的object的子集,然后对于当前的gr中的节点gr.node,筛选出符合节点的代码存在于切片s的情况的节点加入节点列表N中;
步骤44:若N不为空,则再次筛选图结构gr中的边列表gr.edge,选出gr.edge中边的两端的节点都存于节点列表N中的边信息,并加入边列表E中;
步骤45:最后将(N,E)添加至简化后的图结构SGR中;
步骤5:使用图卷积网络对图数据进行表示学习,学习每个节点的向量表示;
步骤6:根据边的类型,在图结构上划分出多个子图,并通过基于节点注意力机制的READOUT模型得到每个子图的向量表示,基于子图自注意力机制的READOUT模型得到全图的向量表示;
步骤7:将得到的子图和全图的向量表示进行拼接后送入全连接层和softmax层得到预测结果,利用标签信息计算交叉熵损失函数,根据误差反向传播调整网络参数,直到网络对输入的响应达到预定的目标范围为止,训练结束;
步骤8:用训练好的图卷积神经网络模型对代码进行漏洞检测。
2.根据权利要求1所述的基于图卷积网络对代码图表示学习的源代码漏洞检测方法,其特征在于所述步骤6的具体步骤如下:
步骤61:根据边的类型划分出多个子图;
步骤62:计算所有节点的自注意力,并进行池化操作,再根据节点的自注意力值对节点的向量表示进行加权求和,得到每个子图的向量表示;
步骤63:通过一个多层感知机模型计算每个子图的注意力值,最后利用每个子图的注意力值对子图的向量表示进行加权求和,得到全图的最终向量表示。
3.根据权利要求2所述的基于图卷积网络对代码图表示学习的源代码漏洞检测方法,其特征在于所述注意力值、子图的向量表示和全图的最终向量表示的具体计算公式如下:
其中,为sub子图经过l层卷积操作后节点表示的矩阵,为每个节点添加自连接后的邻接矩阵,为对应的每个节点的度数的矩阵,Z为得到的注意力值,hsub为sub子图的节点乘以相应的注意力值累加得到的子图向量表示,hCFG,hPDG,hCG,为对应CFG、PDG、CG子图的表示,W为计算得到的权重矩阵,hG为最终的图表示。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202010576421.4/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种便携式救护车负压装置
- 下一篇:一种地质模型的地层动态校正方法