一朝跌落雲端,Yam Financial智慧合約漏洞事件分析 ​

買賣虛擬貨幣

紅薯剛種下,就得挖出來了?

今日DeFi領域再次發生一起魔幻事件,呼聲極高的紅薯專案一經上線,流動性礦工們就開始瘋狂湧入。短短8個小時內,Yam Finance中鎖倉總價值就超過2億美元。COMP挖礦帶動了DeFi產業出圈,而YAM直接帶動了DeFi頭部專案集體上漲,堪稱“一飛沖天”。

然而短短36小時內,眼見它高樓起,高樓塌。數億美元因為一個小小的漏洞,消失於無形。本以為反應遲鈍的自己損失了一個億,沒想到保住了自己的五塊錢。

好好的小紅薯,究竟承受了什麼?

事件背景

8月12日,YAM Finance官方宣佈他們發現了一個智慧合約漏洞,並稱該漏洞將生成超出最初設定數量的YAM代幣。在這種情況下,大量的保留代幣將造成治理操作所需的代幣數量過大。這意味著社羣將來將沒有足夠的代幣來執行任何治理操作。

智慧合約漏洞出現在哪裡?

該漏洞發生在YAM專案智慧合約YAM.sol的rebase功能上,如下圖所示:

圖片來源:

https://github.com/yam-finance/yam-protocol/blob/767e3a4a6918b6fb6100ad6bb356164408f5d82f/contracts/token/YAM.sol#L340

上圖中的rebase功能應該執行rebase,以保持穩定的價格。但是,有一行程式碼(已標註藍色)在計算totalSupply時,給出了錯誤的結果,這會導致系統保留的代幣數量過多。

這行程式碼的正確程式碼/計算方程形式應類似於以下程式碼/方程:

totalSupply =initSupply.mul(yamsScalingFactor).div(BASE);

那麼是否可以在截止日期之前透過治理操作來修復此漏洞?

第二次調整是在美國東部時間8月13日凌晨4點。

YAM Finance公開宣佈,在美東時間凌晨3點之前,他們需要約16萬YAM委託要求才能提交治理提案。如果在投票視窗中得到的委託超過40萬YAM,則該提案將允許使用者將YAM自行轉移或存入儲備池。

有一個好訊息是,YAM獲得了其社羣的大力支援,並且該提案已成功提交。但是,新提交的提案無法在智慧合約中執行,所以YAM目前依舊是一個不可管理的狀態。

YAM的現狀

YAM Finance目前已經失去了治理能力,75%的流動資金已經從YAM / yCRV未撥出資金池中移出。但是,其餘的流動資金將從儲備庫中刪除。

據官方訊息,Gate.io將為YAM Gitcoin捐贈,捐贈資金將被用於對YAM合約進行審計。審計完成後,YAM合約將遷移到YAM2.0。

如何避免?

CertiK安全團隊強烈建議:

所有區塊鏈專案在正式釋出之前不僅需要使用嚴格的軟體測試工具來驗證專案的程式碼安全性,更是應該邀請多個第三方區塊鏈安全團隊,做好對區塊鏈專案中程式碼的驗證審計工作,並在每次更新程式碼後進行重新審計。從而設計一個更好的專案管理系統,以備進行專案緊急更新的需求。

我們絕不僅僅是尋找漏洞,而是要消除哪怕只有0.00000001%被攻擊的可能性。

免責聲明:

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

推荐阅读

;