昨天中午,黑客利用以太坊ERC-20智能合约中的BatchOverFlow漏洞中的数据溢出漏洞,攻击了蔡文胜旗下美图公司旗下MeChain BEC的智能合约,成功将巨额BEC代币转移给两人地址。导致BEC在市场上大量被抛售,数字货币价值几乎归零,给BEC市场交易带来毁灭性打击。
区块链安全公司PeckShield发现,除BEC Token外,超过12个项目Token的智能合约中存在BatchOverFlow整数溢出漏洞。黑客可以利用该漏洞进行转账,生成“不存在”的虚拟货币并进行交易。交易有利可图。
被黑的BEC交易量在几个小时内形成价格“瀑布”,币值归零。目前,BEC官方团队已暂停所有交易和转账,并将Okex交易所的交易回滚至黑客存币之前。
黑客绕过验证后生成“李鬼”币
PeckShield团队今天凌晨发布安全报告,提到黑客采用野外手段抓取以太坊ERC-20智能合约中的“BatchOverFlow”整数溢出漏洞进行攻击。
利用该漏洞,黑客可以通过转账的方式生成大量合约中不存在的Token,并将其转入正常账户。账户中收到的Token可以正常转入交易所进行交易,与真实的Token不同。不同之处。
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 个零)。
通过向batchTranser()注入两个_receiver,加上这个非常大的_value,我们可以溢出数量并将其数量更改为0。通过将数量恢复为0,攻击者可以绕过第258到259行的合理性检查,使得第261 行的差异不再相关。
最后,一个非常有趣的结果出现了:从第262行到第265行可以看到,两个接收者的余额中都添加了一个超级大的_value,而这一切都不会花费攻击者钱包里的一毛钱!
然后,PeckShield 团队使用自动化系统扫描以太坊智能合约并对其进行分析。发现超过12个ERC-20智能合约存在BatchOverFlow安全风险。
为了验证该漏洞的真实性,PeckShield团队对其中一份智能合约进行了类似的攻击(该合约中的代币没有在任何交易所交易,因此不会发生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,0 00,000,000,000,000 个代币CBTB(你没看错,就是这么多0)。
币总数已超过合约规定的20,000 CBTB。
CryptoBots这款游戏目前正在以太坊上进行交易,但查看数据后发现,该游戏的实际玩家数量并不高,只有几十人在玩。
PeckShield创始人江旭贤教授表示:“理论上,你可以购买这款游戏中的所有道具。”
除了BEC和CryptoBots(CBTB)这两个智能合约外,还有十多个智能合约存在同样的漏洞,其中包括已经在交易所交易的货币。
出于安全考虑,PeckShield 已联系相关项目团队,暂时无法透露这些项目的名称。
区块链安全只靠回滚吗?
BEC智能合约出现该漏洞后,2小时后黑客开始向OKEx地址存币进行交易。由于市场上出现大量来源不明的Token,市场出现恐慌,OKEx交易所持币者开始抛售BEC。 Token方面,BEC价格持续下跌,币值几乎归零。
下图中,我们可以看到,黑客首先暂定将100万个BEC Token转移到OKEx。黑客发现转账成功并出售后,又两次转账1000万个BEC Token,发现两次都成功。1亿个BEC代币被转移。
但在1亿个BEC代币转入后,OKEx发现了问题并停止了BEC交易。
根据转账记录,黑客预计至少出售了1100万个BEC,相当于昨天的售价约1887万元。
下午4点12分,OKEx发布声明暂停相关交易。 BEC团队还宣布将配合OKEx交易所回滚黑客转移代币前的数据,以保护投资者权益。
PeckShield 团队认为,由于以太坊区块链上所谓“代码就是一切”的原则和精神,目前还没有有效的安全防护方法来解决这些问题,并且由于Token 交易背后涉及巨大的利益,无法解决这些问题。用于多个交换机同时执行保护。
由于中心化交易所只对Token进行记账交易,项目团队与交易所合作后的回滚可以在一定程度上保护投资者的利益。但如果在去中心化交易所进行交易,投资者就会蒙受损失。这将是不可逆转的。同时,黑客还可以利用交易所响应的时间差,在多个交易所实现套利。
知乎爬虫作者认为该漏洞很容易解决,只需要对计算结果进行safeMath安全验证即可。同时他表示,区块链智能合约代码需要经过测试和审查。如有必要,可以聘请专门从事代码审计的公司进行。测试。
OKEx之前回滚了期货交易,OKEx之后又回滚了BEC交易。为什么区块链上的安全问题总是要通过回滚来解决?如果该漏洞不能从根本上得到解决,遭受损失的不仅是投资者,虚拟货币生态系统的所有参与者都将遭受巨大损失。