2018年12月19日,众多游戏类DApp遭遇交易回滚攻击,其中包括BetDice,EOSMax,ToBet等。按当时18元人民币的价格计算,损失超过500万人民币。期间BetDice通过链金术平台发出多次公告,一度造成恐慌。
与此同时,慢雾安全团队对交易所和中心化钱包给出了暂时性的方案。此刻,攻击手法依旧是一个谜团。那么,攻击手段究竟是怎样的呢?在进行攻击回顾之前,需要先了解一点技术背景。
技术背景
1、我们知道EOS采用的共识算法是DPOS算法,采用的是21个超级节点轮流出块的方式。除了21个超级节点外的其他全节点,并没有出块的权限。起到的作用是将收到的交易广播出去,然后超级节点将其进行打包。
说到这里,很容易看出,如果一笔交易是发给除了超级节点外的其他全节点,这笔交易会经历两个过程。首先,这笔交易先被全节点接收,然后交易再被节点广播出去进行打包。而一笔交易是需要超级节点中超过2/31的节点进行确认之后才是不可回滚的,也就是不可逆的。
这个过程大概需要3分钟左右,也就是说,交易发到除了超级节点外的全节点的时候,由于全节点没有打包的权利,此时此刻交易仍然处于可逆状态。这是一个核心关键点。
国际比特币咨询公司IBAC推出面向央行和主权财富基金的端到端数字资产投资解决方案:9月13日消息,国际比特币咨询公司(IBAC)是一家专门从事中央银行和主权财富基金(SWF)投资的独立国际咨询机构,宣布推出其服务,以帮助主权机构成功实施其数字资产投资战略。(PR News Wire)[2021/9/13 23:22:00]
2、每一个bp,都可以在自己的节点的config.ini文件内进行黑名单的配置,在黑名单中的帐号是不能进行交易的,也就是说无论怎样,黑名单的交易都会被回滚。
黑名单配置路径:
MacOS:
~/Library/ApplicationSupport/eosio/nodeos/config/config.ini
Linux:
~/.local/share/eosio/nodeos/config/config.ini
配置方法:将config.ini文件内的actor-blacklist填入黑名单帐号,如下图中,将attacker这个帐号作为黑名单帐号。
SBI Remit与滨松岩田银行合作建立基于Ripplenet的国际汇款平台:日本SBI集团子公司SBI Remit宣布将与滨松岩田银行合作,建立一个基于Ripplenet的国际汇款平台。(U.Today)[2021/6/30 0:18:12]
了解了以上的知识点之后,我们就可以进行整个攻击事件的回顾了。
攻击回顾
跟踪攻击者的其中一个攻击帐号,发现帐号合约内只有一个transfer函数
同时,我们可以通过复盘这个帐号的所有交易记录发现,这个帐号只有开奖记录,而没有下注记录,看起来就好像项目方故意给这个帐号进行开奖一样。然而事实上并非如此。那为什么会出现这样的情况呢?这就需要上面的技术背景的知识了。以下是详细的攻击手法:
1、首先:攻击者调用非黑名单合约的transfer函数,函数内部有一个inlineaction进行下注,from填写的是攻击者控制的非黑名单合约帐号,to填写的是游戏合约帐号。这时,攻击者发送交易是发向游戏合约自己的全节点服务器。使用的是黑名单帐号进行。
声音 | 李礼辉:虚拟货币与法定流通货币交易的数量取决于法定货币的国际地位:据第一财经消息,谈及虚拟货币的发展趋势,李礼辉表示,首先,虚拟货币有时会以惊人的速度扩张,可能对法定货币领域攻城略地。虚拟货币与法定流通货币交易的数量取决于法定货币的国际地位,有关国家监管的政策、民众的意愿以及市场的环境。其次, ICO,即公开发行代币融资,可能影响金融稳定。据不完全的统计,全球的 ICO规模2014年只有0.26亿美元,2015年降低到0.14亿美元,2016年突破2亿美元,2017年上半年冲高到12亿美元。2017年9月4日,中国人民银行等七部委联合发布《关于防范代币发行融资风险的公告》,对中国境内的 ICO项目全部禁止。[2018/12/25]
2、游戏节点读取到了这笔交易,立刻进行开奖,如果中奖,将对攻击者控制的非黑名单帐号发送EOS。
3、在经历了一个1,2两个操作之后。理论上攻击者控制的非黑名单帐号是进行了余额扣除。然后进行正常的开奖逻辑。到这里之前,一切都是正常的。也许有读者会问,为什么配置了黑名单,交易还能正常发起?原因是这个黑名单生效范围是在bp内,普通的全节点的config.ini内是没有黑名单的配置的。所以攻击者依然可以发起交易。
慢雾:BTFinance被黑,策略池需防范相关风险:据慢雾区情报,智能DeFi收益聚合器BT.Finance遭受闪电贷攻击。受影响的策略包括ETH、USDC和USDT。经慢雾安全团队分析,本次攻击手法与yearnfinance的DAI策略池被黑的手法基本一致。具体分析可参考慢雾关于yearnfinace被黑的技术分析。慢雾安全团队提醒,近期对接CurveFinance做相关策略的机池频繁遭受攻击。相关已对接CurveFinance收益聚合器产品应注意排查使用的策略是否存在类似问题,必要时可以联系慢雾安全团队协助处理。[2021/2/9 19:19:41]
4、到此为止,攻击正式开始,也到了最关键的地方,由于项目方节点在收到下注交易的时候已经立马完成了开奖逻辑,而且采用的是线下开奖的模式,即下注交易和开奖交易是两笔不同的交易。但是,这两笔交易仅仅是在项目方的节点内完成,仍然是可逆的。当项目方节点向bp广播这两笔交易的时候,由于第一笔下注交易的发起者在bp节点的黑名单内,这一笔交易将被回滚,也就是打包失败,而开奖交易的发起者是项目方,不在黑名单之内,会被正常打包。因此两笔交易中的第一笔下注交易一定会被回滚,而开奖交易依旧会被打包,这也就解释了为什么只有开奖记录,而没有下注记录。因为下注记录都被回滚了。
声音 | 慢雾:ETDP钱包连续转移近2000 ETH到Bitstamp交易所,项目方疑似跑路:据慢雾科技反(AML)系统监测显示,自北京时间 12 月 16 日凌晨 2 点开始,ETDP 项目方钱包(地址 0xE1d9C35F…19Dc1C3)连续转移近 2000 ETH 到 Bitstamp 交易所,另有 3800 ETH 分散在 3 个新地址中,未发生进一步动作。慢雾安全团队在此提醒交易所、钱包注意加强地址监控,避免相关恶意资金流入平台。[2019/12/16]
整个过程可以参考下面的图:
攻击复现
本次攻击复现参考EOSLIVE钱包团队的文章:https://eos.live/detail/19255
1、环境准备
本地准备两个节点,一个出块节点,一个同步节点,出块节点用于模拟真实bp,而同步节点则用于模拟项目方,其中出块节点需要开启history插件,方便后续的debug,并且把attacker加入节点黑名单。方便后续的debug。打包节点则需要开启自动开奖插件,自动开奖插件配置详见:
https://github.com/superoneio/security
本次复现用到的代码:
https://github.com/superoneio/security
本地多节点配置方法官方参考:
https://developers.eos.io/eosio-nodeos/docs/local-multi-node-testnet
三个测试帐号,分别是tobetioadmin,tobetiologs1,attackproxy1,分别为项目方帐号,项目方log帐号,和攻击代理帐号,其中tobetioadmin部署tobet游戏合约,tobetiologs1部署logs合约,attackproxy1部署attack合约。注意除了攻击代理帐号外的其他两个帐号不要改为其他帐号,如果改为其他帐号需要对自动开奖插件进行修改,自动开奖插件是拦截tobetioadmin这个帐号的。
附上我的双节点的配置:
其中nodeos_main为出块节点,nodeos_second为同步节点。
2、启动节点
看到以上信息则代表dice_plugin配置成功
3、首先对正常的逻辑进行测试。
使用attackproxy1对tobetioadmin帐号进行正常的转账交易
可以看到,攻击代理合约进行了正常的转账。
4、开始攻击,使用黑名单帐号调用攻击代理合约,向项目方合约发起攻击。查询初始余额
为保证攻击成功,连续向项目方发起4起攻击
再次查询余额
查询attacker帐号记录
可见,并没有attacker对attackproxy1的调用记录,最后两条记录是我测试直接使用黑名单向tobetadmin发起攻击的时候留下的记录。与本次测试无关。但是通过查询发现,本地记录和链上记录是相吻合的,即无下注记录。
查询attackproxy1的帐号记录
可以看到的是,这个也与链上记录吻合,只有开奖记录,就像tobetadmio故意给attackproxy1开奖一般。
通过以上的复现及和链上记录的对比,我们可以证明上文说的攻击手法,就是黑客本次进行攻击的手法,采用的就是使用黑名单进行回滚的操作。
防御建议
1、针对DApp的防御建议
节点开启readonly模式,防止节点服务器上出现未确认的块建立开奖依赖,如订单依赖,开奖的时候判断订单是否存在,就算在节点服务器上开奖成功,由于在bp上下注订单被回滚,所以相应的开奖记录也会被回滚。
2、针对交易所和中心化钱包的防御建议
慢雾安全团队建议EOS交易所及中心化钱包在通过RPC接口get_actions查询热钱包充值记录时,应检查充值transaction所在的block_num是否小于last_irreversible_block,如果block_num大于last_irreversible_block则表示该区块仍然是可逆的,存在「假充值」风险。
本文来源于非小号媒体平台:
慢雾科技
现已在非小号资讯平台发布1篇作品,
非小号开放平台欢迎币圈作者入驻
入驻指南:
/apply_guide/
本文网址:
/news/3627097.html
免责声明:
1.资讯内容不构成投资建议,投资者应独立决策并自行承担风险
2.本文版权归属原作所有,仅代表作者本人观点,不代表非小号的观点或立场
上一篇:
再提Mt.Gox,糟糕的「里程碑事件」正提升区块链世界的安全意识
下一篇:
复盘数十万EOS被盗过程,背后是其架构设计缺陷?
金融行动特别工作组是一家成立于1989年的政府间组织,由七国集团发起倡议,共同打击行为。近日,该组织可能将建立一套适用于虚拟货币的反标准.
加密货币漏洞奖励方面的支出越来越高了。Coinbase、EOS、Stellar以及Augur等平台近段时间都奖励了发现安全漏洞的白帽黑客一大笔钱.
活动时间:5月29日13:00:00-6月8日23:59:59活动奖励:10,000TAM 活动规则: 1活动期间,完成首单TAM买入交易且不低于1,000TAM的前100名IDAX实名用户.
提交了住址、电费单等认证资料后,马克终于在5月22日凌晨收到了提币成功的通知,一周前,他的币被HitBTC冻结了一周,理由是“需要KYC验证”.
针对“美国电信巨头AT&T宣布将通过BitPay接受加密货币支付账单”的消息,加密社区的反应各不相同.
最近,ETH涨势迅猛。在不到一个月内的时间里价格逼近300美元,是去年12月低点82美元的三倍多。5月22日,以太坊基金会发布了2019年春季报告.