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

一种智能合约漏洞的检测方法及相关设备技术

技术编号:31755053 阅读:20 留言:0更新日期:2022-01-05 16:37
本申请公开了一种智能合约漏洞的检测方法及相关设备,包括:根据智能合约的状态、智能合约的路径空间以及符号执行中是否触发智能合约漏洞,构建路径选择模型与符号执行平台的交互接口;通过交互接口将训练后的路径选择模型连接到符号执行平台中,由路径选择模型对符号执行过程中的路径选择进行决策;其中,路径选择模型为采用强化学习算法通过无监督学习训练得到;通过符号执行平台对目标智能合约可执行的路径进行遍历,得到符号执行结果;根据符号执行结果确定目标智能合约所存在的漏洞。本申请能够有效选取存在漏洞的概率较大的路径,相对于传统的符号执行中对路径的随机选择,能够有效缩短发现漏洞的时间,提高了漏洞检测的效率。检测的效率。检测的效率。

【技术实现步骤摘要】
一种智能合约漏洞的检测方法及相关设备


[0001]本申请涉及智能合约
,更具体地说,是涉及一种智能合约漏洞的检测方法及装置。

技术介绍

[0002]随着区块链(Block Chain)技术的发展和落地,大量的智能合约(Smart Contract)被应用到不同的领域,如金融服务、公共服务、物联网等。
[0003]其中,区块链是一种数据的存储方式,通过在每一区块中保存上一个区块的哈希值以及分布式的存储方式,保证了区块链上数据不可篡改,此外区块链上的数据有不可销毁、匿名、可溯源的特性。
[0004]智能合约是区块链2.0时代的一大特征,其由开发人员在本地编写源码,使用编译器编译成一段字节码,其中每一个字节对应一个操作码,之后将字节码部署到区块链上,即保存在区块链上。对于部署成功的智能合约,用户能够通过对智能合约发起一笔特定的交易进行合约的调用,交易中除了包含发送的代币数量,还可以指定合约中的函数以及函数的参数,智能合约在接收到交易后会按照部署的字节码运行,运行结果会记录在区块链上。
[0005]智能合约的可信度源自其不可篡改性,一旦被部署上线便无法修改,任何人都可对合约存在的安全漏洞发起攻击。此外,很多项目会公开智能合约源码。源码的公开透明虽能提升用户对合约的信任度,却也大幅度降低了黑客攻击的成本,每一个暴露在开放网络上的智能合约都有可能成为专业黑客团队的金矿和攻击目标。
[0006]目前,以太坊(Ethereum)是最大的支持图灵完备的区块链平台,随着智能合约数量的增多,去中心化应用(Decentralized Application,DApp)的推广,智能合约涉及的数字资产呈指数级别增长。相比传统软件,智能合约的安全问题更加棘手,现实情况也更加严峻。例如DAO攻击事件中,黑客借助漏洞偷走了5000万美元。如果没有相应的防御措施,将无法遏止安全问题的恶化,从而严重损害合约本身的经济价值以及公众对项目的信任。因此,在智能合约部署前对其进行检测,以及时发现可能被利用的漏洞是亟需解决的问题。

技术实现思路

[0007]有鉴于此,本申请提供了一种智能合约漏洞的检测方法及相关设备,以实现对智能合约的漏洞进行检测。
[0008]为实现上述目的,本申请第一方面提供了一种智能合约漏洞的检测方法,包括:
[0009]根据智能合约的状态、智能合约的路径空间以及符号执行中是否触发智能合约漏洞,构建路径选择模型与符号执行平台的交互接口;
[0010]通过所述交互接口将训练后的路径选择模型连接到符号执行平台中,由所述路径选择模型对符号执行过程中的路径选择进行决策;
[0011]其中,所述路径选择模型为采用强化学习算法通过无监督学习训练得到;
[0012]通过所述符号执行平台对目标智能合约可执行的路径进行遍历,得到符号执行结
果;
[0013]根据符号执行结果确定目标智能合约所存在的漏洞。
[0014]优选地,所述交互接口包括状态接口、动作选择接口和奖励反馈接口;
[0015]所述根据智能合约的状态、智能合约的路径空间以及符号执行中是否触发智能合约漏洞,构建路径选择模型与符号执行平台的交互接口的过程,包括:
[0016]根据智能合约的状态,构建符号执行平台到路径选择模型的状态输入;
[0017]根据智能合约的路径空间及当前状态,构建路径选择模型到符号执行平台的动作输入;
[0018]根据符号执行中是否触发智能合约漏洞,构建符号执行平台到路径选择模型的奖励输入。
[0019]优选地,所述根据智能合约的状态,构建符号执行平台到路径选择模型的状态输入的过程,包括:
[0020]获取智能合约的状态,所述状态包括代码覆盖率、预设的操作码的执行频率、路径深度和/或路径约束;
[0021]将所述状态转换为特征向量,并以所述特征向量作为符号执行平台到路径选择模型的状态输入。
[0022]优选地,所述根据智能合约的路径空间及当前状态,构建路径选择模型到符号执行平台的动作输入的过程,包括:
[0023]根据智能合约的路径空间及当前状态,通过∈

贪婪算法确定一个分支路径,以所确定的分支路径作为路径选择模型到符号执行平台的动作输入;
[0024]其中,当前状态由当前时刻符号执行平台到路径选择模型的状态输入确定;∈为随机确定的概率。
[0025]优选地,所述根据符号执行中是否触发智能合约漏洞,构建符号执行平台到路径选择模型的奖励输入的过程,包括:
[0026]若符号执行中触发了智能合约漏洞,则生成预设的奖励值,并以所述奖励值作为符号执行平台到路径选择模型的奖励输入。
[0027]优选地,所述符号执行结果包括每一次动作执行所涉及的操作码、变量和/或数据流;
[0028]所述根据符号执行结果确定目标智能合约所存在的漏洞的过程,包括:
[0029]根据所述操作码以及预设的检测规格,确定目标智能合约所存在的漏洞;
[0030]其中,所述检测规则包括:
[0031]若操作码所依赖的变量包括COINBASE、TIMESTAMP、NUMBER、DIFFICULTY和/或GASLIMIT,则确定目标智能合约存在依赖区块状态进行转账的漏洞;
[0032]根据操作码及数据流,判断是否存在先转账再修改账本的操作,若是则确定目标智能合约存在重入漏洞;
[0033]对于传入的变量,若所述变量本身或经过数据流后的变量,被用作DelegateCall的参数,则确定目标智能合约存在危险的委托调用的漏洞。
[0034]优选地,所述路径选择模型为深度Q学习网络DQN模型;所述DQN模型的训练过程,包括:
[0035]获取智能合约代码;
[0036]将所述智能合约代码的符号执行建模为马尔可夫决策过程,得到DQN模型的状态空间S、动作空间A以及对应于动作的奖励值R;
[0037]初始化DQN模型的网络参数Q(s,a),其中,s∈S,a∈A;
[0038]通过所述DQN模型对符号执行过程中的路径选择进行决策,根据所述决策采取动作a
t
,进入状态s
t+1
,并计算所述动作所获得的奖励r(s
t
,a
t
),对网络参数Q进行更新,直到网络参数Q收敛:
[0039]Q(s
t
,a
t
)

Q(s
t
,a
t
)+α(R
t+1
+λmax
a
Q(s
t+1
,a
t
)

Q(s
t
,a
t
))
[0040]其中,α是指学习率,用于控制前一个Q值和新提出的Q值之间被考虑到的差异程度。
[0041]本申请第二方面提供了一种智能合约漏本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种智能合约漏洞的检测方法,其特征在于,包括:根据智能合约的状态、智能合约的路径空间以及符号执行中是否触发智能合约漏洞,构建路径选择模型与符号执行平台的交互接口;通过所述交互接口将训练后的路径选择模型连接到符号执行平台中,由所述路径选择模型对符号执行过程中的路径选择进行决策;其中,所述路径选择模型为采用强化学习算法通过无监督学习训练得到;通过所述符号执行平台对目标智能合约可执行的路径进行遍历,得到符号执行结果;根据符号执行结果确定目标智能合约所存在的漏洞。2.根据权利要求1所述的方法,其特征在于,所述交互接口包括状态接口、动作选择接口和奖励反馈接口;所述根据智能合约的状态、智能合约的路径空间以及符号执行中是否触发智能合约漏洞,构建路径选择模型与符号执行平台的交互接口的过程,包括:根据智能合约的状态,构建符号执行平台到路径选择模型的状态输入;根据智能合约的路径空间及当前状态,构建路径选择模型到符号执行平台的动作输入;根据符号执行中是否触发智能合约漏洞,构建符号执行平台到路径选择模型的奖励输入。3.根据权利要求2所述的方法,其特征在于,所述根据智能合约的状态,构建符号执行平台到路径选择模型的状态输入的过程,包括:获取智能合约的状态,所述状态包括代码覆盖率、预设的操作码的执行频率、路径深度和/或路径约束;将所述状态转换为特征向量,并以所述特征向量作为符号执行平台到路径选择模型的状态输入。4.根据权利要求2所述的方法,其特征在于,所述根据智能合约的路径空间及当前状态,构建路径选择模型到符号执行平台的动作输入的过程,包括:根据智能合约的路径空间及当前状态,通过∈

贪婪算法确定一个分支路径,以所确定的分支路径作为路径选择模型到符号执行平台的动作输入;其中,当前状态由当前时刻符号执行平台到路径选择模型的状态输入确定;∈为随机确定的概率。5.根据权利要求2所述的方法,其特征在于,所述根据符号执行中是否触发智能合约漏洞,构建符号执行平台到路径选择模型的奖励输入的过程,包括:若符号执行中触发了智能合约漏洞,则生成预设的奖励值,并以所述奖励值作为符号执行平台到路径选择模型的奖励输入。6.根据权利要求1所述的方法,其特征在于,所述符号执行结果包括每一次动作执行所涉及的操作码、变量和/或数据流;所述根据符号执行结果确定目标智能合约所存在的漏洞的过程,包括:根据所述操作码以及预设的检测规格,确定目标智能合约所存在的漏洞;其中,所述检测规则包括:若操作码所依赖的变量包括COINBASE、TIMESTAMP、NUMBER、DIFFICULTY和/或
GASLIMIT,则确定目标智能合约存在依赖区块状态进...

【专利技术属性】
技术研发人员:蒋子规苏健钟郑子彬
申请(专利权)人:中山大学
类型:发明
国别省市:

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

1