【技术实现步骤摘要】
基于预训练模型的以太坊智能合约漏洞检测方法及系统
[0001]本专利技术涉及一种基于预训练模型的以太坊智能合约漏洞检测方法及系统,属于区块链安全保障和深度学习领域。
技术介绍
[0002]智能合约作为区块链技术最成功的应用之一,已经吸引了学术界和工业界的目光。智能合约是一段运行在区块链平台上的计算机程序,通常由图灵完备的高级编程语言Solidity编写。以太坊作为一个开源的公共区块链平台,也是目前为止智能合约数量部署最多的区块链平台。智能合约的安全性通常是由区块链,以太坊,以及自身编程语言Solidity共同决定的。过去,智能合约的安全问题已经造成了重大的经济损失。
[0003]智能合约极易受到攻击,合约之所以受到攻击者攻击,主要有以下三方面的原因:(1)智能合约通常处理和操纵与加密数字货币相关的交易,对智能合约进行攻击可以为攻击者带来更多的经济效益;(2)智能合约的应用场景复杂且多变,当前智能合约的编程语言仍然是新颖且粗糙的。在实际场景下,合约的开发者可能很难去测试,从而造成智能合约的资产安全问题;(3)与传统语言 ...
【技术保护点】
【技术特征摘要】
1.一种基于预训练模型的以太坊智能合约漏洞检测方法,其特征在于,包括如下步骤:步骤1:收集智能合约数据集,根据漏洞合约的标准特征,提取智能合约中的目标函数片段,将智能合约的目标函数片段集合以及合约漏洞标签组成样本集;所述目标函数片段集合中包括一个或多个目标函数片段;步骤2:根据漏洞标准,找到智能合约目标函数片段集合中相关的变量或者语句,经过数据流和控制流分析后,获取智能合约程序切片信息集合;步骤3:调用语法解析器编译智能合约目标函数片段集合中各目标函数片段,并遍历生成的各目标函数片段的AST,获取智能合约AST结构化信息集合;步骤4:对智能合约程序切片信息集合和AST结构化信息集合进行规范化、分词和编码;步骤5:采用两个网络模型进行两种代码表征信息的训练,并采用预训练模型CodeBert拼接不同的代码表征,基于融合的特征实现智能合约漏洞的检测。2.根据权利要求1所述的一种基于预训练模型的以太坊智能合约漏洞检测方法,其特征在于,步骤1中提取智能合约中目标函数片段的方法,包括如下步骤:步骤11:根据智能合约源代码中原始合约版本,调用相应的编译器Solc版本进行合约的编译;步骤12:对于Solc编译成功的合约,生成相应的合约抽象语法树文件;步骤13:利用Slither生成函数全局调用图,根据合约全局函数调用路径,获得全局的函数调用关系;步骤14:利用Slither生成单个函数内部的控制流图,获取函数内部变量的控制依赖关系和数据依赖关系;步骤15:根据步骤13和步骤14,拼接组成合约的全局控制流图,获取一个合约完整的控制流和数据流信息;步骤16:在步骤15全局控制流图的基础上,对于智能合约数据集,根据漏洞类型的标准和模式,分析变量关系,提取相应的函数片段。3.根据权利要求1所述的一种基于预训练模型的以太坊智能合约漏洞检测方法,其特征在于,步骤2中获取智能合约程序切片信息集合的方法,包括如下步骤:步骤21:根据漏洞分类框架或者漏洞准则,对于智能合约目标函数片段集合中的一个或者多个目标函数,确定相关的变量集合或语句集合;步骤22:根据全局控制流图,进行变量或者语句的数据依赖分析,把所有相关数据依赖的变量或者语句全部提取出来,生成目标函数片段集合的候选数据依赖集;步骤23:根据全局控制流图,进行变量或者语句的控制依赖分析,把所有相关的控制依赖的变量或者语句全部提取出来,生成目标函数片段集合的候选控制依赖集;步骤24:按照原始合约中代码的顺序,合并所有候选数据依赖集和候选控制依赖集,生成智能合约程序切片信息集合。4.根据权利要求1所述的一种基于预训练模型的以太坊智能合约漏洞检测方法,其特征在于,所述步骤3中获取智能合约AST结构化信息集合的方法,包括如下步骤:步骤31:使用语法解析器ANTLR编译目标函数片段集合中各目标函数片段,生成编译的AST片段集合;步骤32:采用深度优先遍历的方式,遍历编译的AST片段集合,生成AST结构化信息集
合。5.根据权利要求1所述的一种基于预训练模型的以太坊智能合约漏洞检测方法,其特征在于,所述步骤4包括如下步骤:步骤41:规范化漏洞信息:使用FUN{#}替换合约中的目标函数名称,其中#表示数...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。