
超 1900 枚 ETH 被盜,Radiant Capital 如何被黑客「摸底」盜取 450 萬美元
TechFlow Selected深潮精選

超 1900 枚 ETH 被盜,Radiant Capital 如何被黑客「摸底」盜取 450 萬美元
2024 年 1 月 3 日,Radiant Capital 項目遭受攻擊者閃電貸攻擊,攻擊者通過 3 筆交易盜取了超 1900 枚 ETH,價值超 450 萬美元,目前被盜資金還保存在攻擊者地址。
撰文:Beosin
2024 年 1 月 3 日,據 Beosin 旗下 EagleEye 安全風險監控、預警與阻斷平臺監測顯示,Radiant Capital 項目遭受攻擊者閃電貸攻擊。攻擊者通過 3 筆交易,盜取了超 1900 枚 ETH,價值超 450 萬美元,目前被盜資金還保存在攻擊者地址,Beosin 安全團隊第一時間對本次事件進行了分析。
漏洞分析
該事件發生的根本是由於 Radiant Capital 項目在計算代幣數量的過程中,使用了精度擴展,並且採用了四捨五入的方式進行計算,導致攻擊者可以通過控制精度大小,並結合四捨五入擴大利潤點來進行攻擊。

觀察上述代碼,rayDiv 函數傳入兩個 uint256 數據 a 和 b,整個過程可以簡寫為 (a*RAY+b/2)/b,其中 RAY 是精度擴展數據,為 10^27,那麼該結果相當於 a*RAY/b+0.5,實現四捨五入的功能,而該計算方式誤差主要來源於 b,如果 b 相對於 a 來說極小,那麼誤差將可忽略不計,但如果 b 於 a 擁有相同數量級,那麼誤差可能達到 a 本身。
舉個例子:如果 a*RAY=10000,b=3,那麼計算出來結果為 3333,比實際值小了 1/10000;而如果 a*RAY=10000,b=3000,計算出來的結果為 3,比實際值小了 1/10。
此次事件便是攻擊者操控 b 的值,讓 b 值與 a 值擁有相同數量級,使得計算等價於 3/2.0001=1,計算值比實際值減小 1/3。
攻擊流程
讓我們來看看黑客的攻擊流程:
1.攻擊者首先通過 AAVE 閃電貸借貸了 300 萬枚 USDC,用於攻擊啟動資金。

2.攻擊者將 200 萬枚 USDC 質押到 Radiant 合約,並獲得了 200 萬枚 rUSDCn 憑證代幣。

3.攻擊者通過 Radiant 合約進行閃電貸,借貸 200 萬 USDC,並在回調函數中將 200 萬 USDC 歸還,同時將第二步質押的 USDC 提取出來,最後閃電貸函數會調用 transferfrom 函數連本帶利的將攻擊者的 USDC 轉入合約。此時會收取 9/10000 的手續費,而收取的手續費便成為了池子的流動性。

4.攻擊者通過多次重複步驟 3 的操作,將 liquidityIndex 控制得很大,liquidityIndex=271800000000999999999999998631966035920。

5.接下來,攻擊者新建了一個合約,並向其中打入 54.36 萬 USDC,因為 5436(USDC 數值 ) 正好是步驟 4 中 2718(liquidityIndex 數值 ) 的兩倍,可方便進行四捨五入控制。

6.攻擊者將 54.36 萬 USDC 全部抵押進 Radiant 合約,並獲得相同數量的 rUSDCn。

7.攻擊者提取 40.77 萬 USDC,本應該銷燬 40.77 萬 rUSDCn,但如上所述,burn 函數進行了精度擴展與四捨五入計算。
407700000000000000000000000000000000000/271800000000999999999999998631966035920=1.49999999,而四捨五入結果為 1,導致結果偏小了 1/3。
如下圖,本該銷燬 40.77 萬,但還剩 27.18 萬,說明只銷毀了 27.18 萬,攻擊者便提取了 40.77 萬 USDC。

8.攻擊者利用第七步的漏洞,重複質押提取操作,並且提取始終比質押數量多 1/3,最終將池子裡的 USDC 全部兌換出來。

資金追蹤
截止發稿,被盜的 1902 枚 ETH 一直存在黑客地址未移動,Beosin Trace 將對資金進行持續監控。

隨著 2024 年的開啟,我們已目睹了兩起大金額的被盜案件的發生。(昨日安全事件回顧:開年第一案,被盜 8000 萬美元的 Orbit Chain 事件是怎麼一回事?)這一系列的事件再次提醒了我們,在 Web3 生態系統中,安全防範仍然是至關重要!
歡迎加入深潮 TechFlow 官方社群
Telegram 訂閱群:https://t.me/TechFlowDaily
Twitter 官方帳號:https://x.com/TechFlowPost
Twitter 英文帳號:https://x.com/BlockFlow_News














