当前位置:首页区块链成都联安:Bancor网络漏洞事件分析

成都联安:Bancor网络漏洞事件分析

成都联安:Bancor网络漏洞事件分析

1、 事件简介

2020-06-18(本文中提到的时间是UTC时间),位于火币网上的智能合约Bancor network被发现存在严重漏洞。该漏洞最早由Bancor网络团队和white hat发现,存在被盗风险的资金在第一时间转移,涉及金额超过50W美元。

在这种情况下,有三个合同地址存在以下漏洞:

0x923cab01e6a4639664aa64b76396eec0ea7d3a5f

0x8dfeb86c7c962577ded19ab2050ac78654fea9f7

0x5f58058c0ec971492166763c8c22632b583f667f

2020年6月18日3:06:48,Bancor network团队利用此漏洞转移具有盗窃风险的用户资金。截至2020年6月18日6时56分,Bancor网络团队共转账约409656美元。

另外两个公开电子邮件地址:

0x052ede4c2a04670be329db369c4563283391a3ea

0x1AD1099487B11879E616CA1CEEE486D1EFA7B00

同时,此漏洞还用于转移用户资金,分别为131889美元和2346美元。

到目前为止(2020-06-19):

火币4 erscan已将此漏洞标记为合同,如下图所示:

成都联安:Bancor网络漏洞事件分析1

图1

Bancor网络团队也对事件做出了回应,

成都联安:Bancor网络漏洞事件分析2

有关详细信息,请参见

( https://blog.bancor.network/bancor s-response-to-today-s-smart-contract-ulnerability-dc888c589fe4),

并在2020年6月17日联合技术标准时间21:35:53部署了新的Bancor网络合同。合同地址是

0x2f9ec37d6ccfff1cab21733bdadede11c823ccb0

2、 原理分析

漏洞发生后,成都连锁安全团队首次对该事件进行跟踪分析。根据对该链的分析结果,造成该事件脆弱性的主要原因是智能合约Bancor网络中存在一个具有public调用权限的函数safetransferfrom。通过调用此功能,用户可以授权Bancor将智能合约网的资金转移到任何地址。

从源代码可以看出,该函数是一个公共函数,具体代码如下图所示:

成都联安:Bancor网络漏洞事件分析3

图2

safetransferfrom函数在内部调用execute函数。execute函数的作用是调用代币智能合约的transferfrom函数执行代理传输。execute函数的源代码如下图所示:

成都联安:Bancor网络漏洞事件分析4

图3

我们可以清楚地看到通过链上的事务调用此函数的具体功能。例如,地址“0xc802”发起事务,调用智能合约“0x5f58”的safetransferfrom函数,将地址“0x8a39”中的0.000000000000000000000003代币mfg发送到“0x2955”,如下图所示:

成都联安:Bancor网络漏洞事件分析5

图4

以上是对该事件漏洞的原理分析。此漏洞的原理非常简单,因为函数调用权限设置不正确,并且应该仅由协定本身调用的函数设置为由任何人调用。当Bancor network有用户授权限制时,任何人都可以通过调用safetransferfrom函数作为Bancor network的代理转移用户资金。

对于此漏洞,有两点值得我们深入分析:

一。为什么Bancor网络契约的safetransferfrom功能将权限设置为public。

2。Bancor网络契约的主要功能是代币转换,而不是钱包。为什么用户有未使用的授权。

对于第一个问题,我们跟踪了safetransferfrom函数的调用,发现safetransferfrom函数只在handlesourcetoken函数中调用,该函数用于将用户的代币传输到该合约。

handlesourcetoken函数的源代码如下图所示:

成都联安:Bancor网络漏洞事件分析6

图5

由于它只在handleSourceToken函数中调用,显然不需要设置公共权限。根据业务情况,Bancor网络的主要功能是代币交换,不需要用户主动调用safeTransferFrom,也不需要设置safeTransferFrom为公共权限。因此,我们比较了合同中设置为公共许可的其他几个功能。如下图所示:

成都联安:Bancor网络漏洞事件分析7

图6

因此,对于第一个问题,我们推测,将这些功能设置为公共许可可能是由于合同开发者的疏忽所致。目前(2020-06-19),Bancor网络团队部署的新合同也证实了这一猜测。

根据链上的代码,正式部署的新契约已经更改了相关功能的所有权限(尽管其他功能与此事件无关)。具体代码如下图所示:

成都联安:Bancor网络漏洞事件分析8

图7

为了解决第二个问题,我们跟踪发现漏洞后转移资金的地址,发现这些地址经常超过授权Bancor network时需要交换的代币数,并且在交换完成后没有恢复配额。如下图所示:

成都联安:Bancor网络漏洞事件分析9

图8

“0x624frdquo”开头的地址向Bancor network contract授权900000000个ong代币,超过了ong的发行量,相当于向Bancor network contract授权“0x624frdquo”拥有的所有ong代币。在跟踪“0x624f”起始地址的事务时,我们发现在代币交换之后,我们没有使用所有授权限制,但没有恢复它们。

综上所述,我们推测用户可以随时考虑使用。为了方便起见,所有代币都被授权在同一时间签订Bancor网络合同。也可以是Bancor网络的前端设置授权量的默认值。

但这种行为有很大的风险。一旦智能合约爆发,资金很容易被攻击者偷走。在分析后续的新Bancor网络契约时发现,Bancor网络团队和用户似乎意识到了这个问题的巨大风险,并做出了相应的安全保护。

如下面的图9和图10所示,很容易看出两个授权之间的时间区间非常短。当用户成功交换代币时,将恢复剩余的授权。

成都联安:Bancor网络漏洞事件分析10

图9

成都联安:Bancor网络漏洞事件分析11

图10

3、 结论

Bancor网络此次暴露的漏洞是一个相对简单的漏洞,在代码审计过程中很容易发现,但该漏洞的影响非常大。仅上线两天,涉案基金已超过50W美元。

幸运的是,Bancor网络团队及时发现并修复了漏洞,否则后果不堪设想。成都链安研究团队在此提醒各大智能合约运营商,由于区块链合约在部署后具有不可更改的特点,与传统软件相比,上线前进行全代码审核非常重要。虽然此次事件没有造成太大的经济损失,但势必会让用户对Bancor网络团队产品的安全性产生质疑。

此外,它还提醒用户和运营商,在向第三方合同授权资金时应谨慎。他们不应该盲目相信“大公司”任何合同的授权都应坚持最低限度的原则,不要让自己的资金安全地掌握在他人手中。

温馨提示:

文章标题:成都联安:Bancor网络漏洞事件分析

文章链接:https://www.btchangqing.cn/45349.html

更新时间:2020年06月28日

本站大部分内容均收集于网络,若内容若侵犯到您的权益,请联系我们,我们将第一时间处理。

成都联安:Bancor网络漏洞事件分析12
区块链

时空云技术创始人赖楚航将于明晚19时参观火星云矿。视频详细介绍了火星云矿的时空云文件币计算产品

2020-6-28 19:27:53

区块链

比特币价格从历史高位缩水了52%,但机构投资者却增长了56%

2020-6-28 19:39:20

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索