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

作者:安比(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)实验室由中科大郭宇博士创立,聚焦智能合约安全研究,致力于打造健康有序的区块链经济体。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 218,451评论 6 506
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 93,172评论 3 394
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 164,782评论 0 354
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,709评论 1 294
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,733评论 6 392
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,578评论 1 305
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,320评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,241评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,686评论 1 314
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,878评论 3 336
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,992评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,715评论 5 346
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,336评论 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,912评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,040评论 1 270
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,173评论 3 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,947评论 2 355

推荐阅读更多精彩内容

  • 大家都有各自的经验去丰富、渲染自己的文章,我做了九年记者,写过无数篇的人物专访和通讯,从经验出发,我归纳了三个简单...
    大芭妮阅读 445评论 6 15
  • 这两天,全国大降温,不少地方都下雪了,在这个什么都不好,唯独天气不错的南方二线城市,并没有下雪,甚至在早上醒...
    小呆乐阅读 356评论 0 0
  • 即将步入而立之年, 经历的人生故事已然不少,所见所闻的就更不计其数了,从而也渐渐明白人生只有一种。 我们会在人生道...
    yager90阅读 89评论 0 1
  • 浅浅的初秋,刚刚下过蒙蒙细雨,凉薄的空气中是湿漉漉的清新,几个好友相约,寻找一下空山新雨后的感觉,五云山是...
    千秋雪_51e9阅读 311评论 0 1