損失約900萬美元——WOOFi 攻擊分析

來源:深圳零時科技

背景介紹

2024年3月5日,我們監控一筆arbitrum鏈上的異常交易:https://arbiscan.io/tx/0xe80a16678b5008d5be1484ec6e9e777dc630763203055340586326c1

經分析,我們發現是針對WOOFi的攻擊事件,事件共造成約900萬美元的損失。

WOOFi是由WOO Network建構的一體化去中心化應用程式(DApp)。 WOOFI旨在透過提供超低滑點、具競爭力的兌換費用以及其他有用功能,優化用戶對去中心化金融(DeFi)的體驗。

WOOFi用戶可兌換熱門數位資產,還有機會透過質押和提供網路流動性來賺取收入。 WOOFi平台為DeFi用戶打造的一大價值主張是深度流動性。

本次受攻擊的為WOOFi中的swap合約,合約網址為:https://arbiscan.io/address/0xeff23b4be1091b53205e35f3afcd9c7182bf3062#code

攻擊及事件分析

攻擊者從Uniswap、TraderJoe中利用flashLoan獲得攻擊初始資金,共10504796 USDC.e和2721172 WOO。

隨後,攻擊者將藉來的USDC.e在Slio Finance中抵押(共抵押7000000 USDC.e),借出5092663 WOO。

圖片

接著,攻擊者利用剩下的USDC.e透過WOOFi的swap功能,兌換為WOO,因此拉高WOO的價格。

圖片

經過3次swap操作,將WOO的價格由56884100拉高到了60400479,為後續的攻擊創造了條件。

真正的攻擊發生在攻擊者將WOO兌換為USDC.e時,

圖片

可以看到,經過此次swap,WOO的價格變成了7,即0.00000007 USD。對比之前的價格暴跌了862萬倍。

透過查看合約程式碼我們發現,WOOFi合約中在進行將BaseToken兌換為QuoteToken時存在資料處理缺陷。

圖片

我們看賣出BaseToken拿到QuoteToken時,BaseToken的價格計算方法

newPrice = (1 – 2 * k * oracle.price * baseAmount) * oracle.price

攻擊者可以控制oracle.price和baseAmount,因為k值不變。攻擊者可以透過多次swap操縱oracle.price即BaseToken的價格,並且可以操縱baseAmount。由這個公式可以看出,newPrice必定小於oracle.price。所以,攻擊者可以控制oracle.price和baseAmount的組合,將newPrice操縱到極低。

最後,攻擊者利用小額的USDC.e兌換出了大量的WOO,歸還借貸本金並套現。

2天后,WOOFi官方人員與攻擊者溝通,表示可以提供10%作為Whitehat獎金。不過截至發文時,攻擊者還未歸還被竊資金。

圖片

隨後,官方修復了這個問題,可以看到,官方修復的方式就是取消了2倍的係數。 https://github.com/woonetwork/WooPoolV2/commit/f5fe28acc77cf3801ac379db9bf99bb61b73ba17

圖片

總結

這次漏洞的成因是經濟模型計算存在漏洞,攻擊者可以控制價格的買賣數量從而使Token價格大幅縮水,最終導致攻擊者用極少的USDC.e掏空了專案方的WOO代幣。建議專案方在設計經濟模型和程式碼運作邏輯時要多方驗證,合約上線前審計時盡量選擇多個審計公司交叉審計。

Total
0
Shares
Related Posts