[发明专利]一种以太坊智能合约漏洞检测方法及装置有效
申请号: | 201911316138.1 | 申请日: | 2019-12-19 |
公开(公告)号: | CN111125716B | 公开(公告)日: | 2022-05-31 |
发明(设计)人: | 梁彬;韩松明;黄建军;石文昌 | 申请(专利权)人: | 中国人民大学 |
主分类号: | G06F21/57 | 分类号: | G06F21/57;G06K9/62 |
代理公司: | 北京纪凯知识产权代理有限公司 11245 | 代理人: | 孙楠 |
地址: | 100872 *** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 以太 智能 合约 漏洞 检测 方法 装置 | ||
本发明涉及一种以太坊智能合约漏洞检测方法和装置,包括以下步骤:1)对待测合约和已知漏洞合约的合约字节码转化为指令集,并构建控制流图;2)遍历待测合约的控制流图,找到并标记所有的特定指令作为切片条件;3)对待测合约和已知的漏洞合约进行模拟执行,并完成切片操作;4)将待测合约的切片与已知漏洞合约的切片中和漏洞关系最为密切的切片两两对比,确定二者的相似度,并根据相似度判断待测合约是否存在漏洞合约。本发明在常规匹配技术的基础上,提供了准确率更高的用于智能合约字节码漏洞检测的方法及装置,不依赖漏洞模式等先验知识,可用于对智能合约字节码进行高准确率的漏洞检测与分析。
技术领域
本发明是关于一种以太坊智能合约漏洞检测方法及装置,属于互联网技术领域。
背景技术
以太坊是一个公共的区块链平台,智能合约是一种部署并运行于以太坊平台上的程序。以太坊提供了一个图灵完备的脚本语言Solidity以供用户编写智能合约,从而允许在没有第三方的情况下用户之间进行可信的交易。然而,不恰当的编码行为可能会在智能合约中引入安全漏洞。由于区块链拥有数据不可篡改的特性,智能合约一旦部署就无法通过补丁等方式对漏洞进行修复,因此相较于传统程序,智能合约若存在漏洞会带来更为严重的危害。
目前许多已造成重大资产损失的智能合约漏洞成因均与不恰当的外部数据处理有关。然而在实际中,函数体内导致漏洞形成的语句往往仅占较小的一部分,若其余与漏洞无关的代码不加以排除则会干扰匹配的结果。由于智能合约的内部逻辑大多较为相似,漏洞无关代码对于匹配的影响会更为显著。此外,由于智能合约部署于以太坊时使用的是编译后的字节码而非源码,匹配的工作需要在字节码层面进行。然而,智能合约的编写语言Solidity是一门高速发展变化中的语言,其编译器也在快速地迭代更新,这就使得相当数量版本的编译器被用于智能合约字节码的生成。同一份源码经由不同版本的编译器编译后得到的字节码很可能存在差异,这会对匹配的结果造成较大影响。
发明内容
针对上述现有技术的不足,本发明的目的是提供一种以太坊智能合约漏洞检测方法及装置,其降低了漏洞中的无关代码对漏洞匹配的干扰,提高了漏洞检测的准确性。
为实现上述目的,本发明提供了一种以太坊智能合约漏洞检测方法,包括以下步骤:1)对待测合约和已知漏洞合约的合约字节码转化为指令集,并构建控制流图;2)遍历待测合约的控制流图,找到并标记所有的特定指令作为切片条件;3)对待测合约和已知的漏洞合约进行模拟执行,并完成切片操作;4)将待测合约的切片与已知漏洞合约的切片中和漏洞关系最为密切的切片两两对比,确定二者的相似度,并根据相似度判断待测合约是否存在漏洞合约。
进一步,步骤4)具体包括:已知漏洞合约的切片中和漏洞关系最为密切的切片设置为漏洞切片库,将待测合约的切片与漏洞切片库中切片两两对比,若一待测合约的切片与漏洞切片库中切片相似度大于阈值,则待测合约的切片对应的合约会被输出为潜在的漏洞合约。
进一步,步骤2)中作为切片条件的特定指令包括引入用户参数的指令以及引入区块上的数据的指令;记录特定指令在智能合约中的位置,以实现对切片条件的标记。
进一步,步骤3)中对待测合约和已知的漏洞合约进行模拟执行包括:模仿以太坊虚拟机的行为,依次执行待测合约中的特定指令;并在模拟执行的过程中同步地更新各个存储结构中的数据,以辅助实现模拟执行期间各特定指令的功能;在遇到需要引入外部数据的特定指令时,将符号作为外部数据的替代送入存储结构内;在遇到条件分支时,根据条件的情况来决定是仅执行某个分支或是分别执行两个分支。
进一步,步骤3)中切片操作包括:若切片条件的指令执行时引入了数据D,那么在后续的执行过程中,将数据D或由数据D衍生出的数据作为参数的指令以“指令+参数”的形式被纳入切片条件的切片。
进一步,对于每一个切片条件及其引入的数据D,当关键的结构性指令I执行时,若有数据D或由数据D衍生出的数据存在于任一存储结构中,则将结构性指令I纳入切片条件的切片。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于中国人民大学,未经中国人民大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911316138.1/2.html,转载请声明来源钻瓜专利网。
- 上一篇:一种服装生产行业用高分子面料上胶复合设备
- 下一篇:一种智能卡及其管理方法