BEC代币被黑,黑客输入一串数字就套利千万,说好的安全呢?

BEC代币被黑,黑客输入一串数字就套利千万,说好的安全呢?-区块链观察

昨日中午,黑客利用以太坊 ERC-20 智能合约中 BatchOverFlow 漏洞中数据溢出的漏洞攻击与美图合作的公司美链 BEC 的智能合约,成功地向两个地址转出了天量级别的 BEC 代币,导致市场上海量 BEC 被抛售,该数字货币价值几近归零,给 BEC 市场交易带来了毁灭性打击。

区块链安全公司 PeckShield 目前已经发现除了 BEC Token 之外,还有超过 12 多个项目 Token 的智能合约中存在 BatchOverFlow 整数溢出漏洞,黑客可以利用这一漏洞转账生成“不存在”的虚拟货币并进行交易获利。

被黑客攻击的 BEC 交易量数小时内形成价格“瀑布”,币值归零。目前 BEC 官方团队已经暂停一切交易和转账,将对 Okex 交易所的交易回滚到黑客充币之前。

黑客绕过验证后生成“李鬼”币

PeckShield 团队今日凌晨发布安全报告,提到黑客利用 in-the-wild 手段抓取以太坊 ERC-20 智能合约中的“BatchOverFlow”这个整数溢出漏洞来进行攻击。

利用这个漏洞,黑客可以通过转账的手段生成合约中不存在的、巨量的 Token 并将其转入正常账户,账户中收到的 Token 可以正常地转入交易所进行交易,与真的 Token 无差别。

PeckShield 的安全预警报告中提到了该漏洞的具体细节,这个漏洞出现在 BEC 智能合约的 batchTransfer 函数当中,代码如下图所示。

BEC代币被黑,黑客输入一串数字就套利千万,说好的安全呢?-区块链观察

大家请注意第 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,而这一切都不会花费攻击者钱包里哪怕一毛钱。

随后 PeckShield 团队利用自动化系统扫遍了以太坊智能合约并对它们进行分析。结果发现,有超过 12 个 ERC-20 智能合约都存在 BatchOverFlow 安全隐患。

为了验证该漏洞存在的真实性,PeckShield 团队对其中一个智能协议进行了相似的攻击(该合约中的代币并不在任何交易所交易,所以不会出现 BEC 的惨剧)

BEC代币被黑,黑客输入一串数字就套利千万,说好的安全呢?-区块链观察

PeckShield 团队还对一个未在交易所上线的以太坊宠物游戏 CryptoBots 进行了 BatchOverFlow 安全性攻击,并成功地在该协议上“生成”了 57,896,044,618,658,100,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000,000 枚代币 CBTB(你没看错,就是这么多 0 )

总币数已经超过合约规定的 2 万枚 CBTB。

发表评论

坐等沙发
相关文章
区块链和代币入门:为什么要使用区块链而非数据库?
区块链和代币入门:为什么要使用区块链…
你持有的到底是优质币,还是空气币,代码告诉你!
你持有的到底是优质币,还是空气币,代…
区块链的核心技术:共识机制&智能合约
区块链的核心技术:共识机制&智能…
干货:详解智能合约底层技术原理
干货:详解智能合约底层技术原理
如何在以太坊上面发行自己的代币
如何在以太坊上面发行自己的代币
看「智能合约」之父 Nick Szabo 如何定义「智能合约」
看「智能合约」之父 Nick Szabo 如何定…