史上影响范围最广的智能合约缺陷浮出水面

作者:安比(SECBIT)实验室

安比(SECBIT)实验室近期在分析监控以太坊上部署的大量智能合约时,持续不断地发现有ERC20 Token 智能合约实际上并没有严格遵守 ERC20的规范。这类非标准的Token合约在以太坊的工具链没有升级到新版本之前,并没有带来什么明显的问题。但是近日随着以太坊智能合约语言编译器 Solidity的升级,这类非标准合约的缺陷被逐步放大,有可能会导致基于ERC20标准的DAPP发生大规模异常。这类DAPP会包括去中心化交易所,链上资产托管,链上钱包等应用。经安比智能监控平台的初步统计,存在该问题的合约多达2603个,其中不乏多个市值较大的明星币种。目前多数DAPP开发团队并没有充分认识到这一问题的严重性。

不兼容问题及其原因是什么?

这些出问题的ERC20合约中的transfer函数没有返回值,而按照ERC20规范,transfer函数应该返回bool类型的值。当外部合约(DAPP)按照ERC20规范来调⽤这些⽆返回值的transfer函数时,在0.4.22之前的编译器版本编译时,不会有大的问题,但是当这些外部合约采用0.4.22及以上版本编译时,其调用会导致异常,致使转账失败。

这些合约都来源于一些公开的ERC20代码实现,其中不乏Open Zeppelin和以太坊官网这样的权威网站的ERC20代码。Open Zeppelin历史一段时期推出的合约存在该问题,影响的合约数量为292个,受影响的函数有transfer、transferFrom、approve;以太坊官方的ERC20智能合约一直存在该问题,直到昨天安比(SECBIT)实验室向以太坊官方提交issue修正此问题(https://github.com/ethereum/ethereum-org/pull/859),该问题合约影响的合约数量为1703个,受影响的函数为transfer函数。该类问题对所有通过外部合约(DAPP)来调⽤Token合约transfer函数的场景都将产⽣极⼤的影响,如果未来DAPP开发团队不加以重视,可能致使DAPP功能瘫痪,这其中受影响最大的是各个去中心化交易所。

受影响的智能合约有哪些?

以下是本次事件中etherscan上所有Token市值排名靠前的合约中存在transfer函数、transferFrom函数、approve函数没有return值的合约列表。

排名 TOKEN TRANSFER 函数 TRANSFERFROM函数 APPROVE 函数 市值 (亿美元)
17 BNB 18.54
21 OMG 11.65
58 LRC 2.96
99 SOC 1.39
118 HPB 1.11
129 PAY 0.96
184 CS 0.59

以上数据根据coinmarketcap所有加密数字货币的市值整理,统计于2018年6月8日上午。

目前安比(SECBIT)实验室团队与LRX(LoopRing)等达成技术合作,已经制定相应解决方案,后续不会受此问题影响;团队也与BNB(Binance Coin)第一时间取得联系,经过确认BNB团队已经针对此问题制定相应解决方案,后续不会受此问题影响;团队与去中心化dex.top和ddex.io也第一时间取得联系,并迅速对问题的解决方案达成一致,目前这两家交易所的线上合约使用的是0.4.21之前的编译器编译,因此暂时不受该问题影响。

​ 相比这些出问题的智能合约,涉及交易的DAPP受影响更大,例如去中心化交易所。如果去中心化交易所发布的DAPP是用0.4.22及以上版本编译的,将导致涉及问题合约的交易无法正常进行。

如何提高智能合约安全性?

在这2600多份合约中,很多已经上线去中⼼化交易所,⽽去中⼼化交易所势必会按照EIP20规范实现来调用transfer函数,⼀旦使用0.4.22版本以上的solidity编译合约,后果不堪设想。另外即使是以太坊官网、Open Zeppelin这样的知名网站,也难免会出现疏漏,公布缺陷代码。我们建议各项目团队,在拷贝使用网络公开代码的时候,一定要也一定要及时咨询专业合约审计机构的建议。

针对今天暴露的智能合约问题,安比实验室在这里提供了技术解决方案:(https://github.com/sec-bit/badERC20Fix/)

在“SECBIT技术社区”的官方公众号最新推文中有详细剖析及应对预案。

目前安比实验室已与诸多去中心化交易所和项⽬⽅取得联系,确认该问题。同时安比实验室也在持续跟进该问题,很快将会给出更为明确的解决⽅案,请大家关注安比实验室后续报道。我们呼吁以太坊社区能够重视合约兼容性问题,为DAPP 的发展打下良好的基础。


以上观点由安比(SECBIT)实验室提供。

安比(SECBIT)实验室由中科大郭宇博士创立,聚焦智能合约安全研究,致力于打造健康有序的区块链经济体。

你可能感兴趣的:(史上影响范围最广的智能合约缺陷浮出水面)