DODO攻擊事件分析|零時科技

買賣虛擬貨幣

事件背景

dodo是基於主動做市商演算法的下一代鏈上流動性基礎設施。dodo作為一個去中心化交易平臺,採用資金池模式,純鏈上交易。支援新資產的無成本發行。

零時科技區塊鏈安全情報平臺監控到訊息,北京時間2021年3月9日,dodo官方發推稱dodo v2資金池wcres/usdt遭到駭客攻擊,已暫時禁用dodo上的資金池建立,並表示其他資金池都是安全的。

  • 零時科技安全團隊對該安全事件進行復盤分析。

事件分析

透過初步分析,dodo v2資金池遭攻擊事件中涉及的地址如下:

被攻擊的dlp合約地址:https://cn.etherscan.com/address/0x051ebd717311350f1684f89335bed4abd083a2b6#code

攻擊交易:https://cn.etherscan.com/tx/0x395675b56370a9f5fe8b32badfa80043f5291443bd6c8273900476880fb5221e

攻擊者地址:https://cn.etherscan.com/address/0x368a6558255bccac517da5106647d8182c571b23

攻擊者合約:https://cn.etherscan.com/address/0x910fd17b9bfc42a6eea822912f036ef5a080be8a#code

空氣幣fusdt:https://cn.etherscan.com/token/0xf2df8794f8f99f1ba4d8adc468ebff2e47cd7010

空氣幣 fdo:https://cn.etherscan.com/token/0x7f4e7fb900e0ec043718d05caee549805cab22c8

初步瞭解後,繼續透過bloxy.info分析交易詳情,如下圖:

詳細步驟如下:

一 . 攻擊者首先透過getvaultreserve()函式獲取了目前合約中的兩個token地址。

二 . 透過transferfrom()函式給dlp合約分別轉入13萬fdo和115萬fusdt(攻擊者地址之前的幾筆交易已對資金進行approve授權)。

三 . 接下來進行閃電貸,攻擊者透過flashloan()函式進行閃電貸,得到13萬枚wcres和113萬枚usdt。

以上操作均沒有問題,攻擊者對傳入的幣種進行閃電貸,獲取貸款的資產。

那麼問題出在哪?繼續來看攻擊者進行閃電貸的後續操作:

四 . 攻擊者呼叫init()函式將自己的空氣幣fdo和fusdt地址作為basetokenaddress和quotetokenaddress引數傳入,也就是之前貸款的兩個token地址wcres和usdt。

問題就出在這裡,正常情況下init()函式是在合約部署初始化時呼叫,那麼這裡為什麼攻擊者能夠成功呼叫,接下來分析init()函式的合約程式碼怎麼寫的:

上圖中可以看到dvm合約中,存在init()函式對池子進行初始化設定操作,但該函式並不是只呼叫一次,也不是隻有內部呼叫的internal屬性,而是external屬性,就是說可以進行外部呼叫。那麼攻擊者可以呼叫該函式就不奇怪了。

我們繼續分析,攻擊者將init()的token地址重新傳入自己的空氣幣fdo和fusdt地址有什麼好處。

由於在之前的操作中,攻擊者將這兩種空氣幣(13萬fdo和115萬fusdt)轉入被攻擊合約,之後進行閃電貸獲取了貸款(13萬枚wcres和113萬枚usdt),在閃電貸的操作中又重新呼叫被攻擊合約的init()函式,並在之前合約token地址(wcres和usdt )處,傳入兩種空氣幣(fdo和fusdt)的token地址,這裡就是問題所在。

由於攻擊者進行閃電貸時傳入了空氣幣fdo和fusdt,借走cres和usdt,當原始的cres和usdt地址修改成空氣幣fdo和fusdt地址,攻擊者還款時就還的是空氣幣fdo和fusdt,也就達成了攻擊者使用空氣幣借款並還款的目的。最終盜走13萬枚wcres和113萬枚usdt,資金流轉交易如下圖:

總結

該攻擊事件中,主要利用dodo合約中可重新初始化漏洞,盜取了13萬枚wcres和113萬枚usdt的鉅額資產。這類問題主要是智慧合約開發人員對函式呼叫沒有進行嚴格校驗,導致init()函式可重新呼叫。在零時科技安全團隊審計過程中也曾出現過此類重複呼叫問題,並及時和專案方人員對接,規避了此類問題的發生。

安全建議

defi今年確實備受關注,駭客攻擊也不斷髮生,包括harvest finance,value defi,akropolis,cheese bank和origin dollar等均受到不同程度的駭客攻擊。針對頻頻發生的駭客攻擊事件,我們給出以下的安全建議

  • 在專案上線之前,找專業的第三方安全企業進行全面的安全審計,而且可以找多家進行交叉審計;
  • 可以釋出漏洞賞金計劃,傳送社羣白帽子幫助找問題,先於駭客找到漏洞;
  • 加強對專案的安全監測和預警,儘量做到在駭客發動攻擊之前釋出預警從而保護專案安全。

零時科技

專注為客戶提供全方位區塊鏈安全解決方案及審計服務 深圳零時科技有限公司是一家專業的區塊鏈安全漏洞風險檢測與安全防禦、企業級區塊鏈應用創新解決方案提供商。 公司團隊深耕網路安全攻防十餘年,並深入研究區塊鏈安全實戰經驗豐富,旨在為客戶提供全方位的安全審計服務及安全解決方案。


免責聲明:

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

推荐阅读