暂停交易?ERC20合约整数溢出安全漏洞案例技术分析一

抱应优底
抱应优底 热门 2018-05-15 11:28
6 8649
作者:吴寿鹤
著权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
吴寿鹤,《区块链开发实战——以太坊关键技术与案例分析》的第一作者,《区块链开发实战——Hyperledger Fabric关键技术与案例分析》联合作者,IONChain 离子链 首席架构师,hyperLedger核心项目开发人员,区块链技术社区-区块链兄弟联合创始人。github: https://github.com/gcc2ge
来源:区块链兄弟,国内第一家专注区块链技术分享实战的公益性媒体社区
<b>文章发布:请标题作者和来源,版权归区块链兄弟所有
<p><b>
<b>事件回顾:
<p>4月25日早间,火币Pro公告,SMT项目方反馈今日凌晨发现其交易存在异常问题,经初步排查,SMT的以太坊智能合约存在漏洞。火币Pro也同期检测到TXID为https://etherscan.io/tx/0x0775e55c402281e8ff24cf37d6f2079bf2a768cf7254593287b5f8a0f621fb83的异常。受此影响,火币Pro现决定暂停所有币种的充提币业务,随后,火币Pro又发布公告称暂停SMT/USDT、SMT/BTC和SMT/ETH的交易。此外,OKEx,gate.io等交易平台也已经暂停了SMT的充提和交易。截止暂停交易,SMT在火币Pro的价格下跌近20%。
该漏洞代理的直接经济损失高达上亿元人民币,间接产生的负面影响目前无法估量。这到底是怎样一个漏洞呢?下面将详细分析该漏洞的产生和解决方案。
<p><b>
<b>漏洞分析:
SMT与前几天爆出的美图BEC代币都出现类似的安全漏洞—整数溢出,那么什么是整数溢出,整数溢出出现的原因是什么,怎样才能避免整数溢出呢?接下来我们带着这些问题来看下面的内容。
<b>整数溢出
整数溢出分向上溢出和向下溢出,有关智能合约安全的其他关键点作者在《区块链开发实战——以太坊关键技术与案例分析》中有详细介绍,以下是截取本书中关于整数溢出的部分,通过下面文字的阅读大家就可以对:什么是整数溢出,整数溢出出现的原因是什么,怎样才能避免整数溢出呢?这三个问题有个答案了。

<p>以下文字截取于《区块链开发实战——以太坊关键技术与案例分析》
有了上面的理论基础,我们在看一个转账的例子,看在我们的合约中应该如何避免不安全的代码出现:
我们在做整数运算的时候要时刻注意上溢,下溢检查,尤其对于较小数字的类型比如uint8、uint16、uint24更加要小心:它们更加容易达到最大值,最小值。

<b>案例分析:
<b>SMT<b>合约中的整数安全问题简析
SMT的合约地址是:0x55F93985431Fc9304077687a35A1BA103dC1e081,合约代码可以访问etherscan的如下网址进行查看
https://etherscan.io/address/0x55f93985431fc9304077687a35a1ba103dc1e081#code
SMT合约有问题的代码存在于transferProxy()函数,代码如下:
其中的问题分析如下:
<b>作者修改后的代码如下:
<b>攻击者发送的交易:
以下是攻击者恶意发送的转账交易地地址:https://etherscan.io/tx/0x1abab4c8db9a30e703114528e31dee129a3a758f7f8abc3b6494aad3d304e43f
(黑客攻击交易日志截图)
<b>BEC<b>合约中的整数安全问题简析
BEC的合约地址是0xC5d105E63711398aF9bbff092d4B6769C82F793D,合约代码可以访问etherscan的如下网址进行查看https://etherscan.io/address/0xc5d105e63711398af9bbff092d4b6769c82f793d#code
BEC合约有问题的代码存在于batchTransfer()函数,代码如下:
<b>其中问题代码分析如下:
<b>攻击者发送的交易:
以下是攻击者恶意发送的转账交易:
https://etherscan.io/tx/0xad89ff16fd1ebe3a0a7cf4ed282302c06626c1af33221ebe0d3a470aba4a660f。
<p><b>合约整数漏洞事件总结
<p>从上面的分析中,大家可以看出针对SMT和BEC的合约恶意攻击都是通过恶意的整数溢出来绕过条件检查。目前以太坊上运行着上千种合约,这上千种合约中可能也存在类似的安全隐患,所以作为合约的开发人员需要投入更多的精力来确保合约的安全性。
<p>
下篇我们将详细的介绍如何正确保合约的安全,敬请期待。
6条回应 最新 最早
吴天爽
沙发# 吴天爽 2018-05-15 11:55
分析独特,有见地,比特币的命运所谓“成也资本,败也资本”…
诗惠儿
板凳# 诗惠儿 2018-05-15 12:25
区块链广泛应用于现实场景当中,是必然趋势。
刘楠楠
地板# 刘楠楠 2018-05-15 12:43
区块链是从数字货币诞生的就可以了,数字货币,只是区块链的其中一项应用。
白国豪
4楼# 白国豪 2018-05-15 12:50
最近老跟朋友聊到熵,聊量子,聊宇宙…区块链从物理视角去看,是进程的必然,只是人们现行的认知还停留在“低维”,我们都在不断的探求高纬度,今天的区块链在以明天的高维度的方式解决今天的问题,而明天呢?浩瀚神秘的宇宙似乎一直都是一个有主观意识的庞大个体,不是我们能知道什么,而是他愿意让我们知道什么。
伊静
5楼# 伊静 2018-05-15 13:23
矿工是不会亏本的,因为有币不断产出,你在10万美金处拿钱买币,矿工仍然在本没怎么变的成本上产币。
爱看四幕戏~
6楼# 爱看四幕戏~ 2018-05-15 14:19
多家区块链实验室和专业投资基金纷纷成立。
游客
登录后才可以回帖,登录 或者 注册