黑客又双叒叕从EOS提款了!这项逆天技能究竟是怎么发动的?

昨日凌晨,安全公司PeckShield的安全盾风控平台DAppShield监测到,EOS竞猜类游戏Crazy Dice遭到了黑客攻击,损失了上千枚EOS。对于Crazy Dice被攻击的新闻,似乎没有人关心了,因为近几个月以来,EOS的DApp频繁遭黑客攻击,大家已经见怪不怪了,甚至有人戏称:EOS已经彻底成为了黑客的提款机。

肖恩注意到,跟EOS.Win、FarmEOS、影骰、LuckBet、GameBet、EOSDice、STACK DICE、等多款游戏一样,黑客采用的都是交易阻塞攻击。那么,攻击者是如何发动交易阻塞攻击的呢?

1、 利用随机数算法漏洞。

Crazy Dice、影骰、EOS.Win等被攻击的DApp都是竞猜类游戏,游戏者玩这类游戏,需要猜一个数值,如果猜的数值跟游戏“随机”产生的数值一样,那么就能中奖。比如,我们玩骰子游戏,我们先猜一个点数,如果摇出的点数跟我们猜的点数一样,那么就能中奖。

我们现实中摇骰子,是真的在摇,摇出的点数确实是随机的,而线上的摇骰子游戏,并不是真的在摇,它需要先设计一个随机数,通过随机数来生成摇出的点数。既然是事先设计的,那么这组随机数就不能称为真正的随机数,而是伪随机数,它们可能存在着某种规律。黑客通过特殊手段,破解了随机数算法,进而能够预测出开奖结果。

破解随机数算法,是交易阻塞攻击的重要一环。

2、交易阻塞攻击的原理

交易阻塞攻击是指攻击者阻拦其他正常的交易被打包确认,而自己的交易能够正常打包确认,从而实现最终中奖的目的。

具体实现原理是这样的:在EOS中,一般的交易请求会先发送给 API节点,API节点处理后,再由超级节点进行打包出块。不过,EOS系统允许在正在执行的交易里发送延迟交易(指定未来某个时间执行的交易),这样可以绕过API节点的验证,直接加入到等待超级节点验证的队列中去。

攻击者在下注时,会发起大量的延迟交易,这些延迟交易会直接加入到等待超级节点验证的队列中,也就是说这些延迟交易会在开奖交易之前执行。同时,攻击者通过破解随机数算法预测开奖结果,如果中奖就取消其他延迟交易,让开奖交易正常被执行,也就是让自己中奖。如果不中奖,就不取消其他延迟交易,让超级节点继续执行其他延迟交易,从而将游戏的开奖交易“挤”到下一个区块中,只要延迟交易足够多,攻击者迟早会中奖。

举个通俗的例子来说明。某超市为吸引大家去消费,举办了一个摇骰子抽奖活动,于是大家在超市消费后都去排队参加。假如规定,举办方每10秒会摇出一个点数,摇中点数6就可以获得奖品,同时规定,每一张消费单可以参与一次。肖恩去超市购买了大量1元的商品,结账时分批结算,获取了大量消费单。轮到肖恩抽奖时,如果刚好摇到点数6,则拿奖走人,如果不是点数6,就继续拿消费单抽奖,这会让排在肖恩后面的人没有参与抽奖的机会,直到肖恩中奖。

值得一提的是,交易阻塞攻击并不只是在EOS上发生过,以太坊的DApp同样遭受过这类攻击,去年异常火爆的以太坊游戏Fomo3D ,第一轮、第二轮的奖金都是黑客通过交易阻塞攻击拿走的。


分享到:


相關文章: