搬起“石頭”,竟砸了自己的腳? | DODO攻擊事件分析

買賣虛擬貨幣

一、事件概覽

北京時間2021年3月9日,根據【鏈必安-區塊鏈安全態勢感知平臺(beosin-eagle eye)】輿情監測顯示,去中心化交易所dodo上的wcres/usdt資金池似乎被駭客攻擊,轉移走價值近98萬美元的wrapped cres(wcres)和近114萬美元的usdt。據dodo官方回覆目前團隊正在進行調查。原文連結如下:
https://www.odaily.com/newsflashes/235047.html

圖1

成都鏈安(beosin)安全團隊第一時間針對該事件啟動安全應急響應,並將事件細節分析進行梳理,以供參考。其實,該事件本身來說並不複雜,其攻擊流程也非常簡單。但因該事件涉及到“閃電貸”“重入攻擊”等熱門話題,因此成都鏈安認為有必要對該事件進行發聲。

二、事件分析

該事件的攻擊原因主要在於合約的init函式未進行限制,從而導致攻擊者有權利進行呼叫,如圖2所示:

圖2

經分析,攻擊者利用了dodo合約中提供的閃電貸工具,首先向合約轉移了兩種空氣幣。緊接著,發起了一筆閃電貸交易。在交易結束之前,呼叫合約的init函式將幣種指向空氣幣,從而躲過了閃電貸的歸還校驗,如圖3所示。

圖3

三、安全建議

成都鏈安(beosin)安全團隊認為,本起事件並不複雜,但值得敲響警鐘,引起廣大專案方的注意。具體而言,首先是dodo的閃電貸函式是進行了重入校驗的,但由於init函式並沒有新增重入校驗,所以導致了類似重入攻擊的發生。

另外,結合成都鏈安審計團隊以往對專案方的安全審計經驗,由於目前程式碼的複雜度越來越高,模組化也隨之越來越多,有許多專案方雖然都使用了init函式進行管理,但需要提醒的是,init函式在solidity中也僅僅只是一個普通函式,在此呼籲廣大專案方與開發者引起重視。切記,不要誤以為取名為“init”,就只能進行一次呼叫。

同時,我們建議,在日常的安全防護中,專案方也需要做好事無鉅細的安全加固工作;透過藉助第三方安全公司的專業力量,採用“形式化驗證與人工稽覈”結合的複合式審計方法,方能實現對專案面面俱到的全方位護航。

免責聲明:

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

推荐阅读

;