SharkTeam:UwU Lend攻擊事件分析
發表於 2024-06-13 10:30 作者: SharkTeam
SharkTeam:UwU Lend攻擊事件分析
2024年6月10日,UwU Lend遭受攻擊,項目方損失約1930萬美元。
SharkTeam對此事件第一時間進行了技術分析,並總結了安全防範手段,希望後續項目可以引以爲戒,共築區塊鏈行業的安全防线。
一、攻擊交易分析
攻擊者: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)項目上线前,需要由第三方專業的審計公司進行智能合約審計。
About Us
SharkTeam的愿景是保護Web3世界的安全。團隊由來自世界各地的經驗豐富的安全專業人士和高級研究人員組成,精通區塊鏈和智能合約底層理論。提供包括風險識別與阻斷、智能合約審計、KYT/AML、鏈上分析等服務,並打造了鏈上智能風險識別與阻斷平台ChainAegis,能有效對抗Web3世界的高級持續性威脅(Advanced Persistent Threat,APT)。已與Web3生態各領域的關鍵參與者,如Polkadot、Moonbeam、polygon、Sui、OKX、imToken、Collab.Land、TinTinLand等建立長期合作關系。
官網:https://www.sharkteam.org
Twitter:https://twitter.com/sharkteamorg
Telegram:https://t.me/sharkteamorg
Discord:https://discord.gg/jGH9xXCjDZ
標題:SharkTeam:UwU Lend攻擊事件分析
地址:https://www.coinsdeep.com/article/133657.html
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。