[发明专利]基于合约语义图与深广特征融合的智能合约漏洞检测方法在审
申请号: | 202310650119.2 | 申请日: | 2023-06-02 |
公开(公告)号: | CN116561771A | 公开(公告)日: | 2023-08-08 |
发明(设计)人: | 苏小红;魏子越;郑伟宁;魏宏魏;陶文鑫;张彦航 | 申请(专利权)人: | 哈尔滨工业大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06F18/24;G06F18/25;G06N3/0442;G06N3/048;G06N3/08 |
代理公司: | 哈尔滨龙科专利代理有限公司 23206 | 代理人: | 冯建 |
地址: | 150001 黑龙*** | 国省代码: | 黑龙江;23 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 合约 语义 深广 特征 融合 智能 漏洞 检测 方法 | ||
1.一种基于合约语义图与深广特征融合的智能合约漏洞检测方法,其特征在于所述方法包括如下步骤:
步骤1:构建智能合约语义图,具体步骤如下:
步骤1.1:通过Slither工具,提取出智能合约中函数的控制流图;
步骤1.2:通过添加函数定义关系、函数间调用关系与合约入口节点,构建智能合约的增强控制流图;
步骤1.3:提取智能合约中的数据流信息,并在增强的控制流图中增加相应的数据流边;
步骤1.4:提取智能合约中的fallback运行机制信息,并在增强的控制流图中添加fallback边与fallback节点;
步骤1.5:整合增强控制流图、数据流信息以及fallback运行机制信息,构建智能合约语义图;
步骤2:基于深度学习模型提取合约代码的深度语义特征,具体步骤如下:
步骤2.1:将智能合约代码分割为token序列;
步骤2.2:使用CodeBert预训练模型对智能合约的token序列与智能合约语义图的节点内语句进行嵌入,以获得其初始向量表示;
步骤2.3:使用GGNN对智能合约语义图进行表示学习,以学习每个节点的隐藏向量表示,并采用节点向量平均的方式读出图级向量表示,得到智能合约代码的结构语义特征,即合约语义图特征的向量表示;
步骤2.4:使用BiGRU对智能合约代码的token序列进行表示学习,得到智能合约代码的序列特征的向量表示;
步骤2.5:将智能合约序列特征与合约语义图特征进行拼接,得到智能合约的深度语义特征;
步骤3:使用人工规则对智能合约代码进行筛查生成One-hot编码,并使用由全连接层与激活函数构成的线性模型提取基于人工规则的广度语义特征,即人工规则特征;
步骤4:使用WideDeep模型融合智能合约的深度语义特征与广度语义特征,并送入Softmax层得到预测结果,利用标签信息计算交叉熵损失函数,根据误差反向传播调整网络参数,直到网络对输入的响应达到预定的目标范围为止,训练结束;
步骤5:使用训练好的完整模型对智能合约代码进行漏洞检测。
2.根据权利要求1所述的基于合约语义图与深广特征融合的智能合约漏洞检测方法,其特征在于所述步骤1.2的具体步骤如下:
步骤1.2.1:遍历控制流图中的节点,记录所有包含对合约内其他函数调用的节点;
步骤1.2.2:在所有包含对其余智能合约函数调用的节点与被调用函数的函数入口节点之间,增加函数调用边call边;
步骤1.2.3:增加合约入口节点;
步骤1.2.4:通过函数定义边define边连接合约入口节点与所有函数的函数入口节点。
3.根据权利要求1所述的基于合约语义图与深广特征融合的智能合约漏洞检测方法,其特征在于所述步骤1.3的具体步骤如下:
步骤1.3.1:构建def映射与use集合,其中:def映射表示智能合约中变量到该变量被定义或最近一次被更新的节点的映射;use集合表示节点中所使用变量的集合;
步骤1.3.2:对增强控制流图进行深度优先遍历,将节点中所使用的变量记录进use集合,然后使用def映射来获得use集合里包含变量的最后一次被更新或定义的节点,最后使用数据流边dataflow边进行连接。
4.根据权利要求1所述的基于合约语义图与深广特征融合的智能合约漏洞检测方法,其特征在于所述步骤1.4的具体步骤如下:
步骤1.4.1:增加fallback节点;
步骤1.4.2:遍历增强控制流图的节点,若节点存在对call.value函数的调用,则使用fallback边连接该节点与fallback节点;若节点不存在call.value函数的调用,则保持原有节点,不添加fallback边;
步骤1.4.3:若最后fallback节点的入度大于0,则使用fallback边连接fallback节点与所有的函数入口节点;若fallback节点的入度小于0,则不采取任何操作。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于哈尔滨工业大学,未经哈尔滨工业大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202310650119.2/1.html,转载请声明来源钻瓜专利网。