20

因滥用授权 DeFi项目Bancor一个月前差点丢币

 3 years ago
source link: https://www.jinse.com/blockchain/772876.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

在我们写完“ 以太坊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 项目方和部分钱包团队都在无节制的滥用授权,共同的利益使得所有知情人全部变成了沉默者。

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

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

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

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

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

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

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


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK