DAO還安全嗎?Build Finance遭遇惡意治理接管,被洗劫一空!

買賣虛擬貨幣

成都鏈安鏈必應-區塊鏈安全態勢感知平臺輿情監測顯示,風投dao組織build finance專案遭遇治理攻擊。關於本次攻擊,成都鏈安技術團隊第一時間進行了分析。

#1事件概覽

據悉,build finance 是一個自我描述為“去中心化風險建設者”,其目標是透過獎勵代幣來激勵新專案。這個想法是用其原生 build 代幣為專案提供資金,作為回報,這些專案將採用 build 代幣來增加對它們的需求。此外,該專案由 dao 維護,也就是由一個去中心化組織參與治理。

但是,駭客卻悄悄搞起事情,該專案遭遇攻擊者惡意治理接管,駭客透過獲得足夠多的投票成功控制 build 代幣合約,在三筆交易中鑄造了超過10億的build 代幣,並耗盡了 balancer 和 uniswap 流動性池中的大部分資金。事發後,該專案團隊在推特建議使用者不要在任何平臺上購買 build 代幣,專案團隊成員試圖與攻擊者進行直接對話,但對方似乎沒有興趣對話。

看來專案方又遇到了一位“任性”的駭客。下面,跟著我們來看一下事件具體分析過程。

#2事件具體分析

round 1

透過對專案的交易追蹤,我們發現2022年2月12日build finance專案被攻擊者竊取了治理許可權,接著向0xdcc8a38a地址分三次鑄造了超過10億的build代幣。

然後0xdcc8a38a地址將這10億代幣透過uniswap v2: build兌換將專案方的交易池掏空。

觀察交易細節後,我們發現呼叫build 代幣合約mint函式鑄幣的地址也為0xdcc8a38a。

接著往下看,我們觀察下圖專案方的合約程式碼發現呼叫mint函式的地址只能為governance地址。此時鑄幣的地址為0xdcc8a38a,也就是說合約現在的governance許可權已經被0xdcc8a38a地址獲取了。

從程式碼中可以看到原本的governance許可權屬於合約的建立者即下圖的0x2cb037bd6b7fbd78f04756c99b7996f430c58172地址。

我們不禁要問,那麼governance許可權是如何轉移到0xdcc8a38a上的呢?

round 2

透過排查,我們透過2020年9月4日的一筆交易發現了線索,攻擊者只有透過se**overnance函式才能竊取governance的許可權。那麼在這期間合約建立者0x2cb037bd一定使用了se**overnance函式進行了許可權轉移。

透過查詢0x2cb037bd地址的交易記錄可見,在同一天建立者使用了se**overnance函式。交易hash為0xe3525247cea81ae98098817bc6bf6f6a16842b68544f1430926a363e790d33f2。

透過查詢內部的storage可見許可權轉移給了0x38bce4b45f3d0d138927ab221560dac926999ba6地址而不是上述的0xdcc8a38a攻擊地址。交易雜湊為:
0xe3525247cea81ae98098817bc6bf6f6a16842b68544f1430926a363e790d33f2。

透過繼續跟進0x38bce4b地址,發現是一個timelock合約,而合約中可以呼叫build 代幣合約函式的se**overnance函式只有executetransaction函式。

我們跟進executetransaction函式找到了其中的storage。

從上圖可見0x38bce4b45f3d0d138927ab221560dac926999ba6地址將許可權又轉移到了0x5a6ebeb6b61a80b2a2a5e0b4d893d731358d888583地址,交易雜湊為0x9a0c9d5d3da1019edf234d79af072c1a6acc93d21daebae4ced97ce5e41b2573,呼叫時間為2021年1月25日。

透過繼續跟進0x5a6ebeb6地址,在下圖可知在2022年2月9日由suho.eth發起的提案,0xdcc8a38a攻擊地址在2022年2月11日投票透過。在4天前將governance許可權變更為0xdcc8a38a。

suho.eth發起的提案變更governance,投票設定的閾值較低導致提案透過,透過call呼叫將build合約的governance更改為0xdcc8a38a地址。

0x5a6ebeb6b61a80b2a2a5e0b4d893d731358d888583地址部分程式碼。

此地址獲取governance許可權後,0xdcc8a38a地址透過build 代幣合約的mint函式向本身鑄造了大約10億的build代幣,隨後去交易池掏空流動性。

獲取許可權的流程圖為:

攻擊者利用類似的手法,從另外一個治理合約中轉走了該治理合約所持有的代幣資產。本次獲利共162個eth、20014個usdc 481405個dai、75719個ncr約為112萬美元。

最後,成都鏈安提醒:dao合約應該設定合適的投票閾值,實現真正的去中心化治理,避免很少的投票數量就使得提案透過併成功執行,建議可以參考openzeppelin官方提供的治理合約的實現。


免責聲明:

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

推荐阅读

;