GAS:解读FTX交易所免手续费漏洞致使被薅20W刀XEN的羊毛案

被朋友Q到近期火热的羊毛事件,截止目前,不仅是黑客获利超20W刀,FTX损失108个ETH,合计有38名同样思路的攻击者部署合约发起攻击。

本文从技术维度出发,深入分析此利用FTX交易所免手续费提币的漏洞,结合智能合约回调发起的攻击方式,并通过样例代码复现实现原理。

由于FTX已经通过人工审计针对攻击者进行惩罚,该漏洞处于风险可控阶段。切勿尝试可能导致封号没收质押物。

1.1XEN是什么?

是近期大火的一个XEN币,到10-15为止已有超过120W笔交易,其实笔者对这类缺乏长期价值对Web3毫无建设性意义的项目一直没什么兴趣,因为他的机制就是只要发起的交易消耗了多少的GAS,就可以铸造出一定数量的XEN币,而众所周知Etherscan有针对gas消耗的排行榜

Filecoin全网实际流通市值约160亿人民币,减产倒计时24天:数据显示,Filecoin主网上线不到半年已经上线120家交易所,包括火币,okex,币安,coinbase,bitfinex,bittrex,zb,gate等全球所有主流交易所,当前24小时交易额143亿人民币,总流通市值550亿人民币,实际流通市值约160亿人民币。此前消息,Filecoin代币预设释放中的SAFT部分将于4月15号全部线性释放完毕,之后流通到市场的Filecoin预计每天减少28万枚,即每天减产43.2%。[2021/3/22 19:06:28]

可以看到真正出色的项目往往由于服务用户多交易量大,所以gas消耗高排名靠前,仿佛成了另一种的应用商店热门榜单,而XEN一举通过“冲票“成了冠绝以太坊整个生态的Top1,且等于其他好项目的总和。

管交所BGOEX:不参与任何项目的实际运营:据官方消息,针对近期市场冒用管交所BGOEX名义进行虚假宣传的行为,管交所BGOEX正式声明:不参与任何项目的实际运营,任何以管交所BGOEX “变相背书”、“兜底”等相关虚假宣传行为,管交所BGOEX将保留追究法律责任的权益,请广大用户提高警惕,注意规避风险。

据悉,管交所BGOEX是一家成立于东南亚的专业数字资产交易平台,持有六国数字金融牌照,致力于为用户提供优质的数字资产交易、存储及应用服务,专注为项目方提供客观中立、公平公正的交易平台。[2020/6/11]

可拓展阅读:当我们在看Etherscan的时候,到底在看什么?

钱包单笔转移gas消耗大于5W,且to地址是合约地址的交易。

比特币巨鲸Joe007:DeFi是以太坊营销策略,根本没有实际效用:知名比特币巨鲸Joe007表示,从他的角度来看,DeFi协议在“现实世界中没有实际效用”的情况下根本没用。“DeFi不过是以太坊背后的蛇油销售人员的又一个营销策略。很明显,他们正试图创造另一个类似于ICO的狂热。在现实世界中具有同样的零实际效用。”(Bitcoinist)[2020/4/25]

下图为其中top10的攻击者,其交易数占总攻击数的80%,致使FTX手续费损失86个ETH

笔者通过对其交易的gas消耗总值核算后,得出FTX本次损失总值为:108.19个ETH

合计铸造出XEN约24亿个。按14号日常价格估算的话,则黑客总收益在24W美金以上

金色财经独家分析 巨人转让区块链相关股份的两种解读:被投资公司盈利能力反映在巨人公司的投资损益项,盈利能力存在风险会直接对其财务报表产生风险,而这正是股东看重的地方。巨人公司出售OKC股份,从因“不确定性”而“保护投资者”理由解释合理充分,转让对价2850万美元占2%左右比例并不高,董事会在其职权范围内作出决定也不用劳烦整个股东大会,巨人也按照程序做了相同的关联方解释,资产并未被低估贱卖,完全符合要求。

然而“不确定性”却存在两种解读。如果解释为风险,史玉柱等自然展现了担当与无私;如果解释为潜在收益,那么OKC成功转型带来的利润巨人公司的广大股东也是享受不到的。旁人并不知道史玉柱和董事会的想法,但至少,此次减少“区块链”相关的股权,并不能说明OKC或区块链概念的利空。如果真是巨大风险,就没必要卖给“利益相关方”了,解释为史玉柱与股东会的“分歧”更为准确。而且值得注意的是,OKC是从经营币到搞区块链“实业”,更符合政策,有理由是个正向消息。[2018/3/24]

详细数据可<十四君>公众号后台输入”FTX与XEN”获得

2.1核心原理

智能合约的fallback/receive可任意执行逻辑。

任何一个合约都有默认的fallback函数,典型的功能就是让合约可以接收以太币并对其做出反应,这也是代币型合约用来拒绝转账、发出事件或转发以太币的典型模式。后来更多场景是应用在代理升级模式

总之就是,一笔指向合约地址的交易,如果没有匹配到对应执行的函数,就必然会执行fallback函数,而fallback可以将输入参数指向另一个合约地址,从而执行对应的逻辑。

参考:https://blog.soliditylang.org/2020/03/26/fallback-receive-split/

黑客先部署了一个攻击合约0xCba9b1

然后利用FTX的交易免费提币功能

让FTX的热钱包0xc098b2,发起了一笔指向攻击合约的提币

导致交易触发指向XEN合约的Mint函数调用

由于XEN合约可以设置Mint出代币的收益方,从而将代币转入黑客地址

2.3手法还原

其实任意fallback非常好触发,咱们通过现场手搓实现下,当然并不是MintXen,而是临时随意的一个20token来示意。

下文便是最简单的一个ERC20代币了,任何人均可执行mint函数,雷同于XEN了

对于ERC20/721实现原理可拓展阅读:你买的NFT到底是什么?

而攻击合约也很简单,设置写死要调用Mint的XEN合约地址以及黑客收益的地址。

可以看到实验中,对此攻击合约发起的任意一笔交易,即会触发了receive,且myAddr的GLD余额增加1e18个,当然并不能拿着这个代码就去复现黑客的实现了,因为要铸造更多的GEX还得增加工厂合约部署的逻辑,即能提高gas消耗也吻合XEG的mint管理。

3、总结-从攻击事件看“元交易”

其实如果不是黑客本身知道FTX有免费提币优惠,且其提币的交易的gasLimit设置为固定值50W,则很难发起这样的攻击,因为依据以太坊黄皮书,普通转账也仅仅需要2.1W的gas即可。

黑暗森林的web里知其雄守其雌,这样的攻击从历史进程来看,其实更有警示性意义

笔者想谈谈元交易的发展

元交易是来自于ChristianLundkvist教授在2015年的一个设想

如今上手Dapp实在是太麻烦了,以太坊生态若想普及,就应该允许新用户直接使用其功能,而不是先安排几座大山让用户翻山越岭。这意味着需要为新来的用户垫付Gas费用。当前的以太坊协议并没有提供原生方法来实现这一点。然而,得益于公/私密钥对,用户可以通过对元交易进行签名并证明所有权。

相信未来元交易终会成为应用主流,本次的FTX代付gas执行免费提币转账还只是元交易的某种小小实现,但只有安全无感才能迎接全民低成本上链时代的到来,为此安全与风控都需要特别注意,这也是笔者分析安全案件的初衷。

欢迎你从后台提交web3行业问题探讨

点赞关注十四,用技术视角带给你价值

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

链链资讯

[0:15ms0-3:469ms