SharkTeam:UwU Lend攻擊事件分析

2024-06-13 16:06:33

來源:SharkTeam

2024年6月10日,UwU Lend遭受攻擊,項目方損失約1930萬美元。

一、攻擊交易分析

攻擊者:0x841dDf093f5188989fA1524e7B893de64B421f47

攻擊者共發起了3筆攻擊交易:

攻擊交易1:

0x242a0fb4fde9de0dc2fd42e8db743cbc197ffa2bf6a036ba0bba303df296408b

攻擊交易2:

0xb3f067618ce54bc26a960b660cfc28f9ea0315e2e9a1a855ede1508eb4017376

攻擊交易3:

0xca1bbf3b320662c89232006f1ec6624b56242850f07e0f1dadbe4f69ba0d6ac3

以攻擊交易1為例,進行分析:

攻擊合約:0x21c58d8f816578b1193aef4683e8c64405a4312e

目標合約:UwU Lend金庫合約,包括:

uSUSDE:0xf1293141fc6ab23b2a0143acc196e3429e0b67a6

uDAI:0xb95bd0793bcc5524af358ffaae3e38c3903c7626

uUSDT:0x24959f75d7bda1884f1ec9861f644821ce233c7d

攻擊過程如下:

1. 從不同平臺閃電貸多種代幣,包括WETH, WBTC, sUSDe, USDe, DAI, FRAX, USDC, GHO

代幣接收地址為0x4fea76b66db8b548842349dc01c85278da3925da

閃電貸的代幣和數量如下:

從AaveV3中閃電貸159,053.16 WETH和14,800 WBTC

從AaveV2中閃電貸40,000 WETH

從Spark中閃電貸91,075.70 WETH和4,979.79 WBTC

從Morpho中閃電貸301,738,880.01 sUSDe,236,934,023.17 USDe和100,786,052.15 DAI

從Uniswap V3: FRAX-USDC 中閃電貸60,000,000 FRAX和15,000,000 USDC

從Balancer中閃電貸4,627,557.47 GHO和38,413.34 WETH

從Maker中閃電貸500,000,000 DAI

共計約328,542.2 WETH,19779.79 WBTC,600786052.15 DAI,301,738,880.01 sUSDe,236,934,023.17 USDe,4,627,557.47 GHO,60,000,000 FRAX,15,000,000 USDC

2. 將閃電貸的Token轉移到合約0xf19d66e82ffe8e203b30df9e81359f8a201517ad(簡記為0xf19d)中,為發起攻擊做准備。

3. 通過兌換(exchange)代幣,控制sUSDe的價格(降低價格)

(1)USDecrvUSD.exchange

將8,676,504.84 USDe兌換成8,730,453.49 crvUSD,USDecrvUSD中USDe數量增加,價格降低,crvUSD數量減少,價格提高

(2)USDeDAI.exchange

將46,452,158.05 USDe兌換成14,389,460.59 DAI,USDeDAI中USDe數量增加,價格降低,DAI數量減少,價格提高

(3)FRAXUSDe.exchange

將14,477,791.69 USDe兌換成46,309,490.86 FRAX,USDeDAI中USDe數量增加,價格降低,FRAX數量減少,價格提高

(4)GHOUSDe.exchange

將4,925,427.20 USDe兌換成4,825,479.07 GHO,USDeDAI中USDe數量增加,價格降低,GHO數量減少,價格提高

(5)USDeUSDC.exchange

將14,886,912.83 USDe兌換成14,711,447.94 USDC,USDeDAI中USDe數量增加,價格降低,USDC數量減少,價格提高

以上exchange後,5個資金池中的USDe價格降低。最終導致sUSDe價格大跌。

4. 不斷創建借貸頭寸,即向LendingPool合約中存入其他資產(WETH,WBTC和DAI),然後借貸sUSDe。因為sUSDe價格大跌,因此,借出的sUSDe數量比價格大跌前要多很多。

5. 與第3步類似,反向操作將sUSDe的價格拉高。

由於sUSDe被拉高,第4步借貸的頭寸價值超過抵押價值,達到了清算的標准。

6. 批量地對借貸頭寸進行清算,獲得清算獎勵uWETH

7. 償還貸款,提取標的資產WETH, WBTC,DAI和sUSDe。

8. 將sUSDe再次存入到LendingPool中,此時sUSDe價格被拉高,因此可以借貸出較多其他資產,包括DAI和USDT。

9. 兌換代幣,償還閃電貸。最終獲利1,946.89 ETH

二、漏洞分析

通過以上分析,發現整個攻擊過程存在大量的閃電貸以及多次操縱sUSDe的價格,當抵押sUSDe時,會影響借出資產的數量;當借出sUSDe時,會影響借貸率,進而影響清算系數(健康因子)。

攻擊者利用這一點,通過閃電貸砸低sUSDe的價格,抵押其他資產,借出大量的sUSDe,然後再擡高sUSDe的價格,清算抵押資產而獲利,並將剩余的sUSDe抵押借出其他資產,最後償還閃電貸,攻擊完成。

從上面第3步發現,攻擊者通過控制Curve Finance的USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe和USDe/SDC這5個交易池中的USDe的價格來操縱sUSDe的價格的。價格讀取函數如下:

其中,sUSDe價格由11個價格計算得到的,其中前10個由CurveFinance中讀取,最後一個又UniswapV3提供。

從CurveFinance中讀取的價格則是由USDe/rvUSD, USDe/AI, FRAX/SDe, GHO/SDe和USD/SDC這5個交易池提供,也是攻擊者在攻擊交易中操縱的5個交易池。

返回的價格由uwuOracle讀取的price,CurveFinance交易池合約中的price_oracle(0)和get_p(0)計算得到的。

(1)price是有Chainlink提供的價格,是不可以操縱的;

(2)交易池參數

攻擊者通過操縱交易池的代幣數量來操縱get_p(0)的返回值,進而實現操縱價格。

三、安全建議

針對本次攻擊事件,开發過程中應遵循以下注意事項:

(1)針對操縱價格的漏洞,可以採用鏈下的價格預言機,這樣可以避免價格被操縱。

(2)項目上线前,需要由第三方專業的審計公司進行智能合約審計。

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。

推薦文章

Layer2 格局劇變:Base 生態有哪些關鍵亮點?

在激烈競爭的 L2 賽道中,原本穩坐釣魚臺的 Arbitrum 和 Optimism 似乎面臨着前...

加密泡泡啊
135 4個月前

XRP 漲至 7.5 美元?分析師告訴 XRP 大軍為純粹的煙火做好准備!

加密貨幣分析師 EGRAG 表示,XRP 即將迎來關鍵時刻,價格可能大幅上漲,這取決於能否突破關鍵...

加密泡泡啊
142 4個月前

以太坊ETF通過後 將推動山寨幣和整個加密生態大爆發

比特幣ETF通過後市場動蕩,以太坊ETF交易前景分析 比特幣ETF通過後,市場出現了先跌後漲的走勢...

加密泡泡啊
164 4個月前

ZRO為啥這么能漲?

ZRO概述 ZRO代幣,全稱為LayerZero,是LayerZero協議的本地代幣,旨在作為治理...

加密泡泡啊
122 4個月前

今晚ETH迎來暴漲時代 op、arb、metis等以太坊二層項目能否跑出百倍幣?

北京時間7月23日晚上美股开盤後 ETH 的ETF开始交易。ETH的裏程碑啊,新的時代开啓。突破前...

BNBCCC
141 4個月前

Mt Gox 轉移 28 億美元比特幣 加密貨幣下跌 ETH ETF 提前發行

2014 年倒閉的臭名昭著的比特幣交易所 Mt Gox 已向債權人轉移了大量比特幣 (BTC),作...

加密圈探長
129 4個月前