前言
北京时间2022年5月16日,知道创宇区块链安全实验室监测到多链DeFi协议FEG遭到闪电贷攻击,攻击者窃取144ETH和3280BNB,损失约130万美元。
5月17日,多链DeFi协议FEG再次受到攻击,攻击者窃取291ETH和4343BNB,损失约190万美元,其中BSC130万美元,以太坊链60万美元。
分析
该协议在BSC和Ether上都被攻击了,下面的图分别是两链上的攻击事件交易哈希。本次攻击事件主要原因是swapToSwap()函数中path地址可被攻击者控制。
删除 Tornado Cash 恶意代码的提案已通过,攻击者可在两天内进行更改:5月27日消息,删除 Tornado Cash 恶意代码的提案已获得通过,攻击者集成到协议中的恶意代码将被删除,代币持有者将重新控制 Tornado Cash 的 DAO 治理权,但攻击者还有两天时间进行潜在更改。
此前报道,Tornado Cash 攻击者发布一项恢复治理的新提案,若通过协议将删除恶意代码。[2023/5/27 9:45:57]
基础信息
攻击合约:0x9a843bb125a3c03f496cb44653741f2cef82f445
攻击者地址:0x73b359d5da488eb2e97990619976f2f004e9ff7c
漏洞合约地址:
BSC:0x818e2013dd7d9bf4547aaabf6b617c1262578bc7
Ether:0xf2bda964ec2d2fcb1610c886ed4831bf58f64948
攻击tx:
Pudgy Toys上架亚马逊两天内已售出超2万个,销售额突破50万美元:5月21日消息,NFT项目“胖企鹅” Pudgy Penguins首席执行官Luca Netz表示,Pudgy Toys在亚马逊推出后头两天的销售额超过50万美元,已有超过2万个独立玩具售出。昨天,Netz在Twitter Space中表示,该团队的主题是“希望Pudgy Penguins获得成功,但也希望推动该领域向前发展”,并补充说,他们专注于以创新方式将数百万用户带入Web3领域。[2023/5/21 15:16:36]
BSC:0x77cf448ceaf8f66e06d1537ef83218725670d3a509583ea0d161533fda56c063
Ether:0x1e769a59a5a9dabec0cb7f21a3e346f55ae1972bb18ae5eeacdaa0bc3424abd2
攻击流程
1.攻击者0x73b3调用事先创建好的攻击合约0x9a84从DVM中闪电贷借出915.842WBNB,接着将其中的116.81WBNB兑换成115.65fBNB。
巨鲸地址在过去两天内买入超6.3万枚RPL:5月3日消息,据 Spot On Chain 数据显示,域名为 rethwhale.eth 的巨鲸在过去两天内以均价 47.63 美元的价格买入 6.377 万枚 RPL(合计 304 万美元)。最近一笔交易是 13 小时前,该巨鲸将 700 枚 ETH 交易为 2.7 万枚 RPL,持有量在 RPL 持有者之中排 22 名。[2023/5/3 14:40:13]
2.攻击者0x73b3通过攻击合约0x9a84创建了10个合约以便后面利用漏洞。
3.攻击者0x73b3将第一步中兑换得到的fBNB通过函数depositInternal()抵押到FEGexPRO合约0x818e中。
主力数据:主力两天内买入超过252万枚HT:AICoin PRO版K线主力大单跟踪显示:过去2天,火币HT/USDT大额委托频繁出现并成交。其中,买单一共成交了34笔,共计252.15万枚HT;卖单成交了20笔,共计36.31万枚HT,成交差215.42万枚。[2020/9/17]
4.攻击者0x73b3调用depositInternal()和swapToSwap()函数使得FEGexPRO合约0x818e授权fBNB给第二步创建好的合约,重复多次调用授权fBNB给创建的10个合约。
5、由于上一步中已经将攻击者0x73b3创建的10个合约都已授权,攻击者用这些已被授权的合约调用transferFrom()函数将FEGexPRO合约0x818e每次转走113.452fBNB。
使用SegWit技术发送的交易量两天内翻番:根据Segwit.party的数据,在过去几个月,使用SegWit(隔离见证)技术的交易比例一直在10%-15%的水平上停滞不前。然而,在最近不到两天的时间里,该比例却从15%快速增加至30%。过去几周里,比特币生态系统中的一些关键实体如交易所、钱包提供商等均升级为SegWit格式,网络总容量因此将继续增加。[2018/3/1]
6、攻击者0x73b3又从PancakePair的LP交易对0x2aa7中借出31217683882286.007的FEG和423WBNB并重复上面的第三步、第四步和第五步,最终获得。
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地址。建议合约在开发时要对所有传入的参数进行校验,不要相信攻击者传入的任何参数。
一、MACI简介MACI是MinimalAnti-CollusionInfrastructure的缩写,是一种允许用户进行链上投票过程的应用程序,其有很强的抗串通/共谋能力.
1900/1/1 0:00:003月底,BNBChain上的DEX2.0协议DDDX公布了第二轮项目伙伴名单,包括Beefy,Autofarm和dForce在内的12个BNBChain上的知名项目陆续宣布参与DDDX协议的ve.
1900/1/1 0:00:00区块链通过网络可以将记录数字化并分发到网络上,有了区块链,交易验证不再依赖单一的中心化机构。在毛球科技看来,没有单点故障——或腐败——不仅是去中心化结构范式的固有安全优势,也是基本的哲学和商业驱.
1900/1/1 0:00:00BNBChain开发者社区致力于为智能合约开发者提供顶尖的开发基础架构,帮助他们打造出成熟且安全的去中心化应用.
1900/1/1 0:00:00继近日宣布以20亿美元估值完成由InsightPartners等领投的8800万美元B3轮融资后.
1900/1/1 0:00:00如今,一张“无聊猿”BoredApeYachtClub的NFT售价已与二线城市里的一套房相差无几.
1900/1/1 0:00:00