Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

区块链资讯网友2020-06-29 18:18:33  阅读 -评论 0

原文标题:《成都链安:Bancor Network 漏洞事件分析》

原文来源:成都链安

一、事件简述

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

0x1ad1099487b11879e6116ca1ceee486d1efa7b00

也于同一时间利用此漏洞对用户资金进行转移,分别转出资金131,889 和2346。

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

EtherScan 已经将存在此漏洞的合约进行标注,如下图所示

Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

Bancor Network 团队也已对此次事件做出了回应,

Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

详情见(https://blog.bancor.network/bancors-response-to-today-s-smart-contract-vulnerability-dc888c589fe4),并于 UTC 时间 2020-06-17 21:35:53 部署了新的 Bancor Network 合约,合约地址为0x2f9ec37d6ccfff1cab21733bdadede11c823ccb0

二、原理分析

漏洞爆出后,成都链安安全团队第一时间对本次事件进行跟踪分析,根据链上分析结果发现,此次事件中漏洞产生的主要原因是智能合约 Bancor Network 存在一个调用权限为 public 的函数 safeTransferFrom,通过调用此函数,可以将用户授权给智能合约 Bancor Network 的资金转出到任意地址。

由源码可以知,该函数为一个 public 函数,详细代码如下图所示:

Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

safeTransferFrom 函数内部调用了 execute 函数。而 execute 函数的功能是调用 safeTransferFrom 参数中的_token 代币智能合约的 transferFrom 函数进行代理转账。execute 函数源码如下图所示:

Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

我们通过一笔链上交易可以清晰的看到调用此函数的具体作用。如地址「0xc802」发起一笔交易,调用了智能合约「0x5f58」(也就是 Bancor Network)的 safeTransferFrom 函数,使地址」0x8a39」中的 0.000000000000000003 代币 MFG 发送到」0x2955」(图中的「Bancor:White Hat S...),具体如下图所示:

Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

以上就是本次事件漏洞的原理分析,该漏洞的原理十分简单,是因为函数的调用权限设置错误,将本应该只有合约本身调用的函数,设置成了任何人都可以调用。而当 Bancor Network 拥有用户的授权额度时,任何人都可以通过调用 safeTransferFrom 函数,以 Bancor Network 的身份对用户的资金进行代理转账。

针对该漏洞,有两点值得我们进行深入分析:

1. 为什么 Bancor Network 合约的 safeTransferFrom 函数会将权限设置成 public。 

2. Bancor Network 合约的主要功能是代币转换,并非一个钱包,为什么用户会有未使用的授权。

对于第一个问题,我们追踪了 safeTransferFrom 函数的调用情况,发现 safeTransferFrom 函数只在 handleSourceToken 函数中被调用,用于将用户的代币转移到本合约中。handleSourceToken 函数源码如下图所示:

 

Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

既然只是在 handleSourceToken 函数中调用,那么显然是没有必要设置成 public 权限,且根据业务来看,Bancor Network 的主要作用是用于代币交换,并不需要用户主动调用 safeTransferFrom,也就没有必要将 safetransferFrom 设置为 public 权限。于是我们对比了合约中其他的几个函数,这几个函数均被设置成了 public 权限。如下图所示:

Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

由此,针对第一个问题,我们推测将这些函数设置为 public 权限可能是因为合约开发人员的疏忽。而目前来看(2020-06-19),Bancor Network 团队新部署的合约也验证了这个推测。根据链上代码显示,官方部署的新合约已经将相关函数权限全部进行了更改(虽然其他的函数与此事件无关)。具体代码如下图所示:

Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

针对第二个问题,我们跟踪了漏洞爆出后被转移资金的地址,发现这些地址在对 Bancor Network 授权额度时,往往超过了所需要兑换代币的数量,且在兑换完成后,并没有收回额度。如下图所示:

Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

「0x624f」开头的地址对 Bancor Network 合约授权了 900000000000000 个 ONG 代币,此额度已经超过了 ONG 的发行量,相当于将「0x624f」所拥有的 ONG 代币全部授权给 Bancor Network 合约。而跟踪「0x624f」开头地址的交易我们发现,在进行完代币兑换后,未使用完所有授权额度,但并未将授权额度收回。

综上所述,我们推测可能是用户考虑到要随时使用,为了方便,一次性将所有代币都授权给了 Bancor Network 合约。也可能是 Bancor Network 的前端对授权金额设定了默认值。但这种行为存在巨大的风险,一旦智能合约爆发漏洞,资金极易被攻击者窃取。而在对后续新的 Bancor Network 合约进行分析时发现,Bancor Network 团队和用户似乎也意识到了此问题存在的巨大风险,并做出了相应的安全防护。如下图九、十为用户对新合约的授权情况,对比两笔线上交易不难看出,两次授权的时间间隔很短,当用户成功兑换完代币后,剩余授权即被收回。

Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

Bancor安全事件分析:简单漏洞引发50万美元资产转移,代码审计或存问题

三、结语

Bancor Network 本次爆出的漏洞,是一个较为简单的漏洞,此类漏洞在代码审计过程中十分容易被发现,但此次漏洞的影响却很大,上线仅两天,涉及的资金就已经超过 50w 美元。幸而 Bancor Network 团队及时发现并修复了漏洞,否则后果不堪设想。成都链安-安全研究团队在此提醒各大智能合约运营商,因区块链合约部署后不可更改的特性,对比传统软件,上线前做好充分的代码审计十分重要,此次事件虽未造成太大的经济损失,但势必会让用户对 Bancor Network 团队产品的安全性产生质疑。

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

声明:链世界登载此文仅出于分享区块链知识,并不意味着赞同其观点或证实其描述。文章内容仅供参考,不构成投资建议。投资者据此操作,风险自担。此文如侵犯到您的合法权益,请联系我们kefu@lianshijie.com

参与讨论 (0 人参与讨论)

相关推荐

PeckShield:6月共发生安全事件20起,DeFi安全问题再次凸显

PeckShield:6月共发生安全事件20起,DeFi安全问题再次凸显

PeckShield 在此建议,DeFi 项目方在上线之前,应当尽可能寻找对 DeFi 各环节产品设计有深入研究的团队做一次完整的安全审计,以避免潜在存在的安全隐患。

PeckShield:6月共发生安全事件20起,DeFi安全问题再次凸显

4)针对2起异常天价以太坊手续费转账行为,PeckShield 安全公司研究人员认为,这可能是来自韩国的山寨交易所 GoodCycle 遭到了黑客勒索攻击。

开源项目安全性成难题,2019 年热门开源项目中的漏洞同比增加了一倍以上

开源项目安全性成难题,2019 年热门开源项目中的漏洞同比增加了一倍以上

报告结果表明,这些开源软件中的总漏洞数在 2019 年增加了一倍以上,从 2018 年的 421 个增长到了去年的 968 个。

以太坊智能钱包Argent被发现存在高危漏洞,至少329个账户存在风险

律动BlockBeats消息,安全审计公司OpenZeppelin在近日发布的一份博客文章中称在以太坊智能手机钱包 Argent 中发现了一个「高度严重」的漏洞,这个漏洞可以让黑客从没有启用特定安全功能的钱包中窃取资金。

漏洞分析 | CORS-anywhere :第三方软件配置错误的危险

对于此区块链浏览器,CertiK技术团队发现它使用名为“CORS-anywhere”的类似代理工具作为处理CORS标头的解决方案。因此团队就此对“CORS-anywhere”展开研究。利用SSRF漏洞如上所述,CORS-anywhere可被用于执行SSRF攻击

中信银行打造“区块链”信用证结算!

中信银行打造“区块链”信用证结算!

科技不会改变金融的实质,但却能让金融服务更高效,能让资金供、需方信息不对称的问题更好地解决。近期,中信银行首个区块链项目——基于区块链的国内信用证信息传输系统(简称BCLC)(一期)成功上线,这是国内银行业第一次将区块链技术应用于信用证结算领域。 据中信银行国际业务部总经理助理张栩青介绍,将现在流行的区块链技术应用在国内信用证中,改变了银行传统信用证业务模式,信用证的开立、通知、交单、承兑报文

中国信息技术部门成立区块链研究实验室

中国信息技术部门成立区块链研究实验室

暴走时评:本月初,中国政府对国内的ICO和数字货币交易所的打击在世界范围内引起了强大反响,但政府已经多次声明不会将区块链与数字货币划等号,依然非常重视区块链技术在中国的发展。鉴于中国工业和信息化部成立了一个专门研究区块链的实验室,这一论调也得到了进一步的证实。 虽然中国政府最近在大力打击比特币交易所和ICO,但仍然致力于开发区块链在其他领域的潜力。 据财新网报道,中国工业和信息化部已经成立了一

 分布式账本中的生命科学

分布式账本中的生命科学

生物科学是医学领域涉及遗传研究,疾病预防和生活方式治疗(lifestyle treatments)的学科。它已经存在了很长时间,但区块链技术的基础设施应用给该学科提供了重大进步的可能性。 根据Pistoia Alliance进行的2016年6月份高级制药和生命科学领袖调查,83%的受访者表示,他们预计在五年内将全面采用区块链技术。 Pistoia Alliance是一个全球性的非营利组织,致

麦妖榜
更新日期 2019-09-03
排名用户贡献值
1牛市来了30910
2BitettFan24187
3等待的宿命23810
4区块大康20369
5六叶树20310
6linjm122719429
7天下无双16192
8lizhen00215280
9让时间淡忘14586
10yelanyi050511349
返回顶部 ↑