或许在一个月前,你已经丢了一次币

比特派钱包 版主 发布在 区块链社区
 825  1

在我们写完《以太坊DeFi生态当前最大的安全隐患》这篇文章后,大家对DeFi滥用授权的行为开始提高了重视。


其间还有不少关心资产安全的用户来问我们一些相关事情,其中有一个问题大家最为关心,那就是:


历史上有没有发生过因为滥用授权引发的资产损失事件呢?


答案是,有。

这一切不仅存在理论中,它就发生在你我身边。



我们一起回顾一个真实案例:

故事的主人公是以太坊生态中大名鼎鼎的DeFi项目——Bancor 

而一切就发生在不久前的 2020年6月16日,


看到这大家是不是会疑惑,“不久之前”、“明星项目”、“巨大漏洞”这些词汇组合在一起必定是行业讨论的热点。但为什么自己的脑海中没有这件事情的任何印象呢?这样一件巨大的安全事故好像从来没有发生过?




先缓存你的疑惑,让我们把时间回退到2020年6月16日。


看上去很普通的一天,正如你我这些上班族一样,Bancor团队也都在工位上照旧更新自己的Bancor v0.6合约代码。一行又一行的代码,就这样堆叠出 DeFi 打算耸入云霄的新基建。


但谁也不会想到,接下来他们将为这简单几行代码,经历惊心动魄的48小时。


在这之中,到底发生了什么呢?


原来,Bancor 团队的合约开发者犯了一个普通程序员经常不在意的“小失误”,


将一个合约转账操作方法的访问权限误写成了public。这一下就能带来灾难性的后果:任何人都有权限调用这个方法以合约的权限来执行“转账”操作。


至此,任何一个对 Bancor 协议进行过无限授权的普通用户,都只能是待宰的羔羊,在每一秒都面临着自己地址里的资产被他人随意掠夺挥霍的结局,代码并不会同情你为资产的积累付出了多少血泪。


那么这些用户的资产就这样灰飞烟灭了吗?


万幸,这次漏洞并没有被黑客先发现。

Bancor 团队赶在黑客之前,抢先利用起此漏洞,紧急转移了用户地址中的资产,共计455,349 美元。


在接下来的时间,Bancor发布了版本更新,并于2天后的2020年6月18日,对外公布了此次事件的始末,同时对用户进行道歉,承认自己的巨大失误。


在其公告中还提到,Bancor在仓促转移用户地址上资产的过程中引起了市场的波动,并被两个套利机器人借此此获利135,229 美元。Bancor团队呼吁其归还资产,但最终的结果,我们不得而知。


在这次 DeFi 事件中,用户从毫无察觉地丢币再到毫无察觉地失而复得,既风平浪静,又波谲云诡。


至此,整个事件就算告一段落。




但事情应该这样结束吗?


了解完这件事情之后,普通用户可能都会有所反思

“要为自己资产负责,警惕 DeFi 向自己索要无限授权”

“参与DeFi合约的资产最好要分开存储”

“要定期检查下自己有哪些过度授权”

“要......”



但仔细想来,更应该反思的不应该是各个DeFi项目方吗?

但现实并未如你所想,这也正如你的困惑。


为什么几乎没有 DeFi 项目方为此事发表讨论?

为什么生态里的“头部团队们”都捂住了嘴巴?

为什么一件巨大的安全事故最终好像从未发生?


因为几乎所有的 DeFi 项目方和部分钱包团队都在无节制的滥用授权,共同的利益使得所有知情人全部变成了沉默者。


没有修正自身的越权行为,没有展开对风险的思考;

转而将用户的质疑搪塞于各种理论,将用户的安全寄托于各种万幸,


但当不幸真的降临时,谁又能站出来呢?





代码不会同情每个普通用户为资产的积累付出了多少血泪,但是人类的本能会。


作为开发者、作为项目方、作为理应为安全保驾护航的钱包方,不应对滥用授权无动于衷,也不应为了自己能滥用授权就抛弃用户安全。


要时刻记得,仅仅一个月前,大量的用户离钱包内资产灰飞烟灭只差了一个万幸!



比特派安全实验室

2020年7月31日



比特派安全实验室将持续在智能合约安全领域投入自身的力量,为用户安全保驾护航。


Bancor案例原文:

Bancor’s response to today’s smart contract vulnerability
https://blog.bancor.network/bancors-response-to-today-s-smart-contract-vulnerability-dc888c589fe4


三个问题合约代码:

https://etherscan.io/address/0x8dFEB86C7C962577deD19AB2050AC78654feA9F7#code

https://etherscan.io/address/0x5f58058C0eC971492166763c8C22632B583F667f#code

https://etherscan.io/address/0x923cAb01E6a4639664aa64B76396Eec0ea7d3a5f#code


有问题的合约方法:

function safeTransferFrom(IERC20Token _token, address _from, address _to, uint256 _value) public

  • 正序
  • 最新
只看帖主 楼层直达
登录 账号发表你的看法,还没有账号?立即免费 注册