一种基于多级目标关键路径的智能合约漏洞检测方法技术

技术编号:38341894 阅读:13 留言:0更新日期:2023-08-02 09:22
本发明专利技术属于区块链智能合约安全检测技术领域,具体涉及一种基于多级目标关键路径的智能合约漏洞检测方法,包括:爬取智能合约源码数据并对数据进行预处理,编译智能合约源码,根据漏洞操作码指令搜索包含漏洞特征的关键路径;生成合约图,提取图节点特征,创建图嵌入模型并训练漏洞检测模型,使用训练好的模型检测智能合约漏洞,得到检测结果。采用分层图注意网络的漏洞检测方法能够自动学习潜在的智能合约漏洞特征或表示,分析在复杂逻辑中的语义和语法信息,更好的实现对智能合约漏洞检测分析。分析。分析。

【技术实现步骤摘要】
一种基于多级目标关键路径的智能合约漏洞检测方法


[0001]本专利技术属于区块链智能合约安全监测
,具体涉及一种基于多级目标关键路径的智能合约漏洞检测方法。

技术介绍

[0002]近年来,以智能合约为代表的第二代区块链平台及应用出现了爆发性的增长,以其不可伪造、不可篡改、可溯源、去中心化等特性,对医疗保健、边缘计算、电力等领域已经产生深远影响。同时区块链本身也面临着严重的安全问题,与传统程序不同,智能合约部署之后就没有办法修改了,这会导致包括安全漏洞在内的所有漏洞都可见,并且无法迅速修复这些漏洞是网络攻击的完美目标。
[0003]面对智能合约中各种类型的漏洞,传统的漏洞检测方法应用静态和动态分析来查找智能合约中的漏洞,目前主要的智能合约漏洞检测方法有:人工审计、模式匹配、符号执行、形式化验证等。能完全覆盖代码执行期间的行为,从而消除了在传统测试手段中存在的无法穷举所有可能输入的缺点,同时保证在一定范围内的绝对正确性;缺点在于需要人工参与建模和推理过程,效率十分低下;模糊测试生成用例的随机性,其所能涵盖的执行路径有限,路径覆盖率低,很难发现潜在的漏洞;基于符号执行的静态漏洞检测工具多数依赖于已有的专家规则,无法识别复杂逻辑漏洞且误报率较高。
[0004]最近研究人员提出了基于机器学习与神经网络的智能合约漏洞检测方法,与传统的方法相比,机器学习与深度学习模型可以自动提取代码的特征,以摆脱对人工提取特征的依赖,更高效的捕捉漏洞特征,使检测准确率和效率更高。然而对于基于机器学习与神经网络的智能合约漏洞检测方法,如果检测一个较长智能合约时,会导致漏洞检测能力下降,存在较大的误差。比如当检测长代码时图神经网络需要依次遍历途中的每一个节点以获取他们的特征,导致时间复杂度较高,检测效率低。

技术实现思路

[0005]为解决上述技术问题,本专利技术提出一种基于多级目标关键路径的智能合约漏洞检测方法,包括以下步骤:
[0006]S1:将开源数据集中的数据与爬取智能合约源代码组成的数据组成智能合约数据集,并对数据集中的数据进行预处理;
[0007]S2:使用智能合约在线编译器Remix编译预处理后的数据集中的智能合约源代码生成操作码;
[0008]S3:为不同漏洞定义关键指令,并根据漏洞关键指令在操作码中快速找到可能存在漏洞的关键路径,根据关键路径生成关键路径合约图;
[0009]S4:将得到的关键路径合约图进行收缩;
[0010]S5:使用Word2Vec模型将收缩后的关键路径合约图的边与节点特征进行向量化表示,得到矩阵向量;
[0011]S6:建立基于分层图注意网络漏洞检测模型,将矩阵向量输入分层图注意力网络漏洞检测模型进行模型训练,当损失函数的损失最小时,完成模型的训练;
[0012]S7:将智能合约源码输入训练好的分层图注意力网络漏洞检测模型进行漏洞检测,得到检测结果。
[0013]本专利技术的有益效果:
[0014](1)本专利技术针对处理上整数溢出漏洞、下整数溢出漏洞、交易顺序依赖漏洞、时间戳依赖漏洞和可重入漏洞这五种漏洞类型给出了关键操作码,基于这些关键操作码找到潜在漏洞的关键路径,仅对这些关键路径进行检测,提升检测效率。
[0015](2)在寻找漏洞关键路径方面,本专利技术定义了一种多级目标关键路径搜索方法,分别查找每条可执行路径中的漏洞关键字和涉及地址的操作码关键字,标记处可能存在漏洞的关键路径。
[0016](3)本专利技术引入了分层图注意力网络来检测智能合约漏洞,对比传统的智能合约漏洞检测方法,本专利技术不依赖固定的专家规则,实现了自动化审计;对比使用机器学习和神经网络的智能合约漏洞检测方法,本专利技术拥有更好的鲁棒性,提高了训练好的模型在其他类型的图上的泛化能力。
附图说明
[0017]图1为本专利技术的一种基于多级目标关键路径的智能合约漏洞检测方法的流程图;
[0018]图2为本专利技术的智能合约代码图。
具体实施方式
[0019]下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。
[0020]一种基于多级目标关键路径的智能合约漏洞检测方法,如图1所示,包括:
[0021]S1:将开源数据集中的数据与爬取智能合约源代码组成的数据组成智能合约数据集,并对数据集中的数据进行预处理;
[0022]S2:使用智能合约在线编译器Remix编译预处理后的数据集中的智能合约源代码生成操作码;
[0023]S3:为不同漏洞定义关键指令,并根据漏洞关键指令在操作码中快速找到可能存在漏洞的关键路径,根据关键路径生成关键路径合约图;
[0024]所述关键路径合约图包括三种节点与三种边,三种节点包括主要节点、二级节点、回调节点,主要节点包括函数,二级节点包括变量,回调节点包括内部调用与外部调用,三种边包括数据流边、回调边、控制流边;
[0025]S4:将得到的关键路径合约图进行收缩;
[0026]S5:使用Word2Vec模型将收缩后的关键路径合约图的边与节点特征进行向量化表示,得到矩阵向量;
[0027]S6:建立基于分层图注意网络漏洞检测模型,并训练分层图注意力网络漏洞检测
模型;
[0028]S7:将智能合约源码输入训练好的分层图注意力网络漏洞检测模型进行漏洞检测,得到检测结果。
[0029]然后使用SmartBugs Wild数据集和爬取的智能合约共同作为数据集。因为SmartBugs Wild数据集中有漏洞的智能合约样本数据分布不均匀,如果使用这样的数据集会导致过拟合。因此利用Python爬虫技术,爬取SWC智能合约漏洞库和以太坊官网Etherscan的智能合约共计25138份,与SmartBugs Wild数据集结合组成新的数据集,保证数据集中各种漏洞数量的分布是合理的。
[0030]对智能合约数据集中的数据进行针对性的处理,定义数据集清洗规则,编写数据集清洗脚本,删除智能合约数据集存在的冗余数据、重复数据以及空缺数据;
[0031]将针对性处理后的智能合约数据规定为一个长为N的字符串,若不包含漏洞,则返回一个长度为N的全部为0的字符串,若包含漏洞,则字符串对应漏洞索引的位置i为1,其余字符串对应索引位置为0,其中1≤i≤N;一个智能合约样本可能包含N种漏洞的任意一种或几种;例如:现存4种漏洞V1,V2,V3,V4,若不包含漏洞,则标记0000;若包含V2漏洞,则标记0100;若包含V2,V4漏洞,则标记为0101。
[0032]借助Oyente合约漏洞检测工具对存在漏洞的智能合约数据进行分类打标,例如含有可重入漏洞的智能合约标签为1;含有时间戳依赖漏洞的智能合约标签为2;含有交易顺序依赖漏洞的智能合约标签为3;含有本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于多级目标关键路径的智能合约漏洞检测方法,其特征在于,包括:S1:将开源数据集中的数据与爬取智能合约源代码组成的数据组成智能合约数据集,并对数据集中的数据进行预处理;S2:使用智能合约在线编译器Remix编译预处理后的数据集中的智能合约源代码生成操作码;S3:为不同漏洞定义关键指令,并根据漏洞关键指令在操作码中快速找到可能存在漏洞的关键路径,根据关键路径生成关键路径合约图;S4:将得到的关键路径合约图进行收缩;S5:使用Word2Vec模型将收缩后的关键路径合约图的边与节点特征进行向量化表示,得到矩阵向量;S6:建立基于分层图注意网络漏洞检测模型,将矩阵向量输入分层图注意力网络漏洞检测模型进行模型训练,当损失函数的损失最小时,完成模型的训练;S7:将智能合约源码输入训练好的分层图注意力网络漏洞检测模型进行漏洞检测,得到检测结果。2.根据权利要求1所述的一种基于多级目标关键路径的智能合约漏洞检测方法,其特征在于,对数据集中的数据进行预处理,包括:对智能合约数据集中的数据进行针对性的处理,定义数据集清洗规则,编写数据集清洗脚本,删除智能合约数据集存在的冗余数据、重复数据以及空缺数据;将针对性处理后的智能合约数据规定为一个长为N的字符串,若不包含漏洞,则返回一个长度为N的全部为0的字符串,若包含漏洞,则字符串对应漏洞索引的位置i为1,其余字符串对应索引位置为0;借助Oyente合约漏洞检测工具对存在漏洞的智能合约数据进行分类打标,将数据分为可重入漏洞、时间戳依赖漏洞、交易顺序依赖漏洞、整数上溢出和整数下溢出漏洞五种类别。3.根据权利要求1所述的一种基于多级目标关键路径的智能合约漏洞检测方法,其特征在于,所述关键路径搜索过程,包括:确定操作码依赖关系阶段:得到智能合约操作码后,将操作码分解为基本块,通过组合这些基本块,找到操作码之间的依赖关系;生成控制流图阶段:在基本块和边添加控制流信息,基于基本块之间的依赖关系生成控制流图;关键路径搜索阶段:根据控制流图遍历搜索存在漏洞操作指令的基本块节点,以该节点为漏洞节点依次遍历并标记该节点的后续执行路径,包含漏洞节点的路径全部为可能存在漏洞的关键路径;路径剪枝阶段:对控制流图中与关键路径无关节点进行裁剪,得到只存在漏洞操作指令的节点,将其存放到关键节点的队列中。4.根据权利要求1所述的一种基于多级目标关键路径的智能合约漏洞检测方法,其特征在于,根据关键路径生成关键路径合约图,包括:根据关键路径节点生成关键路径合约图SCG=(V,E...

【专利技术属性】
技术研发人员:马创刘帅武胡锦浩冉鑫颜莉曾伟
申请(专利权)人:重庆邮电大学
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1