EOS 区块链在主网上线后一跃成为了活跃度排名第二的公链(blocktivity.info),据统计,EOS 上线至今的 DApp 交易额达 140 亿流水,新进场用户携大量资金助推了 DApp 的大火,但随之而来也暴露出了 EOS 竞猜类智能合约安全的严峻问题。经观察发现,最近发生攻击事件的频次越来越密集,并且同一个安全问题多次反复地出现。因此,在 EOS 主网账户数突破 50 万的今天,我们为大家盘点了 EOS 主网上线以来较为频繁和严重的安全漏洞,希望能够方便 EOS 社区了解和预防。 Part 1 EOS Fomo3D 狼人杀 背景 EOS Fomo3D 狼人杀是与以太坊上的 Fomo3D 相似的一款游戏。 攻击者账号:eosfomoplay1 攻击手法:游戏合约遭受溢出攻击 损失(EOS):60,686 始末 2018 年 7 月 25 日,慢雾安全团队发出警告,EOS Fomo3D 游戏合约遭受溢出攻击,资金池变成负数。慢雾安全团队由此呼吁 EOS 智能合约安全需引起重视。于是狼人团队做了应急处置并上线了新合约之后,发生第二次攻击,被攻击者(eosfomoplay1)拿走 60,686 个 EOS。 8 月 7 日,EOS 核心仲裁论坛( ECAF )对该次黑客行为仲裁后签发仲裁令,首先紧急冻结黑客的 EOS Part 2 EOSBet 背景 EOSBet 是一款基于 EOS 开发并遭受过 3 次攻击的掷骰子竞猜游戏。 攻击者账号:aabbccddeefg; ilovedice123; whoiswinner1 攻击手法:RAM 被恶意合约吞噬、游戏方未检验 transfer action 的调用方导致被假币套取真币、「假通知」漏洞 损失(EOS):未披露+44,427.4302 + 0 (145321 EOS 被追回) 始末 2018 年 8 月 26 日,IMEOS 观察到 EOSBet 项目方在主网电报群中反应其账户的 RAM 被一个合约恶意吞噬,随后游戏方宣布 EOSBet 暂时下架以防进一步的攻击。8 月 27 日,游戏方在 Medium 发布该漏洞已暂时修复的声明,游戏网站重新开启。发生此事件之后,关于恶意合约吞噬 RAM 事件在 Github 上被提交多个 issue 和建议,最终这个问题得以解决。 EOSBet 稍稍松了一口气并立下「要在 24 小时内达到 210 万交易笔数成为 EOS 上交易数最多的 DApp」的 Flag(如下图) 之后,迎来了下一波猛烈的黑客攻击(如下下图)。 9 月 14 日上午 11 时左右,黑客利用在 EOS 体系里发布的名为「EOS」的代币在 EOSBet 平台进行投注,而项目方的代码中没有检查收到的 EOS 是否是 eosio.token 产生的正经 EOS。于是账户 aabbccddeefg 在实际上没有成本的情况下,在短短 15 分钟之内造成了项目方损失了 44,427.4302 EOS 和投注产生的 1,170.0321 BET。随后这些 EOS 被转移到了交易所。 9 月 17 日,EOSBet 宣布将存储在热钱包的 75%(30 万个 EOS)的资金(bankroll)转移至冷钱钱包,从而提高资金安全。在未来的数周里,EOSBet 也执行一系列的安全更新。然后 ...... 10 月 15 日,EOSBet 再次遭到黑客攻击,资金被盗至 Bitfinex。黑客账号 ilovedice123 利用了「假通知」漏洞,构造了 Memo:92-chickndinner-uHruy5esdfuh3HC8,对 EOSBet 合约 eosbetdice11 进行攻击。 据慢雾安全团队的攻击流程图(如下)显示,本次攻击中黑客创建了两个账户:攻击账户 ilovedice123 和攻击合约 whoiswinner1。游戏合约在 apply 里没有校验 transfer action 的调用方必须是 eosio.token 或者是自己的游戏代币合约。攻击账户 ilovedice123 向攻击合约 whoiswinner1 转账后,EOSBet 合约的 transfer 函数被成功调用,误将攻击账户 ilovedice123 当成下注玩家,被套走了 142,845 个 EOS。 对于这次攻击,慢雾安全团队发出了预警:EOS 游戏 DApp 在处理 transfer 通知时需要校验 transfer 中的 to 是否为 self,避免「假通知」漏洞。 据了解,项目方已经在交易所追回了本次攻击损失的 EOS。 Part 3 Luckyos 背景 Luckyos 是一个被攻击后停运至今的 EOS 游戏平台。 攻击者账号:guydgnjygige 攻击手法:随机数算法被破解 损失(EOS):未披露 始末 2018 年 8 月 27 日,Luckyos 旗下的石头剪刀布游戏随机数产生的规律被黑客破解,攻击者通过持续在指定时间出石头来赢得奖励,该办法有 38% 概率获胜。目前该游戏网站 luckyos.io 已经停运。 Part 4 EOS WIN 背景 EOS WIN 是一个开源后被攻击的 EOS 游戏平台。 攻击者账号:lockonthecha 攻击手法:随机数算法被破解 损失(EOS):2,000 + 4,000 + 20,000 始末 2018 年 9 月 2 日,EOS WIN 同样的随机数被破解,损失 2000 个 EOS (本次攻击项目方未向公众披露)。 9 月 15 日,继 EOSBet 之后,EOS WIN 也受到了「假币攻击」,黑客用不存在的「EOS」投注赢走了约 4000 个 EOS,导致 EOS WIN 暂时关闭。 11 月 11 日,EOS.WIN 将其平台 DApp 全面开源,此后慢雾安全团队观察到该游戏合约被攻击者(lockonthecha)攻破,约被盗 20000 EOS。慢雾安全团队表示发现攻击 EOSDice 和 FFGame 和 EOS.WIN 三个 DApp 的攻击者疑似同一攻击者和使用了类似的攻击手法,攻击手法目前正在进一步验证中。目前 EOS.WIN 正在修复相关合约。 Part 5 DEOS Games 背景 DEOSGames 是一个被攻击仍在运行的 EOS 游戏平台。 攻击者账号:未知 攻击手法:随机数算法被破解 损失(EOS):4,000 始末 2018 年 9 月 10 日,黑客破解了 DEOSGames 游戏平台下 Dice 的随机数算法,在不到一个小时的时间里,连续 24 次「赢得」奖金约 2.4 万美元(4,000 EOS)。 随后项目方在社交媒体上发布一份简短的声明,证实其智能合约确实遭到黑客攻击,并且在声明中将这一恶意攻击称为「良好的压力测试」。 Part 6 Happy EOS Slot 背景 Happy EOS Slot 是一个被攻击后恢复运行的 EOS 竞猜游戏(老虎机)。 攻击者账号:imeosmainnet 攻击手法:重放攻击 损失(EOS):5,000 始末 2018 年 9 月 12 日,黑客账户(imeosmainnet)通过在 transfer 方法中加入钩子开关,卡死 reveal 等动作成立重放攻击(Replay Attacks,这种攻击会不断恶意或欺诈性地重复一个有效的数据传输),导致 Happy EOS Slot 损失了 5000 个 EOS。 Part 7 FairDice 背景 Fair Dice 是 DappPub 游戏平台上的一款游戏。 攻击者账号:iloveloveeos 攻击手法:随机数算法被破解(重放攻击) 损失(EOS):4,000 始末 同在 9 月 12 日,DappPub 游戏平台上的 Fair Dice 也被同一个手法(重放攻击)攻破,造成损失 4,000 EOS。黑客账户 iloveloveeos 利用游戏的随机算法和时间相关(即不同时间获得不同游戏结果),拒绝了所有失败的开奖结果从而谋利。 iloveloveeos 在 11 月 15 日晚用同样的手法攻破了 LuckyGo。 Part 8 Newdex 背景 Newdex 是基于 EOS 的去中心化交易所。 攻击者账号:oo1122334455;dapphub12345;iambillgates 攻击手法:黑客利用假币在交易所交易换取真币 损失(EOS):11,803 始末 2018 年 9 月 14 日,在 EOSBet 爆出黑客利用假币投注赢取真币的安全漏洞后,当天下午两点,EOS 合约帐户 oo1122334455 发行了一个名为「EOS」的 token,并且将十亿假 EOS token 全额分配给 EOS 账户 dapphub12345,然后由该账号将假代币转入账户 iambillgates (实施攻击的账户)。攻击账户用小额假 EOS 验证攻击成功后,于 14:31:34 至 14:45:41 进行大额攻击,分多笔共 11800 假 EOS 挂市价单购买 BLACK、IQ、ADD,且全部成交。 Newdex 发现异常后启动了应急措施修复系统,强制下架 IPOS/EOS 交易对,15:52-16:33 期间停止运营。此次攻击造成 Newdex 用户损失 11,803 EOS,项目方表示承担所有损失。 Part 9 EOSBank(柚资银行) 背景 EOSBank(柚资银行) 是一个支持 EOS 存款和租赁服务的平台,经历过攻击后,平台暂时只继续开放了租赁 CPU 服务。 攻击者账号:fuzl4ta23d1a 攻击手法:合约账号的 owner 权限被修改 损失(EOS):18,000 始末 2018 年 10 月 5 日下午 6 时 37 分,EOSBank(柚资银行) 合约账号 eosiocpubank 被攻击者修改 owner 权限,之后被转走 18,000 EOS 到账户名为 fuzl4ta23d1a 的 EOS 账号。 随后该账号将所盗得的 EOS 转移至交易所,这笔资金现在被项目方申请冻结着。目前项目方只恢复了 CPU 租赁服务。 Part 10 World Conquest 背景 World Conquest 是一个基于 EOS 并且类似于像素大师(EOS Pixel Master)的游戏,目前游戏已停止运行。 攻击者账号:cryptoplease 攻击手法:黑客利用游戏缴税规则,拒绝后续的买家 损失(EOS):4,555 始末 2018 年 10 月 16 日,猎豹旗下第三方大数据平台 RatingToken 监测到基于 EOS 开发的 DAPP World Conquest 被黑客攻击。随后官方在其 Discord 发布公告确认被攻击的事实,黑客利用游戏缴税规则,拒绝后续的买家,导致游戏非正常结束,黑客拿走资金池中所有 EOS,最后合约中仅剩 0.0155 个 EOS。通过合约转账数据发现,被盗资金被转移至火币。 Part 11 EosRoyale 背景 EosRoyale 依然是一个基于 EOS 的游戏平台。 攻击者账号:fortopplayx1; fortopplayx2; fortopplayx3;fortopplayx4;fortopplayx5; fortopplayxx 攻击手法:随机数被破解 损失(EOS):10,800 EOS。 始末 IMEOS 在 Reddit 发现 EosRoyale 项目方发布消息称团队钱包于 10 月 26 日遭到黑客攻击,总体损失大约 11,000 EOS($60,000)。原因已查明是随机数发生器的漏洞,黑客能够设法通过使用先前块的信息来计算随机数发生器算法的未来数量,从而从 EosRoyale 钱包中窃取 60,000 美元。 目前该漏洞已修复,团队完全重新构建了随机化算法,现在 EosRoyale 中的随机数基于分配期间的哈希块(即未来块)。 Part 12 EOS POKER 背景 EOS Poker 是一个基于 EOS 的 BlackJack。 攻击者账号:未知 攻击手法:官方在拓展服务器时忘记将种子放入数据库中 损失(EOS):1,374.3750 始末 2018 年 10 月 28 日凌晨,EOS Poker 玩家发现游戏流水在上涨,但奖金池在减少。经查证后发现原因是官方在拓展服务器时忘记将种子放入数据库中,868590 期游戏之后不再记录种子。因此,出现了玩家利用获胜的种子赢取奖池的情况。EOS Poker 官方宣布,因自己的技术失误导致的损失将由官方承担,以后会不断地优化,避免类似事件再次发生。 事件后合计 EOS Poker 项目方损失 1,374.3750 EOS,229.0625 POKER token。最终团队拿出了 1,500 EOS Part 13 EOSCast 背景 EOSCast 类似于第一个使用区块哈希值为开奖号码游戏的 EOSPlay,游戏仅上线 10 小时就遭到了攻击。 攻击者账号:refundwallet 攻击手法:假 EOS 转账变种 损失(EOS):72,912 个 EOS 始末 2018 年 10 月 31 日凌晨 00:15,EOSCast 游戏遭遇黑客攻击,被与 EOSBet 9 月份时遭遇的同一种攻击手法被黑客转走 72,912 个 EOS。区块链安全公司 PeckShield 跟踪发现,当天 00:15 开始,黑客账户 refundwallet 就尝试对 EOSCast 游戏合约 eoscastdmgb1 实施攻击。黑客先以「假 EOS」攻击方式进行转账攻击 8 次,未能得逞,后又采用「假 EOS 转账变种」的方式成功攻击 9 次。 根据游戏规则,黑客分别以 100、1,000、10,000 个假 EOS 展开攻击,每次攻击可得到 198、9,800、19,600 个不等的 EOS,在实施最后一次攻击时,游戏团队察觉到异常攻击,及时转走了奖金池仅剩的 8,000 个 最终,黑客共计获利 72,912 个 EOS,根据 EOS 当下行情 35 RMB 估算,EOSCast 平台损失超 255 万 RMB。受此影响,EOSCast 游戏紧急下线,据了解,该游戏上线仅 10 个小时。 ECAF 针对此事件发布了仲裁令,希望节点能冻结如下六个账户: refundwallet 、jhonnywalker 、alibabaioeos、whitegroupes 、24cryptoshop 、minedtradeos 。 Part 14 EOSDICE 背景 EOSDice 是一个两次被攻破但是依然坚持开源的 EOS 竞猜类游戏。 攻击者账号:jk2uslllkjfd; 攻击手法:随机数被攻破以及随机数再次被攻破 损失(EOS):2,545.1135 + 4,633 始末 2018 年 11 月 4 日上午,EOSDice 合约账户由于随机数被破解遭到黑客账户 jk2uslllkjfd 的攻击,即使游戏方在发现攻击后立刻将合约资金转移到安全账号,依然损失了 2545.1135 EOS,该笔资金被转至火币交易所。 11 月 10 日上午,EOSDice 再次因为随机数问题被黑客账号 coinbasewa11 攻击,损失的 4633 EOS 被转入 Bitfinex 交易所。经慢雾安全团队分析,本次攻击者与 11 月 8 日攻击 FFGame DApp 的黑客是同一个,攻击手法也是由于使用了可控的随机数种子。 Part 15 EOSeven 背景 EOSeven 是一款基于 EOS 的掷骰子游戏,项目方在众筹完成后不久出现了官方账户被大额转出 SVN (项目 token)到 Newdex 上卖出的事件。严格意义上该次事件并不是黑客攻击,但团队的此行为也是一种安全隐患,因此收录在本次事件盘点当中。 攻击者账号:tuningfinish (团队成员) 攻击手法:内部成员进行大额转账 损失(EOS):未披露 始末 2018 年 11 月 4 日晚,EOSeven 官方账户出现大额转账,由 eosevendice2 转出 6 亿 SVN 至账户 tuningfinish,后转回 4.5 亿至 eosevendice2 。随后 tuningfinish 在 Newdex 上出售了转出的 SVN token,最后将所得 EOS 转入币安交易所。 隔天凌晨, EOSeven 团队发布公告,称操作大额转账的人系团队内成员(该成员已被开除)。团队表示所有的 SVN 将会从地址 eosevendice2 转移到 eosevendice1,以防止类似事件再次发生。 团队持有的 SVN 将会被锁定 6 个月,同时,svntokenico1 的 CPU 被质押给 eosevendice1。此前募集到的 EOS 也质押给 eosevendice1。 Part 16 FFGAME 背景 FFgame 是基于 EOS 的一款游戏平台,在游戏开始正式运营之前遭到随机数破解攻击。 攻击者账号:jk2uslllkjfd 攻击手法:随机数破解 损失(EOS):1,332 始末 2018 年 11 月 8 日凌晨,账户 jk2uslllkjfdFFgame 在 FFgame 游戏中不断获胜, FFgame 平台随机数疑似被破解。截止攻击结束,奖池仅剩 70 余个 EOS。被盗的 EOS 已被转移到火币交易所,项目方已向火币提交工单要求冻结。 账户 jk2uslllkjfd 曾于 11 月 4 号破解过 EOSDice 的随机数,这是其第二次盗币。 Part 17 HireVibes & AirDropsDAC 背景 HireVibes 是基于 EOS 的求职平台,连接求职者、雇主、推荐人和招聘人员,通过同行推荐来填补空缺职位,从而创建一个拥有合理招聘费用的公平激励模型。近期正在发放空投,由于第三方代发空投平台 攻击者账号:sym111111add (另一个私钥泄露被攻击者利用的账户); gizdkmjvhege 攻击手法:第三方代发空投合约私钥泄露 损失(EOS):2,514 始末 2018 年 11 月 12 日,AirDropsDAC (代空投平台) 合约账户的大量 HVT 在非本人操作下转入到了 sym111111add 账户,随后该账户在去中心化交易平台 Newdex 套现 2,514 EOS, 这笔 EOS 随后又被转入到 gizdkmjvhege 账户。 据 IMEOS 分析,账户 sym111111add 为新加坡节点 EOSIO.SG 的测试账户,由于私钥在 Github 泄露被黑客(gizdkmjvhege 账户持有者)盗用,并利用此账号将盗得的 HVT 在 Newdex 交易换取 2,514 EOS,并且转移到账户 gizdkmjvhege。 ECAF 在昨天发出了冻结该账户的紧急仲裁令,但是账户里的 EOS 已经被转移到了 OTCBTC 平台。通过转账记录查询,除了 HVT toen,在同一时间段从 AirDropsDAC (代空投平台) 合约账户丢失的还有 ZKS token。 emmm... 简单地说这就是一个黑客利用两个泄露私钥的账户谋取 EOS 的故事。事发后 HireVibes 项目方也第一时间站出来,澄清了是第三方平台的漏洞,但是经此事件会更加小心地监督以及向第三方服务平台提醒,这件事情正在进一步调查,不过项目进度不会受到影响,HireVibes Beta 版本会在 2019 年初发布出来。 MORE Wallet 早在钱包推行之初就万般强调助记词和私钥千万不能放在联网的设备里,设置仅自己可见也不行!如果怀疑私钥或助记词私钥泄露,可以进入钱包的管理账号页面重置私钥。 Part 18 LuckyGo 背景 LuckyGo 是一款上线没多久就被攻击到下线的 EOS 竞技类游戏。 攻击者账号:iloveloveeos (与 FairDice 攻击者账号相同) 攻击手法:随机数缺陷攻击 损失(EOS):未知 始末 2018 年 11 月 15 日晚 23 时 14 分,LuckyGo 玩家群有玩家反映投注赢了但是没有收到奖励。随后调查发现,当晚 22 时 12 分开始, 账户 iloveloveeos 就从 LuckyGo 合约账户不断赢取奖励。才会造成 LuckyGo 合约账户被掏空,给不出正常玩家获胜奖励的情况出现。目前该游戏已暂时下线。 根据慢雾安全团队分析,攻击手法还是「随机数缺陷攻击」,攻击者 iloveloveeos(恶意合约) 在今年 9 月份因为用同样的手法攻击 FairDice 已经被曝光。 特别致谢 本文特别致谢慢雾安全团队和区块链安全公司 PeckShield 的情报分析! 慢雾安全团队为 EOS 开发者提供了 《EOS 智能合约最佳安全开发指南》,点击【阅读原文】可查看。 参考 [1] ECAF AO005 仲裁令 (https://eoscorearbitration.io/wp-content/uploads/2018/08/ECAF-Order-of-Emergency-Protection-2018-08-07-AO-005.pdf) [2] 慢雾知识星球 https://t.zsxq.com/qnEIqj6 [3] 累计薅走数百万,EOS Dapps 已成黑客提款机? - DAppReview(https://zhuanlan.zhihu.com/p/44676266) [4] EOS DApp 充值「假通知」漏洞分析 - 慢雾安全团队 (https://mp.weixin.qq.com/s/8hg-Ykj0RmqQ69gWbVwsyg) [5] Newdex 关于假 EOS 刷币事件的公告 (https://support.newdex.io/hc/zh-cn/articles/360015772052%E5%85%B3%E4%BA%8E%E5%81%87EOS%E5%88%B7%E5%B8%81%E4%BA%8B%E4%BB%B6%E7%9A%84%E5%85%AC%E5%91%8A) [6] EosRoyale 被盗声明(https://www.reddit.com/r/eos/comments/9spmk7/eosbased_dapp_eosroyale_hacked_60000_stolen_from/) [7] ECAF AO017 仲裁令(https://eoscorearbitration.io/wp-content/uploads/2018/10/ECAF-Order-of-Emergency-Protection-2018-10-31-AO-017.pdf) [8] ECAF AO018 仲裁令(https://eoscorearbitration.io/wp-content/uploads/2018/11/ECAF-Order-of-Emergency-Protection-2018-11-15-AO-018.pdf) 来源链接:mp.weixin.qq.com —- 编译者/作者:IMEOS 玩币族申明:玩币族作为开放的资讯翻译/分享平台,所提供的所有资讯仅代表作者个人观点,与玩币族平台立场无关,且不构成任何投资理财建议。文章版权归原作者所有。 |
盘点 Fomo3D 狼人杀、EOSBet 、EOSDice 等十八个安全漏洞事件始末
2020-04-14 IMEOS 来源:链闻
LOADING...