一种智能合约漏洞检测方法技术

技术编号:37375915 阅读:6 留言:0更新日期:2023-04-27 07:19
本发明专利技术属于区块链智能合约安全检测领域,公开了一种智能合约漏洞检测方法,包括:反编译及CFG构建,经过反编译的字节码会生成EVM指令及相应的参数。之后根据反编译后的EVM指令重建控制流图CFG。将EVM指令构建数据集,并利用Transformer模型的编码器进行训练。将CFG图中节点信息输入模型中,经过模型的处理得到节点信息的特征表示向量。构建事件的时序图神经网络,将图结构以及节点的信息表征向量作为输入端传入神经网络中;经过信息传递和更新,并根据节点的时序信息构造事件序列将图信息进行表示,最终进行漏洞的检测。进行模型效果评估。本发明专利技术使模型具有更好的并行性,能有效的将CFG图中的节点信息进行表征。将CFG图中的节点信息进行表征。将CFG图中的节点信息进行表征。

【技术实现步骤摘要】
一种智能合约漏洞检测方法


[0001]本专利技术属于区块链智能合约安全检测领域,尤其涉及一种智能合约漏洞检测方法。

技术介绍

[0002]近年来,以太坊中智能合约数量不断增多,带来巨大经济利益的同时也潜藏着高危的安全风险。区块链技术具有不可篡改,去中心化等特点,这很容易导致区块链数据受到攻击和恶意传播,但对区块链平台进行攻击难度相对较高并且资源耗费巨大。然而,由于智能合约运行在不具有可信计算环境的底层基础设施上,并且具有区别于传统程序的特性,其在本身安全性上存在许多影响深远的漏洞,所以对智能合约的攻击相对简单。并且智能合约被部署上线后就无法进行修改,一旦后期发现了智能合约存在安全风险,也不能对其进行更改修复,相当于直接将安全漏洞暴露给攻击者,且无法阻止其对智能合约的恶意利用。如何在智能合约部署前对其进行漏洞检测,已经成为了区块链开发人员密切关注的问题。
[0003]目前主要的智能合约漏洞检测手段有:形式化验证、模糊测试、符号执行等方法,具体分析:形式化方法的优点在于整个验证过程具有数学逻辑上的完备性,能保证100%的检测精度,缺点在于需要人工参与建模和推理过程,效率十分低下;模糊测试生成用例的随机性,其所能涵盖的执行路径有限,路径覆盖率低,很难发现潜在的漏洞;基于符号执行的静态漏洞检测工具多数依赖于已有的专家规则,无法识别复杂逻辑漏洞且误报率较高。

技术实现思路

[0004]本专利技术的目的是为解决智能合约漏洞检测技术手段单一,提供一种基于事件的时序图神经网络与Transformer相结合的漏洞检测方案;通过反编译字节码生成控制流图,利用Transformer的编码器将语义特征即节点特征转换为向量表示,并结合事件的时序图神经网络捕获语义信息和程序范围内的控制流时序信息,从而实现高精度的智能合约漏洞检测。
[0005]为解决上述技术问题,本专利技术的一种智能合约漏洞检测方法的具体技术方案如下:
[0006]一种智能合约漏洞检测方法,包括如下步骤:
[0007]步骤1:反编译及CFG构建,经过反编译的字节码生成EVM指令及相应的参数,之后根据反编译后的EVM指令重建控制流图CFG;
[0008]步骤2:将EVM指令构建数据集,并利用Transformer模型的编码器进行训练;
[0009]步骤3:将CFG图中节点信息输入Transformer模型中,经过模型的处理得到节点信息的特征表示向量;
[0010]步骤4:构建事件的时序图神经网络,将图结构以及节点的信息表征向量作为输入端传入神经网络中;经过信息传递和更新,并根据节点的时序信息构造事件序列将图信息
进行表示,最终进行漏洞的检测;
[0011]步骤5:通过目标检测指标进行模型效果评估。
[0012]进一步地,所述步骤1包括如下具体步骤:
[0013]对智能合约源码通过使用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代表时序信息。
[0014]进一步地,所述步骤2包括如下具体步骤:
[0015]Transformer模型使用注意力机制,将输入序列中的任意两个位置间距缩小为一个常量,该模型的输入端分为两部分,分别为Token Embedding和Positional Embedding,其中,Token Embedding通过构建指令词表以token为单位进行映射向量;Positional Embedding以非常数形式进行位置信息变换,从而弥补自注意力机制不能捕捉序列时序信息的缺陷,在Transformer中,采用如下规则来生成各维度的位置信息:
[0016][0017][0018]其中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得到整个权重和输出,其输出向量的计算公式为:
[0019][0020]其中,多头注意力机制具体计算公式如下:
[0021]MultiHead(Q,K,V)=Concat(head1,...,head
h
)W
O
ꢀꢀꢀ
(4)
[0022]where head
i
=Attention(QW
iQ
,KW
iK
,VW
iV
)
ꢀꢀꢀ
(5)
[0023]其中其中
[0024]进一步地,所述步骤3包括如下具体步骤:
[0025]给定一个block的序列T=[T1,T2,T3,.......T
n
],其中n是序列长度,以block为单
位将指令集输入Transformer模型中,通过Transformer的Encoder进行编码取最后一层编码器输出,表示为:
[0026]X
s
=[E1,E2,E3...........E
n
]ꢀꢀꢀ
(6)
[0027]最终确定将各个token向量加权取平均值作为block的特征表示向量,进行下游任务。
[0028]进一步地,所述步骤4包括如下具体步骤:
[0029]时序事件神经网络模型输入为图结构信息与节点特征表示向量,通过事件的时序本文档来自技高网
...

【技术保护点】

【技术特征摘要】
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...

【专利技术属性】
技术研发人员:孙建国常景辉田野
申请(专利权)人:杭州领巍信息技术有限公司
类型:发明
国别省市:

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

1