猖獗黑客“薅”交易所羊毛?FTX交易所遭到Gas窃取攻击事件分析
2022年10月13日,据据Beosin EagleEye Web3安全预警与监控平台的舆情消息,FTX交易所遭到gas窃取攻击,黑客利用FTX支付的gas费用铸造了大量XEN TOKEN。
金色财经邀请Beosin安全团队第一时间对事件进行了分析,结果如下:
1、事件相关信息
其中一部分攻击交易:
0xc96b84cd834655290aa4bae7de80a3c117cc19d414f5bcf2fb85b8c5544300890x8eb73bd5c08318a4cfd233940c3a58744830cda999e59ecbc56f094618a91d690x6bada8e084f8d3b62311f0b6eda10f2690e7542dab75a0de436a640036bccf94
其中一个攻击者地址0x1d371CF00038421d6e57CFc31EEff7A09d4B8760其中一个攻击合约0xCba9b1Fd69626932c704DAc4CB58c29244A47FD3被攻击地址0xC098B2a3Aa256D2140208C3de6543aAEf5cd3A94(FTX热钱包地址)
2、攻击流程
以其中一笔攻击交易为例(0x8eb73bd5c08318a4cfd233940c3a58744830cda999e59ecbc56f094618a91d69)
第一步,攻击者先在链上部署攻击合约(0xCba9b1Fd69626932c704DAc4CB58c29244A47FD3)
第二步,FTX热钱包地址会向攻击合约地址转入小额的资金,利用攻击合约(0xCba9...7FD3)进行批量创建子合约。由于整个攻击中创建了大量合约,并且每次执行完子合约之后,子合约都会自毁,所以以下图为例部分展示。
第三步,接下来子合约fallback()函数去向Xen合约发起铸币请求,如下函数,claimRank()函数传入一个时间期限(最小1天)进行铸币,铸币条件是只用支付调用gas费,并无其他成本,并且claimMintRewardAndShare()函数为提取函数,该函数只判断是否达到时间期限(本次黑客设置的时间期限为最小值1天),便可无条件提取到任何非零地址。但在此次调用过程中,交易发起者为FTX热钱包地址,所以整个调用过程的gas都是由FTX热钱包地址所支付,而Xen铸币地址为攻击者地址。
前三个步骤,重复多次,并且每次重复过程中都会将已到期的代币提取出来,并且同时发起新的铸币请求,黑客达成他的目标。
3、漏洞分析
本次攻击主要利用了FTX项目没有对接收方为合约地址进行任何限制,也没有对ETH的gas Limit进行限制,导致攻击可以利用合约来铸造XEN代币进行获利。
截止发文时,Beosin安全团队通过Beosin Trace对被盗资金进行追踪分析,FTX交易所损失81ETH,黑客通过DODO,Uniswap将XEN Token换成ETH转移。
Beosin Trace资金追踪图
4、事件总结
针对本次事件,Beosin安全团队建议:
1.对钱包接收为合约的地址进行限制。2.对业务中存在gas风险的业务对gas limit进行足够小的限制。
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum