LOADING...
LOADING...
LOADING...
当前位置: 玩币族首页 > 新闻观点 > 智能合约无限授权的真实案例——Bancor漏洞事件

智能合约无限授权的真实案例——Bancor漏洞事件

2020-08-04 区块高度 来源:区块链网络

昨天,在文章中阐述了智能合约无限授权的相关问题。简单来说,就是一些DeFi生态上的智能合约在投资者不经意间开启无限授权智能合约就可以调用你合约地址上的所有数字资产。如果漏洞发生,被黑客利用,你该地址上(包括冷钱包)的资产一瞬间化为乌有。因为有智能合约无限授权,黑客甚至都不用打开的你的钱包,就可能轻松转移你的所用数字货币。(详细内容请前往昨日发文《警惕:以太坊 DeFi 生态的智能合约向自己索要无限授权,这可能让你的资产归零》)

当然,这个风险并不只是停留在理论阶段,只是嘴上说说。就是一个月之前,智能合约无限授权就实实在在的发生了,而故事的主角就是Bancor。

【DeFi生态重要的一员 Bancor 】


Bancor也是DeFi生态上重要的一员,根据相关数据,其代币BNT市值排在第15位,约为1.14亿美元。

受DeFi的影响,7月BNT涨幅明显,今年有一个相当不错的回报,回报率高达到500%。


从DeFi生态相关数据来看,其市值和销仓量排在第19位和第15位。


从以上数据我们可能看出,Bancor表现不错,参与的人数也比较多,在整个DeFi生态也占有一席之地。

【Bancor漏洞 无限授权的真实案例】


通过以上的分析我们可以认为,Bancor是一个优秀的DeFi生态项目。现在却成了无限授权的真实案例。


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

2020年6月16日Bancor 团队将一个合约转账操作方法的访问权限误写成了public(公众、公开)。这一下就能带来灾难性的后果:任何人都有权限调用这个方法以合约的权限来执行“转账”操作。

因为这个漏洞就是一个经典的无限授权模型,即第三方可能随意的调用在智能合约上用户的所有资产。如果黑客发现了这一漏洞,他毫不费力的转走你所有资产。

对于在2020年6月16日使用Bancor智能合约的用户来说,就是敞开的大门让小偷拿走自己的所有东西,而自己却没有任何办法。就在这一天,你的资产可能会归零。

但万幸的是,Bancor 团队先于黑客发现了这个漏洞并进行了及时补救,并转移了用户地址中的资产,这次资产共有455349美元。如果说Bancor 团队未能提前发现这个BUG,可能在这一天,你在Bancor 的上资产已经进入了他人的口袋。

虽然用户的资产保住了,但也造成了一部分损失。由于Bancor在仓促转移用户地址上资产的过程中引起了市场的波动,并被两个套利机器人借此此获利135,229 美元,到现在为止,这笔钱应该是没有追回。在漏洞发生之后的2天之后,Bancor才发布了公告称,自己出现了重大的失误,给大家道歉,以后再也不会发生这样的事情了,我们的团队技术还是有两把刷子的,请相信我们。


(Bancor 团队的公告)

然而,这是一个重大的安全事故,甚至高于Lendf.me 事件,因为Bancor犯的是一个低级而又致命的错误,仅用一公告来敷衍用户,确实有些牵强。

同样的,业界对这一事件也并没有引起更多的讨论,毕竟结果是好的。

一方面,用户资产并没有受到任何损失,优秀的团队帮你躲过了风险。另一方面,作为Bancor本身也没有受到太多的影响,在大家看来,没有损失的结果就是最好的,继续挖矿赚钱。本来是一件业界的大事,就这样草草的结束了。


比特派在文章中的发问,还是值行我们深思,所有的根源都在于“利益”二字。

因为,作为一个在DeFi生态了想发财的普通人来说,99%的人不会天天去看项目方的代码变化、也没机会仔细了解那些无节制的滥用授权智能合约。在这种“你好、我好、大家好‘的共识之下,DeFi的发展一浪高过一浪,而真正的问题并没有得到解决,只是做”掩耳盗铃“式的欢呼。

【专业机构对Bancor漏洞事件分析】


著名的安全公司成都链安,在6月28日也发布的文章《Bancor Network漏洞事件分析》,对Bancor 安全事件进行了分析。

成都链安把这个事件定义为:简单而影响很大的漏洞,相对还是比较客观的。


(EtherScan对漏洞的合约进行标注)

根据成都链安安全团队分析,跟比特派分析的结果是一致的,只是简单一个函数错误,并找到了public函数的详细代码。


成都链安也得出结论:”只是一个调用权限设置错误,将本应该只有合约本身调用的函数,设置成了任何人都可以调用。而当Bancor Network拥有用户的授权额度时,任何人都可以通过调用safeTransferFrom函数,以Bancor Network的身份对用户的资金进行代理转账。“

1、推测将这些函数设置为public权限可能是因为合约开发人员的疏忽。

2、用户为了随时使用合约,一次性将所有代币都授权给了Bancor Network合约,这就是文中所说的无限授权。

3、Bancor Network的前端对授权金额设定了默认值,这个用户无法发现,可能就是点一个”对勾“时间,你的资产已经交给第三方掌控了。

现在Bancor团队已经将无限授权改为有限授权,当用户成功兑换完代币后,剩余授权即被收回。

成都链安:提醒广大用户和运营商,在授权资金给第三方合约时,都应保持谨慎,切不可盲目相信“大公司”,对任何合约的授权都应当秉承最小原则,不要使自己的资金安全掌握在他人手中。

也许对于参与DeFi生态的普通投资者来说,大多数人根本不了解智能合约存在授权资产的问题,甚至也没有听说过。希望通过这两篇文章,让大家对DeFi无限授权有一定的了解和认识,去中心化的智能合约并不是万能的,它也存在很大的风险。

参考资料:

比特派公众号:https://mp.weixin.qq.com/s/-gQk6tiF2q1m6xN4FHEG_w

成都链安:《Bancor Network漏洞事件分析》

—-

编译者/作者:区块高度

玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。

LOADING...
LOADING...