昨日部分币所发出公告,暂停基于以太坊ERC-20发行的Token的充值功能。
据了解好像是SMT的Token的问题,暂时没有上SMT的交易所没有问题。
关于漏洞的详尽解释:
在BEC漏洞事件后,PeckShield团队随后发布安全报告,提到黑客利用in-the-wild手段抓取以太坊ERC-20 智能合约中的「BatchOverFlow」这个整数溢出漏洞来进行攻击。
PeckShield 的安全预警报告中提到了该漏洞的具体细节,这个漏洞出现在 BEC 智能合约的batchTransfer 函数当中,代码如下图所示。
大家请注意第 257 行,cnt 和 _value 的计算结果生成了局部变量。第二个参数,即 _value,,可以是一个任意的 256 字节整数,就比如是:0x8000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000,0000(63 个 0)。
通过将两个 _receivers 注入到 batchTranser(),再加上这个极其大的 _value,我们就能使得量溢出,将其 amount 的量变成 0。通过将量回归到 0,攻击者就可以绕过 258 行到 259 行的合理性检测,使得 261 行的差值变得不再相关。
最后,出现了一个非常有趣的结果:你们可以看 262 行到 265 行,两个 receriver 的余额上增加了超级大的 _value,而这一切都不会花费攻击者钱包里哪怕一毛钱!
综合起来就是,黑客利用以太坊ERC-20智能合约中BatchOverFlow漏洞中的数据溢出的漏洞,攻击了美链BEC的智能合约,成功地向两个地址转出了天量级别的BEC代币。
据了解,黑客可以通过转账的手段生成合约中不存在的、巨量的Token并将其转入正常账户,并且账户中收到的Token可以正常地转入交易所进行交易,与真的Token无差别。
原文链接:
“https://www.walian.cn/news/1446.html”