[发明专利]一种智能合约漏洞检测方法有效
申请号: | 201911080006.3 | 申请日: | 2019-11-07 |
公开(公告)号: | CN110866255B | 公开(公告)日: | 2022-04-12 |
发明(设计)人: | 高健博;任立峰;李青山;吴振豪;冯向军;吴奇泽;刘世克;司华友 | 申请(专利权)人: | 博雅正链(北京)科技有限公司;南京博雅区块链研究院有限公司;北京国信云服科技有限公司 |
主分类号: | G06F21/56 | 分类号: | G06F21/56;G06F21/57;G06Q40/04 |
代理公司: | 沈阳东大知识产权代理有限公司 21109 | 代理人: | 李珉 |
地址: | 100037 北京市*** | 国省代码: | 北京;11 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 智能 合约 漏洞 检测 方法 | ||
本发明提供一种智能合约漏洞检测方法,涉及区块链技术领域。该方法将调用智能合约的输入数据切片为多个数据单元,并将每个数据单元标记为一个污点;智能合约运行的过程中,在EVM层对标记的污点进行追踪;判断追踪到污点是否参与算术运算,如果否,则判定智能合约是安全的;如果是,则进一步判定算术运算的结果是否发生溢出,如果未发生溢出,则判定智能合约存在潜在的算术溢出漏洞,将调用智能合约的输入数据生成新的输入数据,重新进行判断;如果发生溢出则进一步判断算术运算的结果溢出是否为受保护的;根据以上判断结果最终判断智能合约是否安全。本发明方法能够用于对区块链系统进行监测,及时发现存在安全漏洞的智能合约。
技术领域
本发明涉及区块链技术领域,尤其涉及一种智能合约漏洞检测方法。
背景技术
区块链技术是分布式计算、P2P网络、密码学、共识机制等计算机技术的新应用模式,数据以交易(Transaction)的形式组合成为区块(Block),以链式结构进行连接,在分布式网络中形成共识。由于其具备防篡改、可溯源等的特性,因此在金融、征信、产品溯源等众多领域受到了广泛的关注和应用。
智能合约是区块链上的可执行代码,开发人员可以通过智能合约实现复杂的功能。智能合约运行在特定的环境中,其中Ethereum Virtual Machine(以下简称EVM)是最为常见的一种,被应用在Ethereum(以太坊)、Hyperledger Burrow等众多区块链平台中。
由于EVM中数据单元固定为256位,在进行算术运算时直接将超出数据单元范围的位丢弃,因此导致了算术溢出问题。例如,美链(BecToken)在2018年4月遭受算术溢出攻击,导致两个恶意账户被错误的转入大量的Token。
SafeMath函数库是目前最常见的保护机制,通过检查加法、减法、乘法等算术操作的结果对智能合约进行保护,在发生算术溢出时抛出异常,避免出现错误的运行结果。
现有的对智能合约溢出漏洞的检测方法和工具较少,主要有以下几种:
1.Oyente,由新加坡国立大学提出,通过基于符号执行的方法来检测漏洞。对于算术溢出漏洞的检测,Oyente存在以下不足:(1)只能检测有源代码的智能合约,对于闭源智能合约无法检测;(2)不能识别SafeMath函数库,因此导致了大量的误报。
2.SmartCheck,由卢森堡大学和俄罗斯SmartDec公司提出,通过特征匹配的方法来检测算术溢出漏洞。SmartCheck存在以下不足:(1)只能在源代码层面进行匹配;(2)特征匹配条件过于简单,误报率极高;(3)不能提供可触发漏洞的输入数据。
在算术溢出漏洞检测中,主要存在以下难点:
1.由于大量的智能合约是闭源的,即不公开源代码,因此需要在二进制层面进行检测;
2.由于SafeMath机制的存在,导致了大量的误报,因此需要对此进行检测;
3.需要触发潜在的漏洞,即历史上从未被攻击的智能合约,也可能存在漏洞,需要对此进行检测,并提供可触发漏洞的输入数据。
发明内容
本发明要解决的技术问题是针对上述现有技术的不足,提供一种智能合约漏洞检测方法,以达到能够在源代码和二进制层面检测算术溢出漏洞、能够自动生成可触发漏洞的输入数据、具备较低的误报率等目的。
为解决上述技术问题,本发明所采取的技术方案是:一种智能合约漏洞检测方法,包括以下步骤:
步骤1、将智能合约和调用智能合约的输入数据作为智能合约漏洞检测方法的输入,并判断智能合约是否为源代码,如果是则先将其编译为二进制再执行步骤2,否则直接执行步骤2;
步骤2、将调用智能合约的输入数据切片为多个数据单元,并将每个数据单元标记为一个污点;
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于博雅正链(北京)科技有限公司;南京博雅区块链研究院有限公司;北京国信云服科技有限公司,未经博雅正链(北京)科技有限公司;南京博雅区块链研究院有限公司;北京国信云服科技有限公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201911080006.3/2.html,转载请声明来源钻瓜专利网。
- 上一篇:聚乳酸高阻隔喷涂处理装置
- 下一篇:一种纳米金属氧化物材料的制备方法