MakerDao緊急投票預防攻擊!這場危機可能與DeFi的生死有關
灑脫喜/張詠晴編譯
2020-02-21 14:50

幸運的是,由於當前相關DeFi協議池的流動性不足問題,這場危機並未發生,並且Maker可以透過治理安全模塊(GSM)簡單化解這場危機。但是,倘若研究者沒有和Maker團隊進行溝通,而是偷偷藏起來應用,那麼這場危機將對DeFi生態以及以太坊造成非常嚴重的後果。創新固然重要,但對金融要有敬畏之心。最後,希望MKR持有者在投票開啓後盡快啟動GSM,以真正化解這場危機。

(圖片來自:tuchong.com) 

最初閃電貸(Flash Loan)帶給人們的驚喜,已經慢慢變成了恐懼,這種顛覆式創新,已經打開了DeFi的潘多拉盒子。

本週,DeFi協議bZx連續遭遇兩次攻擊後,共計丟失了3571ETH(近90萬美元)資產,而在昨日,由倫敦帝國學院學者Dominik Harz撰寫的《竊取所有的Maker抵押物》一文,再次讓人們繃緊了神經。

據悉,這篇文章討論了如何透過閃電貸和Maker的治理缺陷,來竊取價值數億美金的抵押物,讓人擔心的是,其討論的內容並不是危人聳聽,而是為了提醒MakerDao官方做出防禦措施。

而對於潛在的攻擊,MakerDao官方不得不在本週五進行一次緊急投票,以便將治理攻擊的風險降到最低。

在一篇貼文中,MakerDao成員LongForWisdom寫道:

「最後,我要求MKR持有者做兩件事:

  1. 當本週五(東部時間中午12點)投票開始後,請及時審查,並認真考慮投票以盡快啟動GSM。
  2. 在週五之前投票贊成目前的hat提議。這是一份已通過的執行提案,它是在上週五前提出的。此提議的MKR越多,Maker協議就越不容易受到攻擊。當前的hat提案可以在這裡找到:https://vote.makerdao.com/executive-proposal/activate-the-savings-rate-spread-and-the-sai-and-dai-stability-fee-adjustments 129」

而攻擊方案的提出者Dominik Harz也提醒道:「目前,由於流動性缺失,人們還無法使用閃電貸進行攻擊。但是,如果閃電貸池的流動性變得足夠高,攻擊是完全可能發生的。而通過GSM引入延遲,可以防止閃電貸攻擊。事實上,我更希望有一個特別小組,24小時不間斷地工作,來解決這個問題……他們所能做的最好的事情,就是在mempool中檢測到閃電貸交易,並在攻擊者之前嘗試一筆交易,以防止攻擊。」

攻擊的大致思路和可行性

據悉,去年12月Micah Zoltu曾提出了Maker的治理缺陷,之後Maker官方嘗試透過新的治理規則(將延遲時間從0增加到24小時)來應對這一問題,但最後的投票結果卻是沒有通過。

而隨著閃電貸方案的出現,新的攻擊策略也出現了,因為理論上它可以取消大量MKR代幣的要求,以極低的成本(交易費用)完成攻擊。

而研究者Dominik Harz等人在《去中心化金融的危機:攻擊DeFi》這一論文中,提出了兩種攻擊方案:

  1. 由Micah Zoltu提出的Maker治理缺陷啟發的攻擊策略,而要在2個區塊內秘密執行,這需要攻擊者鎖定約2750萬美元的抵押品;
  2. 一種新的攻擊策略,允許攻擊者在兩筆交易中累積Maker抵押品,這只需要預付幾美元的gas費;

那這個所謂的治理缺陷是什麼呢?

簡單說,Maker的治理過程依賴於MKR代幣,參與者擁有與其持有的MKR代幣數量成比例的投票權。而透過執行投票,參與者可以選擇一個執行合約,定義一套管理該系統的規則,也就是說,被選定的合約,是唯一允許操縱資金的實體,而如果是一個惡意的合約被選中,它可能會竊取所有作為抵押品鎖定的資金。

而要保護執行投票,有兩種防禦機制:

  1. 治理安全模塊(GSM),增加延遲時間(目前依舊為0);
  2. 緊急關閉機制,它允許一組持有足夠數量MKR的參與者停止系統(此操作需要5萬 MKR的恆定池);

講完防禦機制,再來談攻擊大致的思路:

惡意方可以在以下兩個選項中進行選擇,以累積治理攻擊所需的資本。

1、眾籌:眾籌MKR代幣可允許用戶將其代幣鎖定在合約中,並對合約進行編程,以便在達到所需MKR代幣數量時,將其所有資金投入惡意執行合約,這將允許多方在此類攻擊中進行無需信任的合作,同時保持對其資金的控制,並確保他們參與攻擊後得到回報。而眾籌攻擊存在的最大缺點是,這需要在參與者之間進行協調,而正義的MKR成員可能會警覺。

2、而隨著閃電貸的引入,新的攻擊方案也浮現了出來,閃電貸的運作方式如下:一方創建一個智慧合約,該合約(i)接受貸款,(ii)執行一些操作,(iii)償還貸款和利息。

有趣的是,如果在步驟(ii)行動執行失敗或步驟(iii)貸款的支付無法完成,則EVM會將此貸款視為從未發生。因此,假設Aave等協議中有足夠的可用流動性,攻擊者可以在步驟(ii)中執行MKR治理攻擊,如果成功,則在步驟(iii)中償還閃電貸和利息。

由於閃電貸不需要抵押品,攻擊者的資金鎖定成本就大大降低了,假設這些DeFi池中有足夠的可用流動性,攻擊者甚至不需要鎖定任何代幣。

另外,研究者還發現,攻擊者可能會結合眾籌和閃電貸來進行攻擊,而在可行性分析部分,他們還提到,目前全網持有MKR代幣的帳戶大約有5000多個,總共涉及的代幣數略高於27.2萬MKR。

為了不引起注意,攻擊者可能會把累計的代幣分散在多個帳戶當中(例如100個,每個帳戶平均500MKR),這種方法的缺點之一是要求從這100個帳戶中進行投票,而投票應在盡可能短的時間內進行。

而對一個合約進行投票平均要花費69000 gas,這意味著用投票交易填滿一個區塊的一半,就可以允許72個合約以上的投票,根據當前以太坊gas價格計算,用交易填滿半個區塊僅需10美元,這意味著攻擊者可以輕鬆地在兩個區塊內執行整個攻擊。而在第二個區塊中,攻擊者可以完成對其惡意合約的投票,並執行合約中的攻擊,對於其它人而言,這只留下了一個區塊的時間(不到15秒)以供反應。

而關於攻擊所需流動性的判斷,研究者在論文中提到:「截至2020年2月14日,Aave的流動性池中約有13670 ETH可用,並以每天約219.5 ETH的速度成長。如果我們估計可用流動性池會有類似的持續成長,那麼這大概需要1663天才能執行治理攻擊,而攻擊者不需要擁有任何代幣。然而,目前Aave的ETH成長率為每天5.18%,假設這一成長率持續下去,只需要66天,Aave的流動性就足夠被攻擊者利用。我們還注意到,如果觀察到的DEX上的MKR的流動性增加,攻擊者可以獲得更好的匯率。因此,其需要借用的ETH就可以更少,從而縮短攻擊發生的時間。」

攻擊潛在盈利和風險分析

在眾籌策略下,攻擊的利潤就可以在出資人之間進行平分,而唯一的成本就是20美元的交易費用,而作為回報,攻擊者可奪走MakerDAO當前434873 ETH的抵押品以及1.45億DAI。

而在流動性池和閃電貸方案下,攻擊者需要以0.35%的利率償還攻擊所需閃電貸的378940 ETH貸款,這筆利息相當於1326.29 ETH,此外還涉及兩筆交易的gas費用,然後,在攻擊結束時,攻擊者將擁有約55933(434873-378940)ETH、50000 MKR以及1.45億 DAI。

而為了防止攻擊失敗,攻擊者可以設計攻擊智慧合約,以便在無利可圖時將其還原,這使得攻擊者從成本角度看基本是沒有風險的。

此外,有鑒於DeFi協議當前存在的無限制可組合性,金融傳染的可能性分析就變得尤其重要。因此,研究者認為,假設以上兩個缺陷被攻擊者利用,就會導致危機蔓延到其它DeFi協議,從而可能引發去中心化金融的危機。

灑脫喜簡評:幸運的是,由於當前相關DeFi協議池的流動性不足問題,這場危機並未發生,並且Maker可以透過治理安全模塊(GSM)簡單化解這場危機。但是,倘若研究者沒有和Maker團隊進行溝通,而是偷偷藏起來應用,那麼這場危機將對DeFi生態以及以太坊造成非常嚴重的後果。創新固然重要,但對金融要有敬畏之心。最後,希望MKR持有者在投票開啓後盡快啟動GSM,以真正化解這場危機。

本文為巴比特資訊授權刊登,原文標題為「MakerDao緊急投票預防治理攻擊,這場危機或關係到DeFi的生死