12月05日,新上线的又一款EOS竞猜类游戏Fastwin遭到黑客攻击,区块链安全公司PeckShield态势感知平台捕捉到了该攻击行为并率先进行了安全播报披露。数据显示,当天凌晨03:18—04:15之间,黑客向Fastwin游戏合约发起124次攻击,共计获利1,929.17个EOS。PeckShield安全人员分析发现,该攻击行为是黑客利用Fastwin的合约在校验合约调用方时存在的漏洞,导致「内联反射」攻击成功。
据研究,截止11月底,已经发生了超27起EOSDApp安全事件,主要集中在假EOS攻击、随机数问题等攻击方式,且在不断升级演变。而这次看似较小的攻击事件背后却暴露出了一个较以往危害性可能更大的新型漏洞:EOSIO官方系统对调用合约自身函数存在不校验权限的问题。
动态 | 竞猜类游戏BitDice遭黑客假EOS攻击:今天早晨06:40-06:50之间,PeckShield安全盾风控平台DAppShield监测到黑客向竞猜类游戏BitDice发起连续攻击,获利四千多EOS,并已转至EXMO、ChangeNOW等多家交易所。PeckShield安全人员追踪链上数据分析发现,黑客采用的是“假EOS”攻击手段。PeckShield安全人员在此提醒,开发者应在合约上线前做好安全测试,特别是要排除已知攻击手段的威胁,必要时可寻求第三方安全公司协助,帮助其完成合约上线前攻击测试及基础安全防御部署。[2019/10/12]
图一,PeckShield与Block.one邮件沟通
动态 | 12月共发生20起竞猜类游戏遭攻击事件 总损失超600万元:据 PeckShield 态势感知平台数据显示,过去一个月,EOS公链共计发生20起竞猜类游戏遭黑客攻击事件,开发者共计损失348,204个EOS,以当前价格18元估算总价值超600万元。PeckShield安全人员分析数据发现:1、攻击事件损失超过1万个EOS的有7起,大部分攻击损失均在1,000—10,000个EOS之间;2、安全事件开始影响到包含BetDice、ToBet在内的头部竞猜类游戏,其中BetDice一次损失195,531个EOS,较为惨重;3、除个别项目因私钥泄露和假转账通知等造成的漏洞,黑客主要攻击方式为交易回滚攻击,大部分安全事件和随机数问题有关;4、过去半年,12月份受攻击次数最多,损失额度亦最大环比11月份增长6倍。[2019/1/2]
PeckShield认为这是一个非常严重的漏洞,并第一时间通知了Block.one团队。Block.one官方团队接受了该漏洞提议,并告知我们有其他研究团队也事先独立汇报了该漏洞,最终于周四更新了紧急补丁以补救防御,同时次日新发布1.5.1和1.4.5两个版本,完成了该漏洞修复,避免了更多攻击事件的发生及可能造成的资产损失。
动态 | 今晨多款EOS竞猜类游戏遭黑客交易回滚攻击:据 PeckShield 态势感知平台12月12日数据显示:今晨05:57-08:27之间,黑客(helookitiqas)向EOS竞猜类游戏钓鱼高手(kittyfishing)发起攻击,在两个多小时内,共计发起91次攻击,总计获利558.85个EOS。该黑客账户(helookitiqas)在攻击得手后,将大部分所得资金转向币安交易所账号(binancecleos)。
PeckShield 安全人员分析发现,黑客是采用交易回滚攻击手段对游戏合约实施攻击。此外,另有两款竞猜类游戏也于今晨遭到了数十次同类型的攻击,损失数百个EOS,目前还有一款游戏合约尚未修复仍面临再次被攻击的风险。PeckShield 安全人员在此提醒:近日,交易回滚攻击形态仍在频繁出现,对EOS DApp游戏生态造成了严重的威胁,希望广大游戏开发者持续保持警惕。[2018/12/12]
「内联反射(inlineReflex)」攻击原理
正常的转账流程如图所示:玩家通过调用系统合约(eosio.token),将EOS转账给游戏合约,触发游戏合约的分发逻辑(apply),进而调用相关函数实现开奖。
图二,竞猜游戏正常转账流程
而此次的攻击者(ha4tsojigyge),在自己帐号部署的合约中包含了与游戏合约相同的操作函数,在转账完成后,自行开奖获得奖金。如图所示:
图三,攻击者内联调用自身合约开奖
从图中可以看出,攻击者在自身合约的函数中,内联调用了与游戏合约开奖同名的函数,再通过通知的方式将信息发送到了游戏合约。此时游戏合约的分发逻辑没有过滤掉此信息,并调用了开奖函数。
总之,攻击者利用了EOSIO系统中对调用合约自身函数不校验权限的漏洞,进而使用游戏合约的帐号权限发起内联调用,致使绕过游戏合约在敏感函数中校验调用者权限的方法,从而获取了游戏合约发放的奖励。
修复方法
从上述分析能够发现,攻击者合约的通知信息中,实际调用的合约是攻击者合约,而非游戏合约,因此在游戏合约的分发逻辑中过滤掉此类信息即可。而且从系统定义的宏中能够看到,分发逻辑处理了此问题。因此PeckShield在此提醒开发者在定制化自己的分发逻辑时,需要特别注意其中的调用来源。
图四,系统EOSIO_DISPATCH代码
深层次及兼容性问题
需要强调的是:这个问题属于EOS公链层的较大漏洞,攻击者在内联调用中可以伪造任意帐号的权限执行,但这个修复可能会给部分开发者造成兼容性问题,如合约内联调用函数,而执行者帐号不是自己的时候,会导致整个交易执行失败,如需解决兼容性问题请给合约赋予执行者帐号的eosio.code权限。
本文来源于非小号媒体平台:
PeckShield
现已在非小号资讯平台发布1篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/3627092.html
游戏链游
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
区块链如何助力数据共享隐私保护?
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。