前言
北京时间2022年5月16日,知道创宇区块链安全实验室监测到多链DeFi协议FEG遭到闪电贷攻击,攻击者窃取144ETH和3280BNB,损失约130万美元。
5月17日,多链DeFi协议FEG再次受到攻击,攻击者窃取291ETH和4343BNB,损失约190万美元,其中BSC130万美元,以太坊链60万美元。
分析
该协议在BSC和Ether上都被攻击了,下面的图分别是两链上的攻击事件交易哈希。本次攻击事件主要原因是swapToSwap()函数中path地址可被攻击者控制。
马斯克发推:未来应该持有什么币?:4月24日,马斯克发布了一条与加密货币有关的模糊推文。这次他没有说DOGE或比特币,只是在推特上问了一个问题:未来应该持有什么币?(What does the future hodl? )许多网友在评论区回应“狗狗币”和“比特币”。
注:Hodl为比特币社区俚语,指长期持有某种加密货币。[2021/4/24 20:54:37]
基础信息
攻击合约:0x9a843bb125a3c03f496cb44653741f2cef82f445
攻击者地址:0x73b359d5da488eb2e97990619976f2f004e9ff7c
漏洞合约地址:
BSC:0x818e2013dd7d9bf4547aaabf6b617c1262578bc7
Ether:0xf2bda964ec2d2fcb1610c886ed4831bf58f64948
攻击tx:
BSC:0x77cf448ceaf8f66e06d1537ef83218725670d3a509583ea0d161533fda56c063
声音 | John McAfee:什么会刺激比特币上涨,用它:杀软件之父John McAfee在Twitter发文表示:“什么会刺激比特币上涨?用它!”[2019/9/28]
Ether:0x1e769a59a5a9dabec0cb7f21a3e346f55ae1972bb18ae5eeacdaa0bc3424abd2
攻击流程
1.攻击者0x73b3调用事先创建好的攻击合约0x9a84从DVM中闪电贷借出915.842WBNB,接着将其中的116.81WBNB兑换成115.65fBNB。
2.攻击者0x73b3通过攻击合约0x9a84创建了10个合约以便后面利用漏洞。
3.攻击者0x73b3将第一步中兑换得到的fBNB通过函数depositInternal()抵押到FEGexPRO合约0x818e中。
薛蛮子:什么是区块链企业家精神?: 今日知名投资人薛蛮子在三点钟区块链社群回应问题“您经常提到的区块链企业家精神具体是指的什么”时表示:我这次在京都附近的天桥立看了一个奇景是屁眼看天。原本是海中有了一个长几公里的沙堤,和西湖的苏堤白堤一样,仅是一个美景而已。可是到了上顶上有个地方,叫裤裆看天。每个游客必须把头伸到裤裆底下看景。这时候,这个沙堤就不是一个普通的沙堤,而是宛如一条巨龙,直飞天际。我之所以句这个例子,就是因为区块链颠覆了以往的商业逻辑。因此,颠覆是第一条。第二个精神是有抡开膀子 时不我待的精神。第三个精神是要有超强的学习能力,才能与时具进。眼界,胸怀,识人之能和容人之量是前所未有的重要。[2018/2/25]
4.攻击者0x73b3调用depositInternal()和swapToSwap()函数使得FEGexPRO合约0x818e授权fBNB给第二步创建好的合约,重复多次调用授权fBNB给创建的10个合约。
摩根大通CEO杰米戴蒙:关于比特币自己“不会再说什么了”:摩根大通CEO杰米戴蒙周三在达沃斯论坛期间接受CNBC采访时称,关于比特币自己“不会再说什么了”( “I’m not going to say anymore”)。去年十月戴蒙也有类似的承诺,在他把比特币定义为局后不久,戴蒙发誓不再谈论比特币。然而到了第二天,他就公开抨击比特币投资者是“愚蠢的”。今年一月初,他又称后悔说比特币是局。[2018/1/25]
5、由于上一步中已经将攻击者0x73b3创建的10个合约都已授权,攻击者用这些已被授权的合约调用transferFrom()函数将FEGexPRO合约0x818e每次转走113.452fBNB。
6、攻击者0x73b3又从PancakePair的LP交易对0x2aa7中借出31217683882286.007的FEG和423WBNB并重复上面的第三步、第四步和第五步,最终获得。
因利率上升,bZx中锁定的ETH在两天内增加41.7%:金色财经报道,根据数据网站DeFi Pulse的数据,锁定在bZx中的ETH总数在周四增加到24711,周三从17739增长到21514,增长了20%以上。 存款在两天增加41.7%可能是由于利率上升所致。根据Codefi数据,截至3月3日,用户通过bZx支持的Fulcrum平台上借ETH可获得41.9%的年利率。同时,其他平台(如Aave和Compound)的收益率仅为0.06%和0.01%。目前该平台的年利率已从周三的41.9%降至24.5%,但仍比Aave和Compound高出至少24个百分点。因此,锁定在bZx上的ETH数量可能会继续增加。[2020/3/6]
7、最后归还闪电贷,将上面攻击获得的所有WBNB转入攻击合约0x9a84中。
细节
查看FEGexPRO合约,我们能看到depositInternal()函数和swapToSwap()函数的具体逻辑。其中depositInternal()函数进行质押,用户的余额受到合约当前代币余额的影响,第一次攻击者正常质押后balance也正常增加,而由于当前合约代币余额没变,后面的质押只需要传入最小值调用即可。
通过调用swapToSwap()函数传入恶意的path地址参数,当前合约代币余额并不会受到影响,IERC20(address(Main)).approve(address(path),amt);这样就能给path地址进行当前合约fBNB的授权。
攻击者通过反复调用depositInternal()和swapToSwap()就可以让FEGexPRO合约将fBNB反复授权给攻击者传入的恶意合约path地址。其他地址转走的代币数量就是攻击者第一次质押的代币数量减去手续费的数量。通过查看Debugger中的信息,我们可以发现传入的path地址参数都是攻击流程中创建的合约地址。
后续
在16日的攻击之后,次日攻击者又进行了一次攻击,但更换了攻击地址。
攻击合约:0xf02b075f514c34df0c3d5cb7ebadf50d74a6fb17
攻击者地址:0xf99e5f80486426e7d3e3921269ffee9c2da258e2
漏洞合约:0xa3d522c151ad654b36bdfe7a69d0c405193a22f9
攻击tx:
BSC:0xe956da324e16cb84acec1a43445fc2adbcdeb0e5635af6e40234179857858f82
Ether:0c0031514e222bf2f9f1a57a4af652494f08ec6e401b6ae5b4761d3b41e266a59
由于R0X漏洞合约0xa3d5未开源,我们试着从Debugger中进行分析,发现和第一次的攻击流程类似,但还用了BUY()辅助存入和SELL()函数进行辅助提取。
总结
该次攻击的主要原因是未验证swapToSwap()函数中path地址参数,导致可以被攻击者任意传入使得FEGexPRO合约将自身代币授权给攻击者传入的所有恶意path地址。建议合约在开发时要对所有传入的参数进行校验,不要相信攻击者传入的任何参数。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。