16 萬美元資產被盜竟是烏龍事件? | Yeld.finance“閃電貸攻擊”事件簡析

買賣虛擬貨幣

事件概覽

北京時間 2021 年 2 月 27 日, 【鏈必安-區塊鏈安全態勢感知平臺(Beosin-OSINT)】 輿情監測到,DeFi 知名專案 Yeld.finance 官方發出通告,表示該專案的 DAI 池遭受到閃電貸攻擊,原文連結如下:

https://yeldf.medium.com/the-yeld-dai-earn-vault-has-been-hacked-93f27d475b1b

成都鏈安(Beosin)安全團隊第一時間介入響應,對原文中所提及的交易

(0x57b378f8d20d3945ab40cd62aa24063f375bcfc5693c2e788dc193ffa1a5cc3a) 進行分析。經分析後發現,該筆交易為 Yeld.finance 專案自身的策略機制 而導致的資金轉移,與 閃電貸攻擊 無關。閃電貸攻擊表示不背這個鍋。

事件分析**

圖 1 交易資訊

如圖 1 所示,該筆交易是名為 0xf0f225e0 的使用者,呼叫了 0xe780cab7ca8014543f194fc431e6bf7dc5c16762 合約的 deposit 函式 。經確認,0xef80cab7 合約正是專案方的 DAI 池。該筆交易一共產生了 6 筆 代幣轉移,分別用 T1 到 T6 表示。那麼,這些 代幣轉移 究竟是什麼操作導致的呢?下面透過程式碼進行分析:

圖 2 deposit 函式原始碼

很明顯,第 538 行程式碼,產生導致了序號為 T1 的代幣轉移,將 token (即 DAI)轉移到 yDAI 合約。這是一筆普通的代幣轉賬,表示使用者存入了 9,377 DAI 到 yDAI 合約。

第 541-553 行程式碼,是 yDAI 合約用於計算使用者存入的 DAI 應返回給使用者多少 yDAI,並在第 554 行進行鑄幣,對應序號為 T2 的代幣轉賬,表示 yDAI 合約向使用者鑄了 9,306 yDAI 。

然後進入第 555 行的 rebalance 函式 ,分析該函式的邏輯。

圖 3 rebalance 函式原始碼

圖 4 recommend 函式

第 732 行程式碼會計算 newProvider,該函式會呼叫 recommend 函式 (如圖 4 所示),recommend 函式會呼叫 IEarnAPRWithPool 合約查詢 4 個 Defi 專案 DYDX,COMPOUND,AAVE,FULCRUM 中,年利率 (APR) 最高的專案,查詢結果如圖 5 所示:

圖 5 recommend 查詢結果

其中 dYdX 池 的 APR 最高,newProvider 被設定為 dYdX 池。當前池為 AAVE 池,進入 736 行的 if 程式碼塊,呼叫 內部函式_withdrawAll 。

圖 6 _withdrawAll 函式原始碼

第 778 行程式碼將會提出 AAVE 池中的所有 DAI,產生了序號為 T3-T5 的代幣轉移,具體程式碼可參考 AAVE(0xfC1E690f61EFd961294b3e1Ce3313fBD8aa4f85d) 合約 redeem 函式相關程式碼,此處不再詳述。

最後是第 741 行程式碼,將從 AAVE 中提出的 16.6 餘萬枚 DAI 存入 dYdX 合約,產生了序號為 T6 的代幣轉移,即將 16.6 萬枚 DAI 存入 dYdX 池。

整個交易就此結束,可以看到,這次所謂的「閃電貸攻擊」只是「虛驚一場」 。使用者只是單純的存入了一筆 DAI,然後剛好觸發了 Yeld.finance 專案的策略機制,並不是所謂的「閃電貸攻擊」,可謂是鬧了場「烏龍事件」。

值得注意的是,dYdX 在該事件中充當了一個「良心商家」的角色,並不是以往閃電貸攻擊中的幫兇。

安全建議

儘管本次事件經成都鏈安(Beosin)安全團隊分析後被判斷為虛假一場,但在這裡還是有必要提醒各專案方,依然需要在日常的安全防護工作中,對閃電貸攻擊 加以預警和防範 。

同時,作為 致力於區塊鏈生態安全建設 的成都鏈安(Beosin)也在此建議,專案方的安全預警機制和安全加固工作切不可等閒視之。尋求第三方安全公司的力量,搭建 覆蓋全生命週期的一站式安全解決方案 方為萬全之策。

免責聲明:

  1. 本文版權歸原作者所有,僅代表作者本人觀點,不代表鏈報觀點或立場。
  2. 如發現文章、圖片等侵權行爲,侵權責任將由作者本人承擔。
  3. 鏈報僅提供相關項目信息,不構成任何投資建議

推荐阅读

;