By: Doris@慢霧安全團隊
背景
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, USDC,隨後 ERC-20 代幣均被換爲 ETH。
通過對攻擊者地址的手續費溯源,查詢到該地址上的初始資金來自 Tornado Cash 轉入的 0.98 ETH,隨後該地址還接收到 5 筆來自 Tornado Cash 的資金。
拓展交易圖譜發現,攻擊者將 1,292.98 ETH 轉移至地址 0x48d7c1dd4214b41eda3301bca434348f8d1c5eb6,目前該地址的餘額爲 1,282.98 ETH;攻擊者將剩下的 4,000 ETH 轉移至地址 0x050c7e9c62bf991841827f37745ddadb563feb70,目前該地址的餘額爲 4,010 ETH。
MistTrack 已將相關地址拉黑,並將持續關注被盜資金的轉移動態。
總結
本次攻擊的核心在於攻擊者利用價格預言機的直接獲取現貨即時價格和中位數計算價格的兼容缺陷來操縱 sUSDE 的價格,從而在嚴重價差的影響下進行借貸和清算來獲取非預期的利潤。慢霧安全團隊建議項目方增強價格預言機的抗操縱能力,設計更爲安全的預言機喂價機制,避免類似事件再次發生。