两天内遭遇两次攻击, DeFi协议FEG真的伤不起-ODAILY

前言

北京时间2022年5月16日,知道创宇区块链安全实验室监测到多链DeFi协议FEG遭到闪电贷攻击,攻击者窃取144ETH和3280BNB,损失约130万美元。

5月17日,多链DeFi协议FEG再次受到攻击,攻击者窃取291ETH和4343BNB,损失约190万美元,其中BSC130万美元,以太坊链60万美元。

分析

该协议在BSC和Ether上都被攻击了,下面的图分别是两链上的攻击事件交易哈希。本次攻击事件主要原因是swapToSwap()函数中path地址可被攻击者控制。

数据:BTC巨鲸1LQoW两天内累计增持879枚BTC:8月24日消息,据Tokenview链上数据显示,比特币鲸鱼1LQoWist8KkaUXSPKZHNvEyfrEkPHzSsCd今日于06:17:34增持165枚BTC,近两天内累计增持879枚BTC。当前该鲸鱼地址余额为134,395.78BTC,持有量排名第三。[2022/8/24 12:45:09]

基础信息

攻击合约:0x9a843bb125a3c03f496cb44653741f2cef82f445

攻击者地址:0x73b359d5da488eb2e97990619976f2f004e9ff7c

漏洞合约地址:

BSC:0x818e2013dd7d9bf4547aaabf6b617c1262578bc7

Ether:0xf2bda964ec2d2fcb1610c886ed4831bf58f64948

攻击tx:

BSC:0x77cf448ceaf8f66e06d1537ef83218725670d3a509583ea0d161533fda56c063

Ether:0x1e769a59a5a9dabec0cb7f21a3e346f55ae1972bb18ae5eeacdaa0bc3424abd2

攻击流程

1.攻击者0x73b3调用事先创建好的攻击合约0x9a84从DVM中闪电贷借出915.842WBNB,接着将其中的116.81WBNB兑换成115.65fBNB。

QITCHAIN全网算力两天内增加200P:据官方消息,随着QITCHAIN主网的更新以及兼容Chia后,5月21日零时开放自由交易,到25日零时,QITCHAIN全网算力两天内增加了200P左右,大部分Chia矿工贡献。目前FIL,CRU等矿工也在陆续进场中。[2022/5/26 3:42:56]

2.攻击者0x73b3通过攻击合约0x9a84创建了10个合约以便后面利用漏洞。

3.攻击者0x73b3将第一步中兑换得到的fBNB通过函数depositInternal()抵押到FEGexPRO合约0x818e中。

ProShares比特币ETF两天内达到与加拿大ETF相同的净资产值:金色财经报道,据Kaiko称,ProShares 基于比特币期货的交易所交易基金已经突破了 10 亿美元的资产管理规模,并成为投资产品历史上最快实现这一目标的 ETF。为期两天的 ProShares ETF 资产管理规模达到加拿大基金。

虽然 ProShares 产品是美国第一个比特币 ETF,但加拿大已经有几只比特币 ETF 在多伦多证券交易所交易。在Kaiko提供的图表上,我们可以看到美国ETF的资产净值已达到10亿美元大关,更接近于今年2月和4月以来一直在交易的加拿大投资产品。这两个基金之间的主要区别在于,加拿大 ETF 实际上持有比特币,而不是通过持有短期比特币 期货合约来创造对加密货币的合成敞口。目前,与 ProShares 相比,只有两种基金的资产净值更高:3iQ 和目的比特币 ETF。 (u.today)[2021/10/26 20:59:15]

4.攻击者0x73b3调用depositInternal()和swapToSwap()函数使得FEGexPRO合约0x818e授权fBNB给第二步创建好的合约,重复多次调用授权fBNB给创建的10个合约。

Dash通过新的预算周期,将在两天内支出5165.45 Dash:Dash在推特表示再次成功通过一个Dash预算周期,5165.45 Dash将在2天内支付给所有在DAO项目中投票的相关方。[2020/10/26]

5、由于上一步中已经将攻击者0x73b3创建的10个合约都已授权,攻击者用这些已被授权的合约调用transferFrom()函数将FEGexPRO合约0x818e每次转走113.452fBNB。

6、攻击者0x73b3又从PancakePair的LP交易对0x2aa7中借出31217683882286.007的FEG和423WBNB并重复上面的第三步、第四步和第五步,最终获得。

动态 | 价值3.8亿美元LTC两天内被转移进41个新钱包 疑似“巨鲸”活动:据ambcrypto消息,11月30日至12月1日期间,41个新钱包地址跻身LTC富豪榜,每个地址拥有约30万枚LTC,共计约1230万枚LTC,占LTC总流通量的20.69%。按转账时的价格计算,价值约为3.8亿美元。因此,LTC的市值在一天内大涨60%。此次资金流动有三种可能性:一是“巨鲸”地址的活动,将资金分拆至多个钱包;二是一些机构投资者将资金转移到自己的账户,但这种说法只是猜测;三是交易所将用户资金转移进冷钱包。[2018/12/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地址。建议合约在开发时要对所有传入的参数进行校验,不要相信攻击者传入的任何参数。

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

银河链

[0:15ms0-1:634ms