比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads
首頁 > Filecoin > Info

MAKE:MakerDAO治理合約升級背后的安全風波

Author:

Time:1900/1/1 0:00:00

北京時間2019年05月07日,區塊鏈安全公司Zeppelin對以太坊上的DeFi明星項目MakerDAO發出安全預警,宣稱其治理合約存在安全漏洞,希望已鎖倉參與投票的用戶盡快解鎖MKR提并出。MakerDAO的開發者Maker公司亦確認了漏洞存在,并上線了新的治理合約,并宣稱漏洞已修復。

該安全威脅曝出后,PeckShield全程追蹤了MKR代幣的轉移情況,并多次向社區發出預警,呼吁MKR代幣持有者立即轉移舊合約的MKR代幣。截止目前,絕大多數的MKR代幣已經完成了轉移,舊治理合約中尚有2,463個MKR代幣待轉移。

05月07日當天,經PeckShield獨立研究發現,確認了該漏洞的存在,具體而言:由于該治理合約實現的投票機制存在某種缺陷,允許投票給尚不存在的slate。等用戶投票后,攻擊者可以惡意調用free()退出,達到減掉有效提案的合法票數,并同時鎖死投票人的MKR代幣。

MakerDAO聯創:MakerDAO可能會選擇出售協議中的所有USDC:金色財經消息,MakerDAO聯合創始人Rune Christensen在Discord中表示,MakerDAO可能會選擇出售協議中所有的USDC敞口,此舉可能會引發DAI與美元脫鉤,需要針對該情況做好準備。根據Maker burn的數據顯示,目前DAI背后的抵押資產中80%為穩定幣,60%為USDC。Rune Christensen認為脫鉤是一個可接受的風險,將在治理電話會議中討論此事,最近美國財政部對Tornado Cash的制裁是考慮脫鉤的原因,制裁比他最初考慮的要嚴重,在制裁后凍結了Tornado Cash現金錢包中的USDC資金。(TheBlock)[2022/8/12 12:20:30]

次日05月08日,PeckShield緊急和Maker公司同步了漏洞細節,05月10日凌晨,MakerDAO公開了新版合約。Zeppelin和PeckShield也各自獨立完成了對其新合約的審計,確定新版本修復了該漏洞。

Maker協議中多抵押Dai總供應量超11億枚,創歷史新高:12月30日消息,Maker協議中多抵押Dai的全部供應量超11億枚,創歷史新高,其中抵押ETH-A生成的Dai總量為4.86億枚,占比為42.3%,抵押USDC-A生成的Dai總量為4.46億枚,占比為38.84%。[2020/12/30 16:05:33]

在此我們公布漏洞細節與攻擊手法,也希望有引用此第三方庫合約的其它DApp能盡快修復。

細節

在MakerDAO的設計里,用戶是可以通過投票來參與其治理機制,詳情可參照DAO的FAQ。

以下是關于itchyDAO的細節,用戶可以通過lock/free來將手上的MKR鎖定并投票或是取消投票:

MakerDAO發起有關加快啟動錨定穩定模塊的治理投票:MakerDAO治理協調員已代表Maker Governance社區將一項治理投票納入投票系統,以使Maker Governance有機會表達支持或反對加快錨定穩定模塊(PSM)的啟動。該治理投票將從11月24日00:00開始持續3天。如果“是”選項的票數超過“否”選項的票數,將采取以下措施:

1. 域團隊將優先考慮PSM,并計劃于12月18日啟動;

2. 將發布一個論壇帖子,以跟蹤PSM的技術審核和風險評估的狀態;

3. 不再采用“穩定幣行動計劃-選項3”。

反之,將采取以下措施:

1. 將繼續采用“穩定幣行動計劃-選項3”;

2. 將進行一次額外的民意調查;

3. 可能會通過常規的每月MIP周期添加PSM,也可能不會添加PSM。[2020/11/24 21:52:49]

在lock鎖定MKR之后,可以對一個或多個提案(address數組)進行投票:

動態 | 區塊鏈就業平臺獲得MakerDAO的開發人員資助:基于區塊鏈的就業平臺Opolis宣布已獲得MakerDAO的資助。MakerDAO提供的開發人員資助將使Opolis能夠處理DAI付款,讓公司和自由職業者選擇支付DAI,并允許Opolis會員通過DAI支付會員費。(cointelegraph)[2019/9/18]

注意到這里有兩個vote函數,兩者的傳參不一樣,而vote(addressyays)最終亦會調用vote(bytes32slate),其大致邏輯如下圖所示:

簡單來說,兩個vote殊途同歸,最后調用addWeight將鎖住的票投入對應提案:

可惜的是,由于合約設計上失誤,讓攻擊者有機會透過一系列動作,來惡意操控投票結果,甚致讓鎖定的MKR無法取出。

這里我們假設有一個從未投過票的黑客打算開始攻擊:

1、調用lock()鎖倉MKR,此時deposits會存入鎖住的額度。

2、此時黑客可以線下預先算好要攻擊的提案并預先計算好哈希值,拿來做為步驟3的傳參,因為slate其實只是address數組的sha3。

這里要注意挑選的攻擊目標組合必須還不存在于slates中(否則攻擊便會失敗),黑客亦可以自己提出一個新提案來加入組合計算,

如此便可以確定這個組合必定不存在。

3、調用vote(bytes32slate),因為slate其實只是address數組的sha3,黑客可以線下預先算好要攻擊的提案后傳入。

這時因為votes還未賦值,所以subWeight()會直接返回。接下來黑客傳入的sha3(slate)會存入votes,之后調用addWeight()。從上方的代碼我們可以看到,addWeight()是透過slates取得提案數組,此時slates獲取到的一樣是未賦值的初始數組,所以for循環不會執行

4、調用etch()將目標提案數組傳入。注意etch()與兩個vote()函數都是public,所以外部可以隨意調用。這時slates就會存入對應的提案數組。

5、調用free()解除鎖倉。這時會分成以下兩步:

deposits=sub(deposits,wad),解鎖黑客在1.的鎖倉

subWeight(wad,votes)

從對應提案中扣掉黑客的票數,然而從頭到尾其實攻擊者都沒有真正為它們投過票。

從上面的分析我們了解,黑客能透過這種攻擊造成以下可能影響:

一、惡意操控投票結果

二、因為黑客預先扣掉部份票數,導致真正的投票者有可能無法解除鎖倉

時間軸

時間

事件

2019.05.07

PeckShield復查并確認了漏洞存在

2019.05.08

PeckShield與Maker基金會討論并確認了漏洞細節

2019.05.09

Maker基金會公布新版DSChief合約源碼,PeckShield披露了漏洞相關細則

*文章為作者獨立觀點,不代表BSCEC立場

轉載此文章須經作者同意,并請附上出處及本頁鏈接。原文鏈接https://mp.weixin.qq.com/s?__biz=MzU3MTU2NTU1MA==

Tags:MAKEMakerDAOMakerDAOmakeupchainRainmaker GamesETF DAOmakerdao官網app

Filecoin
區塊鏈:產業互聯網:區塊鏈下一階段的主戰場

從17年到18年上半年,區塊鏈開始被全社會認知,但18年下半年其仿佛進入了“暗夜潛行的階段”,無論是幣市還是區塊鏈的熱度都開始回潮.

1900/1/1 0:00:00
Serve:令牌IEO系列之Reserve Protocol(火幣 2019\/5\/22)

Reserve協議的最初版本將包含一種總體而言中心化的與法幣錨定的數字貨幣,隨著時間的推移,每個協議組成部分將逐漸轉移到鏈上,并逐漸離開創始團隊的控制,最終變得完全去中心化.

1900/1/1 0:00:00
JEX:JEX上線周NEO期權0528公告

NEO看漲期權 代碼周NEO看漲0528期權標的NEO合約類型歐式看漲期權計價單位USDT最小價格單位0.0001USDT合約比例1:1.

1900/1/1 0:00:00
以太坊:以太坊代幣「假充值」漏洞細節披露及修復方案

鏈聞ChainNews:上周,慢霧披露的以太坊代幣「假充值」漏洞,可謂一石激起千層浪,這次漏洞影響到相當數量的交易所和中心化錢包等,影響范圍廣泛。本文為你深入解析這次漏洞的前因后果.

1900/1/1 0:00:00
XGP:XGP上線幣客交易所

尊敬的BITKER用戶:BITKER將于2019年4月23日17點正式開放XGP/USDT和XGP/BTC交易對。充提以開放我們的使命是改變人們每天購買和生產商品和服務的方式.

1900/1/1 0:00:00
比特幣:比特幣行情|BTC現價7891.12美元

據巴比特App數據顯示,截至05月21日09:00,比特幣當前價格為$7891.12(¥55395.66),上漲0.1%,換手率為16.49%,比特幣市值占比56.9%.

1900/1/1 0:00:00
ads