背景
2024 年6 月10 日,根據慢霧MistEye 安全監控系統監測,EVM 鏈上提供數位資產借貸服務的平台UwU Lend 遭攻擊,損失約1,930 萬美元。慢霧安全團隊對此事件展開分析並將結果分享如下:
(https://x.com/SlowMist_Team/status/1800181916857155761)
相關資訊
攻擊者地址:
0x841ddf093f5188989fa1524e7b893de64b421f47
存在漏洞的合約地址:
0x9bc6333081266e55d88942e277fc809b485698b9
攻擊交易:
0xca1bbf3b320662c89232006f1ec6624b56242850f07e0f1dadbe4f69ba0d6ac3
0xb3f067618ce54bc26a960b660cfc28f9ea0315e2e9a1a855ede1508eb4017376
0x242a0fb4fde9de0dc2fd42e8db743cbc197ffa2bf6a036ba0bba303df296408b
攻擊核心
本次攻擊的核心點在於攻擊者可以透過在CurveFinance 的池子中進行大額兌換直接操縱價格預言機,影響sUSDE 代幣的價格,並利用被操縱後的價格套出池子中的其他資產。
攻擊流程
1. 閃電貸借入資產並砸低USDE 的價格:攻擊者首先透過閃電貸借入大量資產,並在可以影響sUSDE 價格的Curve 池子中將藉來的部分USDE 代幣兌換成其他代幣。
2. 大量創建借貸頭寸:在當前sUSDE 價格大跌的情況下,存入其他底層代幣大量借出sUSDE 代幣。
3. 再次操縱預言機拉高sUSDE 的價格:透過在先前的Curve 池子中進行反向兌換操作,將sUSDE 的價格迅速拉高。
4. 大量清算負債部位:由於sUSDE 的價格迅速拉高,使得攻擊者可以大量清算先前借款的部位來獲得uWETH。
5. 存入剩餘的sUSDE 並借出合約中的其他底層代幣:攻擊者再次存入目前處於高價的sUSDE 來借出更多的底層資產代幣獲利。
不難看出,攻擊者主要是透過反覆操縱sUSDE 的價格,在低價時進行大量的借款,而在高價時進行清算和再抵押獲利。我們跟進到計算sUSDE 價格的預言機合約sUSDePriceProviderBUniCatch 中:
可以看出sUSDE 的價格是先從CurveFinance 上的USDE 池子和UNI V3 池子取得11 個USDE 代幣的不同價格,再根據這些價格進行排序和計算中位數來確定的。
而在這裡的計算邏輯中,其中5 個USDE 的價格是直接使用get_p 函數獲取Curve 池子的即時現貨價格,這才導致了攻擊者可以在一筆交易內以大額兌換的方式直接影響價格中位數的計算結果。
MistTrack 分析
根據鏈上追蹤工具MistTrack 分析,攻擊者 0x841ddf093f5188989fa1524e7b893de64b421f47 在此次攻擊中獲利約1,930 萬美元,包括幣種ETH, crvUSD, bLUSD,, US,隨後被取代為
透過對攻擊者地址的手續費溯源,查詢到該地址上的初始資金來自Tornado Cash 轉入的0.98 ETH,隨後該地址還接收到5 筆來自Tornado Cash 的資金。
拓展交易圖譜發現,攻擊者將1,292.98 ETH 轉移至地址0x48d7c1dd4214b41eda3301bca434348f8d1c5eb6,目前該地址的餘額為1,282.98 ETH;攻擊者將剩下的4,00026672267262067222662062022226 5ddadb563feb70,目前該地址的餘額為4,010 ETH。
MistTrack 已將相關地址封鎖,並將持續關注被盜資金的轉移動態。
總結
這次攻擊的核心在於攻擊者利用價格預言機的直接獲取現貨即時價格和中位數計算價格的兼容缺陷來操縱sUSDE 的價格,從而在嚴重價差的影響下進行借貸和清算來獲取非預期的利潤。慢霧安全團隊建議專案方增強價格預言機的抗操縱能力,設計更安全的預言機餵價機制,避免類似事件再次發生。