一、事件简述
2020-06-18(文中所提及时间均为UTC时间),以太坊上的智能合约Bancor Network被爆出存在严重漏洞。该漏洞由Bancor Network团队和白帽最先发现,并第一时间对存在被盗风险的资金进行了转移,涉及资金50W余美元。
此次事件中,存在漏洞的合约地址主要有如下三个:
0x923cab01e6a4639664aa64b76396eec0ea7d3a5f
0x8dfeb86c7c962577ded19ab2050ac78654fea9f7
0x5f58058c0ec971492166763c8c22632b583f667f
2020-06-18 3:06:48,Bancor Network团队利用此漏洞对存在被盗风险的用户资金进行转移,截至2020-06-18 6:56,Bancor Network团队共计转移资金约合$409,656。
另外两个公开邮箱信息的地址:
0x052ede4c2a04670be329db369c4563283391a3ea
LBank蓝贝壳于5月12日21:00上线HOKK:据官方公告,5月12日21:00,LBank蓝贝壳(LBank.me)上线HOKK(Hokkaidu Inu),开放USDT交易,5月12日16:00开放充值,5月14日16:00开启提现。资料显示,Hokkaidu Inu($ HOKK)是一种点对点加密货币,具有内置的自动奖励农业(ARF)技术。[2021/5/12 21:52:57]
0x1ad1099487b11879e6116ca1ceee486d1efa7b00
也于同一时间利用此漏洞对用户资金进行转移,分别转出资金$131,889和$2346。
到目前为止(2020-06-19):
EtherScan已经将存在此漏洞的合约进行标注,如下图所示
Bancor Network团队也已对此次事件做出了回应,
LBANK蓝贝壳于3月15日22:00上线 INSUR,开放USDT交易:据官方公告,3月15日22:00,LBANK蓝贝壳上线INSUR(InsurAce),开放USDT交易,3月15日20:00开放充值,3月18日18:00开放提现。
资料显示,InsurAce的总发行量为1亿,是一个去中心化的保险协议,旨在为DeFi用户提供可靠、稳健、无忧的DeFi保险服务,保费极低,投资收益可持续。InsurAce独特的价值创造接近\"0\"的保费组合式产品设计和独特的定价模式,优化保障成本,加上可持续的投资收益,实现接近\"0\"的超低保费。[2021/3/15 18:46:38]
详情见
https://blog.bancor.network/bancors-response-to-today-s-smart-contract-vulnerability-dc888c589fe4
并于UTC时间2020-06-17 21:35:53部署了新的Bancor Network合约,合约地址为
0x2f9ec37d6ccfff1cab21733bdadede11c823ccb0
LBank 上线NEAR永续合约:据官方消息,LBank将于12月21日13:00(UTC+8) 上线NEAR?1-50倍杠杆永续合约。用户可在网页端或移动端“合约交易”参与交易,并可点击“合约介绍”查看更多合约相关信息。NEAR 6小时内最高涨幅达58%,价格波动较大,请注意风险控制。
据了解,合约上线是LBank推出的永续合约交易,目前已上线币种BTC、ETH、ETC、XLM、BLZ、NEO、ZEC、BEL等多个币种,后续将陆续上线更多永续合约交易。更多详情请关注LBank官网公告。[2020/12/21 15:56:19]
二、原理分析
漏洞爆出后,成都链安安全团队第一时间对本次事件进行跟踪分析,根据链上分析结果发现,此次事件中漏洞产生的主要原因是智能合约Bancor Network存在一个调用权限为public的函数safeTransferFrom,通过调用此函数,可以将用户授权给智能合约Bancor Network的资金转出到任意地址。
由源码可以知,该函数为一个public函数,详细代码如下图所示:
动态 | VersaBank报告:为加密交易所服务的数字保险箱项目收入可观:加拿大全数字银行VersaBank发布了其2020年第一季度报告,报告显示,其主要业务部门DRTC旗下数字保险箱项目VersaVault,正在为一些加密货币交易所提供服务,DRTC从许可协议中获得了可观的收入。DRTC目前正在进行其他项目,这些项目可能令VersaBank受益,并可能产生额外收入。(PRNewswire)[2020/2/26]
safeTransferFrom函数内部调用了execute函数。而execute函数的功能是调用safeTransferFrom参数中的_token代币智能合约的transferFrom函数进行代理转账。execute函数源码如下图所示:
我们通过一笔链上交易可以清晰的看到调用此函数的具体作用。如地址“0xc802”发起一笔交易,调用了智能合约“0x5f58”(也就是Bancor Network)的safeTransferFrom函数,使地址”0x8a39”中的0.000000000000000003代币MFG发送到”0x2955”(图中的“Bancor:White Hat S...),具体如下图所示:
动态 | SoftBank、Synchronoss和TBCASoft合作开发基于区块链的移动支付服务:Thefastmode消息,SoftBank,Synchronoss Technologies和TBCASoft已经合作开发了一个PoC,用于基于Rich Communication Services(RCS)全球消息传递标准和TBCASoft跨运营商区块链平台的新型跨运营商移动支付服务。CCPS区块链API的灵活性使收件人能够使用基于RCS的消息应用程序或传统消息服务(如SMS或移动电子邮件),通过同一国家、地区的RCS钱包应用程序接收个人对个人(P2P)资金转帐或海外。[2018/9/25]
以上就是本次事件漏洞的原理分析,该漏洞的原理十分简单,是因为函数的调用权限设置错误,将本应该只有合约本身调用的函数,设置成了任何人都可以调用。而当Bancor Network拥有用户的授权额度时,任何人都可以通过调用safeTransferFrom函数,以Bancor Network的身份对用户的资金进行代理转账。
针对该漏洞,有两点值得我们进行深入分析:
1. 为什么Bancor Network合约的safeTransferFrom函数会将权限设置成public。
2. Bancor Network合约的主要功能是代币转换,并非一个钱包,为什么用户会有未使用的授权。
对于第一个问题,我们追踪了safeTransferFrom函数的调用情况,发现safeTransferFrom函数只在handleSourceToken函数中被调用,用于将用户的代币转移到本合约中。handleSourceToken函数源码如下图所示:
既然只是在handleSourceToken函数中调用,那么显然是没有必要设置成public权限,且根据业务来看,Bancor Network的主要作用是用于代币交换,并不需要用户主动调用safeTransferFrom,也就没有必要将safetransferFrom设置为public权限。于是我们对比了合约中其他的几个函数,这几个函数均被设置成了public权限。如下图所示:
由此,针对第一个问题,我们推测将这些函数设置为public权限可能是因为合约开发人员的疏忽。而目前来看(2020-06-19),Bancor Network团队新部署的合约也验证了这个推测。根据链上代码显示,官方部署的新合约已经将相关函数权限全部进行了更改(虽然其他的函数与此事件无关)。具体代码如下图所示:
针对第二个问题,我们跟踪了漏洞爆出后被转移资金的地址,发现这些地址在对Bancor Network授权额度时,往往超过了所需要兑换代币的数量,且在兑换完成后,并没有收回额度。如下图所示:
“0x624f”开头的地址对Bancor Network合约授权了900000000000000个ONG代币,此额度已经超过了ONG的发行量,相当于将“0x624f”所拥有的ONG代币全部授权给Bancor Network合约。而跟踪“0x624f”开头地址的交易我们发现,在进行完代币兑换后,未使用完所有授权额度,但并未将授权额度收回。
综上所述,我们推测可能是用户考虑到要随时使用,为了方便,一次性将所有代币都授权给了Bancor Network合约。也可能是Bancor Network的前端对授权金额设定了默认值。但这种行为存在巨大的风险,一旦智能合约爆发漏洞,资金极易被攻击者窃取。而在对后续新的Bancor Network合约进行分析时发现,Bancor Network团队和用户似乎也意识到了此问题存在的巨大风险,并做出了相应的安全防护。如下图九、十为用户对新合约的授权情况,对比两笔线上交易不难看出,两次授权的时间间隔很短,当用户成功兑换完代币后,剩余授权即被收回。
三、结语
Bancor Network本次爆出的漏洞,是一个较为简单的漏洞,此类漏洞在代码审计过程中十分容易被发现,但此次漏洞的影响却很大,上线仅两天,涉及的资金就已经超过50w美元。幸而Bancor Network团队及时发现并修复了漏洞,否则后果不堪设想。成都链安-安全研究团队在此提醒各大智能合约运营商,因区块链合约部署后不可更改的特性,对比传统软件,上线前做好充分的代码审计十分重要,此次事件虽未造成太大的经济损失,但势必会让用户对Bancor Network团队产品的安全性产生质疑。另外也提醒广大用户和运营商,在授权资金给第三方合约时,都应保持谨慎,切不可盲目相信“大公司”,对任何合约的授权都应当秉承最小原则,不要使自己的资金安全掌握在他人手中。
文章系金色财经专栏作者币圈北冥供稿,发表言论仅代表其个人观点,仅供学习交流!金色盘面不会主动提供任何交易指导,亦不会收取任何费用指导交易,请读者仔细甄别,谨防上当.
1900/1/1 0:00:00这是系列中第二篇博客文章,重点介绍 Filecoin 协议特有的功能。 Filecoin 市场有效运行,因为客户可以确信网络上的存储矿工正在正确地存储其数据.
1900/1/1 0:00:00各位OASIS绿洲平台的玩家们,之前在《十年血战》第一期回收装备活动刷BRC刷得过瘾吗?一期活动的热度还未褪去,庆端午二期特别活动马上又要开始了,这一波活动官方比上一期花费了更多的心思.
1900/1/1 0:00:00从无人知晓到渐为人知;从冷门偏技到热门关注,IPFS从2014年诞生至今,已经走过了六个年头。正如它的创建者胡安·贝内特的天才经历一样,IPFS自大热以来,同样充满传奇故事——在实打实的技术开发.
1900/1/1 0:00:007月10日,云南国际信托有限公司(以下简称“云南信托”)与蚂蚁集团签订战略合作协议,将蚂蚁区块链技术应用于供应链金融,旨在解决中小微企业的融资难题。同时,双方还将在汽车金融领域展开合作.
1900/1/1 0:00:00自萌芽以来,区块链行业的焦点就一直在技术应用上。现代金融是如此根深蒂固,使得区块链的大规模应用进展十分缓慢.
1900/1/1 0:00:00