Written by WeaponX@零时科技

本文所有过程均在本地测试节点完成

文章用到的所有代码均在 https://github.com/NoneAge/EOS_dApp_Security_Incident_Analysis

0x00 背景

EOSBet在2018年10月14日遭到黑客攻击,根据EOSBet官方通告,此次攻击共被盗142,845 EOS(折合人民币510万,10月14日价格)。

0x01 技术分析

由于EOSBet官方在2018.09.14被黑客攻击后,将源代码开源至gitlab上,经过分析EOSBet官方合约eosbetdice11的转账记录,我们初步判断黑客可能是利用了转账通知伪造攻击。我们就直接分析源码来寻找安全问题。

首先,我们审查一下EOSIO_BAI_EX

这个代码在2018年9月14日被黑客攻击后已经修复相关漏洞,验证了transfer的调用者只能是eosio.token,也就是说只有支付了eosio.token发布的EOS才能进行相关的游戏操作。

这块代码是没有问题的。然后,我们审查一下transfer函数

验证转账账户不是自己或转账账户不是eosbetcasino才能进行相关的游戏操作。问题就出在这,EOSBet没有验证转账消息是否和自己有关就开始了相关操作。

黑客可以通过创建两个子账户A和B,只要给B账户部署以下合约就可以子账号间的转账A->B时将转账通知recipient抄送给eosbetdice11,进行相关的抽奖游戏且不用消耗任何的EOS,简单来说就是输了不用赔钱,赢了还能赚钱。

0x02 攻击复盘

创建eosio.token账户

部署eosio.token合约并初始化

创建游戏账户、开奖账户和攻击者账户

编译攻击者合约并部署

设置账户随机权限和开奖权限

向相关账户冲入代币
部署游戏合约并初始化

模拟黑客发起攻击

可以看到,因为黑客的attacker合约require_recipient(N(eosbetdice11)),eosio.token又将转账通知发送给了eosbetdice11。查询相关账户的余额可见黑客控制的账户总余额没有变化,EOSBet账户金额也没有变化,却生成了游戏订单。

对订单签名并开奖

开奖成功,黑客中奖

0x03 后记

EOSBet官方在受到攻击后做了以下加固,在transfer函数中对转账的付款人和收款人做了限制,必须 有一项是合约本身。也就是说,转账和自身合约有关的才会去处理。至此,EOSBet才正确的修复了假充值漏洞。

0x04 修复方案

零时科技安全专家建议,要防止转账通知伪造必须在处理转账交易时要验证以下内容:

通知是否来自eosio.token,即只处理eosio.token发送的通知转账发起人或者接受人是否是自己,即转账必须跟合约本身有关,不处理其他合约的转账通知

0x05 Refer

https://medium.com/@eosbetcasino/eosbet-statement-on-hack-and-1st-dividend-distribution-a5c9aa617eaf

https://gitlab.com/EOSBetCasino/eosbetdice_public

EOS dApp 漏洞盘点分析-EOSBet 假充值漏洞2相关推荐

  1. EOS dApp 漏洞盘点分析-EOSBet 假充值漏洞一

    Written by WeaponX@零时科技 本文所有过程均在本地测试节点完成 文章用到的所有代码均在 https://github.com/NoneAge/EOS_dApp_Security_In ...

  2. 智能合约审计之假充值漏洞

    漏洞细节 以太坊代币交易回执中status字段是0x1(true)还是 0x0(false),取决于交易事务执行过程中是否抛出了异常(比如使用了 require/assert/revert/throw ...

  3. struts2漏洞监测_CVE20190233: S2060 拒绝服务漏洞分析

    更多全球网络安全资讯尽在邑安全 0x01 漏洞简述 2020年8月11日,360CERT监测发现Apache官方发布了S2-060的风险通告,该漏洞编号为CVE-2019-0233,漏洞等级:中危.漏 ...

  4. 蓝牙App系列漏洞原理分析与漏洞利用

    蓝牙App系列漏洞原理分析与漏洞利用 作者: heeeeen 本文系转载,目的是学习,如有侵权,请联系删除 转载出处:http://www.ms509.com/ 蓝牙App漏洞系列分析之一CVE-20 ...

  5. CVSS评分策略分析及近年来满分漏洞盘点

    01  引言 近两年正如许多安全公司的研究员亲身经历的那样,网络攻击量显著增加,重大漏洞被相继爆出并伴随着在野利用.如去年年底的log4shell(CVE-2021-44228)和今年爆出的sprin ...

  6. EOS DApp 已成黑客提款机

    导读:本文盘点了近期EOS Dapps上影响较大的安全事件以及漏洞解读,同时以开发者的角度对EOS生态和"Code is Law"进行点评,严格执行Code is law,会增加用 ...

  7. 'or'='or'经典漏洞原理分析

    'or'='or'漏洞是一个比较老的漏洞了,主要是出现在后台登录上,利用这个漏洞,我们可以不用输入密码就直接进入系统的后台.它出现的原因是在编程时逻辑上考虑不周,同时对单引号没有进行过滤,从而导致了漏 ...

  8. Android提权漏洞CVE-2014-7920CVE-2014-7921分析

    作者:没羽@阿里移动安全,更多技术干货,请访问阿里聚安全博客 这是Android mediaserver的提权漏洞,利用CVE-2014-7920和CVE-2014-7921实现提权,从0权限提到me ...

  9. 工控系统的全球安全现状:全球漏洞实例分析

    工控系统的全球安全现状:全球漏洞实例分析 一.摘要 ​ 运营技术(OT).网络和设备,即工业环境中使用的所有组件,在设计时并未考虑到安全性.效率和易用性是最重要的设计特征,然而,由于工业的数字化,越来 ...

最新文章

  1. 如何直观的解释back propagation算法?
  2. 高通平台Tag精确寻找进阶教程
  3. 5、JUC--实现 Callable 接口
  4. 大学计算机课程操作文档,计算机操作系统大学课程.pptx
  5. Windows下打包maven项目,编写bat脚本,dos命令在后台运行与关闭
  6. python 利用pexpect进行多机远程命令执行
  7. 跨部门不配合工作_作为管理者,如何解决跨部门成员互不配合的情况?
  8. twisted系列教程十四— pre-fireed deferred
  9. 在线HTML网页小窗口复制不了,教你一招:解决某些网页不能复制的文字的N种方法!...
  10. 《html5 从入门到精通》读书笔记(三)
  11. 变量和数据结构的赋初值
  12. PIE SDK组件式开发综合运用示例
  13. PC与IOS outlook客户端配置大全——(163邮箱、QQ邮箱、谷歌gmail邮箱)
  14. GYM CERC 16 K Key Knocking 构造
  15. win10系统自带清除磁盘垃圾工具———磁盘清理工具
  16. 《Objective-C高级编程 iOS与OS X多线程和内存管理》读书笔记
  17. C语言俄罗斯方块删除某一行,俄罗斯方块消除满格问题,消除一行后出了问题...
  18. 【NI Multisim 14.0操作实例——最小系统电路】
  19. 少儿编程 电子学会图形化编程等级考试Scratch三级真题解析(选择题)2022年9月
  20. 不使用strlen函数求字符串的长度的方法

热门文章

  1. excel 如何快速填充序列
  2. 永别了!我可爱的小小灰。。。
  3. 年终将近,如何快速处理销售数据分析
  4. sp工具中最疼的是_阴阳师SP酒吞实战强度详解 看着厉害实际高级工具人 半仓管预定...
  5. 网盘不限速下载神器,亲测可用,速度10MB/s以上!
  6. 访问前端时,报403 Forbidden问题
  7. linux下yii框架,YII框架网站开发流程
  8. Matplotlib动图保存遇到MovieWriter有问题,自己写gif保存的代码
  9. 好好讲话--《即兴演讲:掌控人生的关键时刻》
  10. C++中为什么不能将全局变量定义在头文件中?