熱點丨SushiSwap智慧合約漏洞事件分析

買賣虛擬貨幣

近期《哈利波特與魔法石》3D版本回歸熱映,不知道大家有沒有注意到那個傳說從未發生過盜竊事件的由妖精監管的魔法世界銀行——古靈閣。

也許你心想,要是有這樣一個保管財富的機構在現實世界中就好了。

然而(劇透預警),在《哈利波特與死亡聖器》當中,從來沒有被入侵過的古靈閣世界被盜了——主角們透過了在銀行內部工作的妖精,打破了古靈閣從未被盜的記錄。

一個優質的金融系統,不僅需要對外堅不可摧,同時對內也要保證不會因專案方自己的意願,從而有竊取客戶財產的可能。

SushiSwap漏洞事件簡介

北京時間8月28日,CertiK安全研究團隊發SushiSwap專案智慧合約中存在多個安全漏洞。該漏洞可能被智慧合約擁有者利用,允許擁有者進行包括將智慧合約賬戶內的代幣在沒有授權的情況下取空等操作在內的任意操作。同時該專案智慧合約還存在嚴重的重入攻擊漏洞,會導致潛在攻擊者的惡意程式碼被執行多次。

技術解析

MasterChief.sol:131

圖片來源

https://github.com/sushiswap/sushiswap/blob/master/contracts/MasterChef.sol

在SushiSwap專案MasterChief.sol智慧合約的131行中,智慧合約的擁有者可以有許可權來設定上圖中migrator變數的值,該值的設定可以決定由哪一個migrator合約的程式碼來進行後面的操作。

MasterChief.sol:136 。

圖片來源

https://github.com/sushiswap/sushiswap/blob/master/contracts/MasterChef.sol

當migrator的值被確定之後(如上圖中142行程式碼顯示),migrator.migrate(lpToken)也就可以被隨之確定。由migrate的方法是透過IMigratorChef的介面來進行呼叫的,因此在呼叫的時候,migrate的方法中的邏輯程式碼會根據migrator值的不同而變化。

簡而言之,如果智慧合約擁有者將migrator的值指向一個包含惡意migrate方法程式碼的智慧合約,那麼該擁有者可以進行任何其想進行的惡意操作,甚至可能取空賬戶內所有的代幣。

同時,在上圖142行中migrator.migrate(lpToken)這一行程式碼執行結束後,智慧合約擁有者也可以利用重入攻擊漏洞,再次重新執行從136行開始的migrate方法或者其他智慧合約方法,進行惡意操作。

該漏洞的啟示(劃重點)

智慧合約擁有者不應該擁有無限的權利,必須透過社羣監管及治理(governance)來限制智慧合約擁有者並確保其不會利用自身優勢進行惡意操作。

智慧合約程式碼需要經過嚴格的安全驗證和檢查之後,才能夠被允許公佈。

當前SushiSwap專案建立者表示,已將該專案遷移到時間鎖定(Timelock)合約,即任意SushiSwap專案智慧合約擁有者的操作會有48小時的延遲鎖定。

在此CertiK技術團隊建議大家在智慧合約公佈前,儘量尋找專業團隊做好審計工作,以免專案出現漏洞造成損失。

免責聲明:

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

推荐阅读

;