当前位置: 首页 > 专利查询>南开大学专利>正文

一种基于深度学习的以太坊智能合约漏洞的检测和定位方法技术

技术编号:38325996 阅读:10 留言:0更新日期:2023-07-29 09:08
本发明专利技术提供了一种基于深度学习的以太坊智能合约漏洞的检测和定位方法。该方法包括:通过语法分析和词法分析将以太坊智能合约的源码转化为抽象语法树;分析各种漏洞的代码特征,分析代码特征在抽象语法树中的关键属性,基于关键属性提取抽象语法树中的切片;提取切片的语义特征和结构特征;根据切片的语义特征和结构特征通过漏洞类型检测模型检测出所述以太坊智能合约的漏洞类型信息;根据漏洞类型信息利用图自编码器定位所述以太坊智能合约的漏洞位置。本发明专利技术通过研究多种漏洞类型的本质属性特征,精准切片出这些特征,有利于检测漏洞类型并且定位漏洞位置,提高检测效率,有效增强深度学习检测结果的可解释性。效增强深度学习检测结果的可解释性。效增强深度学习检测结果的可解释性。

【技术实现步骤摘要】
一种基于深度学习的以太坊智能合约漏洞的检测和定位方法


[0001]本专利技术涉及智能合约漏洞检测
,尤其涉及一种基于深度学习的以太坊智能合约漏洞的检测和定位方法。

技术介绍

[0002]以太坊是使用Solidity智能合约编程的全世界分布的计算机。智能合约是一种有状态的计算机程序。智能合约不仅能够处理数据,而且能够控制和管理区块链上的资产。不同于一般的计算机程序,智能合约一旦部署在区块链上无法修改。因此,近年来智能合约漏洞导致的损失逐年增长,智能合约的安全性成为区块链研究人员的重点关注问题。
[0003]现有的智能合约漏洞检测方法主要包括符号执行、模糊测试和深度学习等方法。符号执行通过设计漏洞约束条件分析合约安全性,但是遇到长合约会产生过多的约束条件,难以求解可执行路径。模糊测试动态上链测试合约安全性。但是,模糊测试最大的问题是路径覆盖率。测试用例的随机性影响测试效果。相较于上述两类方法,使用深度学习的智能合约漏洞检测方法效率明显提高。深度学习通过从大量样本中学习智能合约的特征,实现漏洞分类。然而,现有的深度学习智能合约漏洞检测方法的突出问题是不能实现漏洞定位,无法解释漏洞检测结果。
[0004]因此,设计实现一种可检测漏洞类型、可定位漏洞位置的深度学习框架是非常重要且有意义的。
[0005]现有技术中的一种使用抽象语法树转化为图模型的智能合约安全检测方法包括:S1:使用Github上开源Go代码,训练word2vec模型。S2:按智能合约语法,把开源Github代码封装成智能合约函数。S3:把封装好的函数转化为抽象语法树,并提取数据流和控制流信息。S4:把智能合约的数据流和控制流信息转化为图模型。S5:使用已训练word2vec模型,把图节点转成向量。S6:使用图神经网络对模型进行训练。S7:读出所有节点信息,把智能合约函数图模型转化成一个向量。S8:使用分类模型判断函数向量是否包含智能合约漏洞信息。
[0006]上述现有技术中的使用抽象语法树转化为图模型的智能合约安全检测方法的缺点包括:合约中的字节码信息不容易被人们理解,且无法解释检测结果。自定义的规则可能会漏掉一些关键特征,从而导致较高的漏报率。更重要的是,现有这些深度学习检测方法无法定位漏洞位置,可解释性差。

技术实现思路

[0007]本专利技术的实施例提供了一种基于深度学习的以太坊智能合约漏洞的检测和定位方法,以实现对以太坊智能合约进行有效的漏洞检测和定位。
[0008]为了实现上述目的,本专利技术采取了如下技术方案。
[0009]一种基于深度学习的以太坊智能合约漏洞的检测和定位方法,包括:
[0010]通过语法分析和词法分析将以太坊智能合约的源码转化为抽象语法树;
[0011]分析各种漏洞的代码特征,分析代码特征在抽象语法树中的关键属性,基于关键
属性提取抽象语法树中的切片;
[0012]提取切片的语义特征和结构特征;
[0013]所述的根据切片的语义特征和结构特征通过漏洞类型检测模型检测出所述以太坊智能合约的漏洞类型信息;
[0014]根据切片的语义特征和结构特征通过漏洞定位模型定位出所述以太坊智能合约的漏洞类型对应的漏洞位置信息
[0015]优选地,所述的通过语法分析和词法分析将以太坊智能合约的源码转化为抽象语法树,包括:
[0016]利用ANTLR4工具通过语法分析和词法分析生成以太坊智能合约的源码对应的抽象语法树,抽象语法树将由字符组成的字符串分解成有意义的代码块,将所述代码块称为词法单元,词法单元包含了源代码的结构信息与语义信息,其中每个节点都表示源代码中的一种结构。
[0017]优选地,所述的分析各种漏洞的代码特征,分析代码特征在抽象语法树中的关键属性,基于关键属性提取抽象语法树中的切片,包括:
[0018]分析表1中七种漏洞的代码特征,分析代码特征在抽象语法树中的固有属性特征,提取固有属性特征中的一个或者多个关键属性;
[0019]定位关键属性的位置,以关键属性为中心,向上和向下提取抽象语法树结构中的部分节点,将所有提取的节点组成一个切片,将所有关键属性对应的切片组合成为一个整体切片;
[0020]表1
[0021]漏洞类型关键属性时间戳依赖now,timetamp重入漏洞fallback整数上溢opertor add,mul整数下溢opertor sub区块号依赖number未检查低级调用call,send,callcode无保护的自毁指令selfdestruct。
[0022]优选地,所述的提取切片的语义特征和结构特征,包括:
[0023]遍历所述整体切片中的每个切片,以切片中的每个节点属性中可代表其位置的id为节点标识,如果两个节点之间存在父子关系,则两个节点之间存在边,由此得到各节点的邻接矩阵;
[0024]遍历所述整体切片中的每个切片,以id为节点表示,提取出每个节点的全部语义信息;
[0025]使用Word2Vec将节点的语义信息嵌入为向量化表示。
[0026]优选地,所述的根据切片的语义特征和结构特征通过漏洞类型检测模型检测出所述以太坊智能合约的漏洞类型信息,包括:
[0027]将邻接矩阵中各节点与向量化的节点的语义信息一一对应,得到智能合约具有语
义特征和结构特征的整体图结构数据;
[0028]使用图同构网络作为漏洞类型检测模型,将所述以太坊智能合约的整体图结构数据输入到漏洞类型检测模型,漏洞类型检测模型输出所述以太坊智能合约对应的漏洞类型信息。
[0029]优选地,所述的根据切片的语义特征和结构特征通过漏洞定位模型定位出所述以太坊智能合约的漏洞类型对应的漏洞位置信息,包括:
[0030]使用正常智能合约数据训练图自编码器模型,将各个节点的向量化表示的语义信息输入到图自编码器模型,利用图自编码器模型的生成能力对抽象语法树进行重构;
[0031]将重构前的抽象语法树与重构后的抽象语法树进行节点细粒度的对比,得到重构前后的误差分数,定位到超出误差范围的异常语义信息向量,把异常语义信息向量重新映射回抽象语法树,实现以太坊智能合约的漏洞定位。
[0032]由上述本专利技术的实施例提供的技术方案可以看出,本专利技术通过研究多种漏洞类型的本质属性特征,精准切片出这些特征,有利于检测漏洞类型并且定位漏洞位置,提高检测效率,有效增强深度学习检测结果的可解释性。
[0033]本专利技术附加的方面和优点将在下面的描述中部分给出,这些将从下面的描述中变得明显,或通过本专利技术的实践了解到。
附图说明
[0034]为了更清楚地说明本专利技术实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
[0035]图1为本专利技术实施例提供的一种基于深度学习的以太坊智能合本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于深度学习的以太坊智能合约漏洞的检测和定位方法,其特征在于,包括:通过语法分析和词法分析将以太坊智能合约的源码转化为抽象语法树;分析各种漏洞的代码特征,分析代码特征在抽象语法树中的关键属性,基于关键属性提取抽象语法树中的切片;提取切片的语义特征和结构特征;所述的根据切片的语义特征和结构特征通过漏洞类型检测模型检测出所述以太坊智能合约的漏洞类型信息;根据切片的语义特征和结构特征通过漏洞定位模型定位出所述以太坊智能合约的漏洞类型对应的漏洞位置信息。2.根据权利要求1所述的方法,其特征在于,所述的通过语法分析和词法分析将以太坊智能合约的源码转化为抽象语法树,包括:利用ANTLR4工具通过语法分析和词法分析生成以太坊智能合约的源码对应的抽象语法树,抽象语法树将由字符组成的字符串分解成有意义的代码块,将所述代码块称为词法单元,词法单元包含了源代码的结构信息与语义信息,其中每个节点都表示源代码中的一种结构。3.根据权利要求1或者2所述的方法,其特征在于,所述的分析各种漏洞的代码特征,分析代码特征在抽象语法树中的关键属性,基于关键属性提取抽象语法树中的切片,包括:分析表1中七种漏洞的代码特征,分析代码特征在抽象语法树中的固有属性特征,提取固有属性特征中的一个或者多个关键属性;定位关键属性的位置,以关键属性为中心,向上和向下提取抽象语法树结构中的部分节点,将所有提取的节点组成一个切片,将所有关键属性对应的切片组合成为一个整体切片;表1漏洞类型关键属性时间戳依赖now,timetamp重入漏洞fallback整数上溢opertoradd,mul整数下溢opertorsub区块号依赖n...

【专利技术属性】
技术研发人员:王伟李珊李涛谢学说王斌张大伟李超段莉
申请(专利权)人:南开大学
类型:发明
国别省市:

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

1