“伪造转账通知”漏洞细节披露:EOSBet遭黑客攻击损失近14万EOS始末

PeckShield
PeckShield 机构得得号

Oct 26, 2018 PeckShield是面向全球的业内顶尖区块链安全团队。

摘要: 针对此攻击事件,最初网上有声音认定其为“溢出攻击”,进一步分析发现,该攻击行为其实是黑客利用EOSBet合约在校验收款方时存在的漏洞——伪造转账通知。

10月15日午间,据IMEOS报道,知名EOS公链博彩游戏平台EOSBet遭遇了恶意攻击,损失了巨额EOS,初步分析为黑客账号ilovedice123对EOSBet合约eosbetdice11进行攻击。

针对此攻击事件,最初网上有声音认定其为“溢出攻击”,然而PeckShield安全人员进一步分析发现,该攻击行为其实是黑客利用EOSBet合约在校验收款方时存在的漏洞——伪造转账通知。

“伪造转账通知”攻击原理

正常的EOS转账,是发送者账号A通过系统合约eosio.token,将EOS发送给接受者账号B,然后A和B都能收到转账事件的通知,如果在账号B上部署合约的话,则可以转发收到的转账通知给其他账号。

如下图所示:在此次攻击事件中,攻击者使用账号ilovedice123(A)给帐号whoiswinner1(B)转账,正常的转账应该是系统合约eosio.token在收到“transfer”之后,账号A和帐号B都能收到转账通知,然而攻击者账号A一开始便在账号B上部署了合约并增加对eosbetdice11(EOSBet 合约)的转账通知“require_recipient(N(eosbetdice11))”,这样EOSBet 也会收到A给B的转账通知。

(图示:“伪造通知攻击”原理 )

糟糕的是,EOSBet合约在收到转账通知后,并没有校验transfer中的to是否为_self,就将其错误判断为一笔给自己的正常转账,然后根据平台游戏规则给了账号A发送相应的EOS奖励,实际上,账号A和账号B都是黑客自己的账号,黑客正是使用自己的两个不同账号互相转账,以“零成本”骗取了平台巨额奖励。 

持续数日不同账号的相同攻击

PeckShield安全人员监测发现,早在10月10日,账号“iwasagoodboy”就采用了此种攻击方式进行套利,当天通过67次伪造转账通知行为共获利345.5个EOS。而追踪发现,在10日与15日期间,共计有“iwasagoodboy”  “hereisstocks  ”“iwanttoloveu” “ilovedice123”、” iamthewinnee”五个账号采用此种方式套利,其中最大的一次攻击行为正是10月15日,由账号ilovedice123所发起的。通过该轮攻击,黑客共计获利138,724.325个EOS,至此该攻击行为被媒体报道,由安全公司介入分析,开始浮出水面。

攻击为同一ID所为

据PeckShield态势感知平台监测发现,10月15日下午13:27到13:38之间,账号ilovedice123总共发起了10余笔大额转账指向交易所平台,其中72,150 EOS流入了Bitfinex,65,100 EOS流入了Poloniex。

通过继续追踪几个攻击者资金流向分析,PeckShield安全人员发现,以上五个不同账号的获利资金经过多次转账后最终在向Bitfinex和Poloniex交易所发起转账时,都流入了所在交易所的同一账号ID,给交易所Bitfinex(bitfinexdep1)充值的ID为0aa03fbec9a3b2bec49e97575b506644,Poloniex(poloniexeos1)充值ID为9bb2aa5fc22a1bb2,因此判断,采用“伪造转账通知“实施攻击的不同账号为同一黑客所为,黑客先是进行了多笔小额攻击尝试,最后于10月15日发起了大额攻击。

汇总这些账号的攻击转账详情,我们最终统计得出,黑客共计获利145,321.0712 EOS,根据EOS当前行情价格37元估算,EOSBet平台此次损失额超500万元。

(作者:PeckShield,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)

链得得仅提供相关信息展示,不构成任何投资建议
本文系作者 PeckShield 授权链得得发表,并经链得得编辑,转载请注明出处、作者和本文链接

更多精彩内容,关注链得得微信号(ID:ChainDD),或者下载链得得App

分享到:

相关推荐

    评论(0

    Oh! no

    您是否确认要删除该条评论吗?

    分享到微信