“伪造转账通知”漏洞细节披露:EOSBet遭黑客攻击损失近14万EOS始末
摘要: 针对此攻击事件,最初网上有声音认定其为“溢出攻击”,进一步分析发现,该攻击行为其实是黑客利用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,内容来自链得得内容开放平台“得得号”;本文仅代表作者观点,不代表链得得官方立场)
评论(0)
Oh! no
您是否确认要删除该条评论吗?