【技术实现步骤摘要】
一种智能合约漏洞检测方法
[0001]本专利技术属于区块链智能合约安全检测领域,尤其涉及一种智能合约漏洞检测方法。
技术介绍
[0002]近年来,以太坊中智能合约数量不断增多,带来巨大经济利益的同时也潜藏着高危的安全风险。区块链技术具有不可篡改,去中心化等特点,这很容易导致区块链数据受到攻击和恶意传播,但对区块链平台进行攻击难度相对较高并且资源耗费巨大。然而,由于智能合约运行在不具有可信计算环境的底层基础设施上,并且具有区别于传统程序的特性,其在本身安全性上存在许多影响深远的漏洞,所以对智能合约的攻击相对简单。并且智能合约被部署上线后就无法进行修改,一旦后期发现了智能合约存在安全风险,也不能对其进行更改修复,相当于直接将安全漏洞暴露给攻击者,且无法阻止其对智能合约的恶意利用。如何在智能合约部署前对其进行漏洞检测,已经成为了区块链开发人员密切关注的问题。
[0003]目前主要的智能合约漏洞检测手段有:形式化验证、模糊测试、符号执行等方法,具体分析:形式化方法的优点在于整个验证过程具有数学逻辑上的完备性,能保证100%的检测精度,缺点在于需要人工参与建模和推理过程,效率十分低下;模糊测试生成用例的随机性,其所能涵盖的执行路径有限,路径覆盖率低,很难发现潜在的漏洞;基于符号执行的静态漏洞检测工具多数依赖于已有的专家规则,无法识别复杂逻辑漏洞且误报率较高。
技术实现思路
[0004]本专利技术的目的是为解决智能合约漏洞检测技术手段单一,提供一种基于事件的时序图神经网络与Transformer相结合的漏 ...
【技术保护点】
【技术特征摘要】
1.一种智能合约漏洞检测方法,其特征在于,包括如下步骤:步骤1:反编译及CFG构建,经过反编译的字节码生成EVM指令及相应的参数,之后根据反编译后的EVM指令重建控制流图CFG;步骤2:将EVM指令构建数据集,并利用Transformer模型的编码器进行训练;步骤3:将CFG图中节点信息输入Transformer模型中,经过模型的处理得到节点信息的特征表示向量;步骤4:构建事件的时序图神经网络,将图结构以及节点的信息表征向量作为输入端传入神经网络中;经过信息传递和更新,并根据节点的时序信息构造事件序列将图信息进行表示,最终进行漏洞的检测;步骤5:通过目标检测指标进行模型效果评估。2.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,所述步骤1包括如下具体步骤:对智能合约源码通过使用solc工具进行编译,得到字节码文件,采用两步将字节码转换成CFG:反编译生成汇编指令和使用汇编指令构建CFG;反编译和构建CFG使用Octopus工具,Octopus第一步将字节码先转换成汇编指令集,第二步将汇编指令集转换成CFG图需要的元素,block集和edge集,然后生成CFG文件,block集是图中节点指令的集合,Edge集除了表明这条边的起始点和终点,还包括边的类型,边的类型包括以下五类:unconditional,conditional_true,conditional_false,fallthrough和call;提取CFG图中信息,导出所需要的数据target、graph、instruction、Attribute和Time,target代表有无漏洞,graph代表图的信息,其参数分别为起始点、边类型、终止点;instruction是block的指令集合;Attribute代表了边的类型;Time代表时序信息。3.根据权利要求1所述的智能合约漏洞检测方法,其特征在于,所述步骤2包括如下具体步骤:Transformer模型使用注意力机制,将输入序列中的任意两个位置间距缩小为一个常量,该模型的输入端分为两部分,分别为Token Embedding和Positional Embedding,其中,Token Embedding通过构建指令词表以token为单位进行映射向量;Positional Embedding以非常数形式进行位置信息变换,从而弥补自注意力机制不能捕捉序列时序信息的缺陷,在Transformer中,采用如下规则来生成各维度的位置信息:采用如下规则来生成各维度的位置信息:其中PE代表Positional Embedding矩阵,pos∈[0,max_len)表示具体的某一个位置,i∈[0,d
model
/2)表示具体的某一维度,将Token Embedding和Positional Embedding的向量进行相加作为Transformer模型的输入;Transformer的编码器是由多个相同的层叠加而成的,每个层都有两个子层,第一个子层是多头自注意力Multi
‑
head self
‑
attention汇聚;第二个子层是基于位置的前馈网络,对于Encoder中的Multi
‑
head Attention来说,其原始的q、k、v均是Encoder的Token输入经过Embedding后的结果,q、k、v分别经过一次线性变换后得到了Q、K、V,自注意力机制的核心就是通过Q和K计算得到注意力权重;然后再作用于V得到整个权重和输出,其输出向量的计
算公式为:其中,多头注意力机制具体计算公式如下:MultiHead(Q,K,V)=Concat(head...
【专利技术属性】
技术研发人员:孙建国,常景辉,田野,
申请(专利权)人:杭州领巍信息技术有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。