区块链资讯
数字货币行情

狸猫换太子,一行代码的疏忽损失530万元的EOS!

EOS主网上线之后,21个超级节点的竞选拉票弄得风风火火,现在投资者都期待EOS上DApp的爆发,EOSBet是建立在EOS上的一个掷骰子的DApp,就是大家常说的菠菜游戏。上线两个月,盈利近百万的EOSBet于10月14日因营销活动推向了一个小高潮,日活突破千人, 稳坐EOS DApp当日榜首。

何为乐极生悲?才高兴了一天的EOSBet, 就因代码漏洞,再次被黑客攻击了,这次攻击被黑客提走14万个EOS, EOS现价约为5.48USD(转换成人民币大概在38元),14万个EOS,即人民币530万!

而且这不是EOSBet第一次或者第二次被攻击,而是上线以来第三次被攻击了!

3kemao.com区块链数字货币资讯
EOSBet可能是对自己的代码不自信,或者是为了防止被攻击,或是有什么隐藏的后门,EOSBet 项目代码目前尚未开源。可即使代码未开源,EOSBet还是被黑客盯上了,难逃再三被黑客攻击的命运。

今天从技术角度来分析EOSBet为何屡次被黑客攻击?

首先来复盘EOSBet的三次被黑客攻击。

1
黑客对EOSBet的第一次攻击:

黑客对EOSBet的第一次攻击是在游戏上线第二天,黑客利用EOS网络本身缺陷,吸取了很多内存。当日团队紧急作修复, 同时EOSIO也在修复该漏洞。

2

黑客对EOSBet的第二次攻击:

上个月9月14日,EOS上多个菠菜类DApp接连被黑客攻击,累计被薅走数百万。EOSBet是那次攻击中损失最惨重的。

9月14日上午11点左右,EOS账号aabbccddeefg 在未进行投注的情况下,却以中奖的方式, 在20多分钟的时间内,赢得了4.2万个EOS(总价值约为150万人民币)及投注产生的1千多个平台代币BET。

据分析,EOSBet被攻击,是因为代码中并没有检查收到的EOS是不是eosio.token产生的EOS,黑客通过自己创建的名字同为EOS的“假币”,套取了真的EOS。

3

黑客对EOSBet的第三次攻击:

在两次被攻击后,EOSBet更加注重安全审计。EOSBet将奖池的30万EOS转入冷钱包,同时将每把游戏上限由1%提升到4%,保持最大押注额不变,以保障大户的游戏体验。EOSBet表示会尽最大努力,保障最基本也是最重要的安全问题。

可惜,第三次攻击还是发生了,而且损失金额更大! 就在前日,EOSBet再次被黑客攻击,直接损失了14万个EOS!!!

EOSBet这次的攻击是因为下面的这段代码:

__attribute__((eosio_action))

void transfer(account_name from, account_name to, asset quantity, string memo){

require_recipient(RECIPIENT_CONTRACT);

}

主要问题是出在没有判断用户的转账是转给了其他账户,还是转给了EOSBet的合约。

 

3kemao.com区块链数字货币资讯
以上图片引用自慢雾科技文章<EOS DApp 充值“假通知”漏洞分析>

简单来说,就是黑客自己创建了两个账户,攻击账户A和无关账户B,而B是一个合约账户,每次转账成功之后,B账户就会自动发个通知给EOSBet的合约说转账收到了。

EOSBet的合约收到这个通知后,没有检查自己是否真的收到了EOS,误把账户A对账户B的转账判断成了账户A对EOSBet合约账户的转账。也就是把账户A当成了EOSBet下注了的玩家,给玩家开奖。

黑客于是就用这个漏洞,空手套白狼,不断开奖,给自己开了14万EOS的奖!

那么这个漏洞该如何修复呢?其实很简单,只需要加一句判断,if (to != _self) return ;来判断传来的转账通知是不是转给自己的。

 

3kemao.com区块链数字货币资讯
于是, 就因为缺少了一句判断,EOSBet这次被黑客提走14万EOS,合计人民币530万!!!

赞(0) 打赏

华为系团队打造,不花一分钱,每天躺赚200元
未经允许不得转载:三氪猫数字货币媒体 » 狸猫换太子,一行代码的疏忽损失530万元的EOS!

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏