Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

2022年10月27日,據歐科雲鏈鏈上衛士安全團隊監測,ETH鏈上的Team Finance專案遭受駭客攻擊,事故原因除攻擊中的合約漏洞外,Uniswap V3的遷移合約實施不嚴謹或是造成損失的主因之一。

編輯|小O

分析|鏈上衛士團隊

10月27日,成立於2020年的Team Finance在官方Twitter發聲,該協議管理資金在由Uniswap v2遷移至v3的過程中遭到駭客攻擊,損失達1450萬美元。

在事件發生後的第一時間,歐科雲鏈鏈上衛士團隊憑藉超200TB的鏈上資料量儲備,快速對駭客地址進行

資料追蹤、手法解析

,並及時透過官方渠道反饋Team Finance分析結果,避免鏈上損失態勢進一步擴大。

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

圖片源:Twitter

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

Team Finance安全事件覆盤

據悉,此次攻擊最早發生於2022年10月27日 07:22:35,駭客透過建立攻擊合約並建立一個攻擊token,隨後透過執行攻擊合約進行lockToken呼叫,並於08:29:23執行合約併發起攻擊交易。

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

圖片源:OKLink製圖

據鏈上衛士安全團隊分析,此次受到攻擊的專案方 Uniswap V2 池子有CAW(1150萬美元 )、TSUKA(170萬美元)、KNDX(70萬美元)、FEG(190萬美元)。

依託於

區塊鏈鏈上資料可溯源、不可篡改的特性

,鏈上衛士團隊將鏈上追蹤結果以圖表的方式展現,透過駭客資金流向圖,使用者可清晰地瞭解駭客盜取資金後的動態。

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

圖片源:OKLink製圖

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

Team Finance駭客手法覆盤

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

攻擊交易整體流程

#Step1:

攻擊者透過Team Finance的Proxy合約輸入攻擊引數:

準備盜取資金的物件:即需要遷移的幣對 FEG-WETH

而取回的幣對卻是駭客建立的無價值的token0: 0x2d4abfdcd1385951df4317f9f3463fb11b9a31df 和 有價值的token1: WETH

兩者的不一致,是導致該合約被攻擊的根本原因!

在這一步中,駭客首先透過lockToken鎖倉攻擊token,lockedToken變數會記錄鎖倉詳細資訊,其中關鍵欄位為withdrawAddress,該欄位存在可以滿足後續migrate的許可權判斷。

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

#Step2:

由於上述LP和輸入引數的token不匹配,且 noLiquidity 引數為 true,所以會在 Uniswap V3 中建立一個 token0 和 WETH 的流動性池。

#Step3:

Uniswap V3呼叫v3Migrator。migrate方法,遷移FEG-WETH流動性對。

在這一步中,Uniswap V3 Migrator合約在接收到Team Finance中傳入的引數,會遷移 Uniswap V2的LP,燃燒LP,獲取底層資產$FEG和$WETH,根據轉換引數只有1%進入V3 pool,其餘99%退還給傳送合約,Team Finance將返回到token(601個ETH)傳送給攻擊合約。

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

駭客呼叫 Team Finance 得合約進行LP遷移,利用 Step 1 中準備好的withdrawAddress和msgSender吻合,透過許可權檢查。

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

由於Team Finance的遷移邏輯沒有檢驗交易id與migrate params的相關關係,駭客透過上面校驗後,真正遷移的是駭客輸入的params引數。

該引數指定的migrate為與駭客鎖倉token無任何關係的FEG-WETH交易對,且遷移數量為 Team Finance 持有的全部LP(FEG-WETH),但引數指定只migrate 1%。

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

#Step4:

此外,相同手法對其它3個流動性池進行了攻擊:

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

Team Finance被黑分析|駭客自建Token“瞞天過海”,套1450萬美元

Team Finance事件總結

截至發稿前,駭客已返還涉事的四種Token以及$ETH和USDC到相關專案方,共計約1340萬美元。

此次攻擊事件,

漏洞的本質原因是對輸入引數的校驗邏輯有問題

。駭客透過鎖倉毫無價值的token,獲取了呼叫migrate介面的許可權。進一步呼叫Uniswap V3的migrate的引數,完全由駭客輸入,導致可以從其合約內遷移其他LP資產,結合Uniswap V3的migrate處理是首先燃燒所有LP資產,再按照輸入的percentage進行遷移,並返還剩餘資產,使得駭客可以透過只遷移1%資產,從而竊取剩餘99%的資產。

總而言之鏈上安全無小事,歐科雲鏈再次提醒:重要函式的引數校驗要仔細。建議

在專案上線前,選擇類似鏈上衛士的專業安全審計團隊進行全方位審計篩查,最大化規避專案上線後的安全風險