損失約900萬美元——WOOFi 攻擊分析
來源:深圳零時科技
背景介紹
2024年3月5日,我們監測到一筆arbitrum鏈上的異常交易:https://arbiscan.io/tx/0xe80a16678b5008d5be1484ec6e9e77dc6307632030553405863ffb38c1f94266
經分析,我們發現是一次針對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代幣。建議項目方在設計經濟模型和代碼運行邏輯時要多方驗證,合約上线前審計時盡量選擇多個審計公司交叉審計。
鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播信息之目的,不構成任何投資建議,如有侵權行為,請第一時間聯絡我們修改或刪除,多謝。