閃貸策略:攻擊者能取走Maker的7億美元抵押品嗎?

買賣虛擬貨幣

前言:自從bZx事件之後,閃貸逐漸為大家熟悉。如果利用閃貸對Maker進行治理攻擊,會發生什麼情況?閃貸之前,要發起治理攻擊的成本很高,可能會採用眾籌策略,而有了閃貸,只要流動池中有足夠的ETH,即可發動對Maker的治理攻擊,從而取走Maker的所有抵押品併發行新Dai。基於這樣的可能性,Maker決定製定新的治理合約,並於今天發起投票,以引入延遲,防止對系統的治理攻擊。閃貸的出現,對DeFi的安全提出更高要求。此外,藍狐筆記發現,當前uniswap池中的MKR被大幅減少,1.6萬個MKR降至4000多個MKR,從目前情況看,由很大概率是大戶撤出,以防止被攻擊者利用。本文作者Dominik Harz,由“藍狐筆記”社群的“JT”翻譯。

摘要

· 如果不對新的治理合約引入延遲,透過閃貸,你有機會竊走Maker的所有抵押品(7億美元左右)以及發行任意數量的新Dai。
· 任何人都可以執行攻擊,且只需要支付交易費用(幾美元),且無須持有任何MKR。
· 如果Maker在閃貸池的流動性超過閥值之前,不引入延遲,則幾乎沒有機會阻止攻擊。
· 2020年2月8日我們曾跟Maker聯絡,並於2020年2月14日跟他們聯絡討論我們的發現。
· Maker清楚攻擊向量,並於PST(藍狐筆記:太平洋標準時間)本週五下午12點舉行投票(也就是今天),以防止攻擊。

介紹

Maker及其Dai穩定幣是以太坊DeFi上最受歡迎的專案,其智慧合約鎖定了大約7億美元。(藍狐筆記:當前大約6億美元,跟ETH價格波動相關)Maker協議依賴編碼於智慧合約的治理流程。MKR代幣持有人可以投票取代現有的治理合約。投票票數跟MKR數量成正比。MKR的總代幣量為987,530,其中選定的錢包或合約持有大量的代幣:

· Maker治理合約:192,910 MKR
· Maker基金會:117,993 MKR
· a16z: 60,000 MKR 
· 0xfc7e22c6afa3ebb723bdde26d6ab3783aab9726b: 51,291 MKR
· 0x000be27f560fef0253cac4da8411611184356549: 39,645 MKR

請注意:Maker治理合約包含多個主體的MKR代幣

治理攻擊

在2019年12月的一篇文章中,Micah Zoltu指出如何攻擊Maker治理合約。(藍狐筆記:具體參考《MKR治理攻擊:15秒內將2000萬美元變成3.4億美元,可能嗎?》)。其基本思想是,積累足夠的MKR代幣,用攻擊者的治理合約取代現有的治理合約,也就是惡意的治理合約。然後,惡意治理合約可以讓攻擊者完全控制系統,可以取出系統中的所有質押品,同時發行任意數量的新Dai。

為了減少所需的MKR代幣數量,他建議在對新治理協議進行投票時執行攻擊。目前,治理合約中已鎖定192,910個MKR。但是,如果假設兩到三個合約用類似代幣分配進行並行投票,那麼攻擊者將需要較少的代幣。如下圖,這種情況在過去經常發生:

最明顯的攻擊策略是透過智慧合約眾籌所需的MKR代幣,並在勝利後給每個參與者分配相應的收益。然而,攻擊者可能需要累積大約5萬個MKR代幣,才有機會在不被Maker注意到的情況下發起對系統的攻擊。

勇敢的新攻擊策略:閃貸

不過,如果我們考慮使用閃貸,則可以完全無須考慮累積MKR代幣。閃貸是相當新的概念,因此我們可以給予簡要說明。(藍狐筆記:關於閃貸flashloan,可以參考之前的文章《加密閃貸:網際網路貨幣的神奇新發明》)

一般來說,一個人必須提供抵押品以在DeFi中獲得貸款。例如,在Maker中,Alice透過存入ETH借到Dai。這是必須的,因為這是在弱身份和主體在經濟上會做出理性選擇的系統下執行的。

而閃貸將這些要求都去掉,因為它僅在單個交易中發生:

*Alice從閃貸流動性提供商中獲得貸款(例如在Aave或dYdX中)
*Alice執行一些操作(例如,對Uniswap、Fulcurm、Kyber等進行套利交易)
*愛麗絲償還閃貸及利息

閃貸之所以有效,是因為這是以太坊EVM的設計方式:如果在這次交易中閃貸在任何時候失敗,整個交易都會被還原。

因此,Alice可以承擔貸款的風險,即,如果她無法償還貸款,她也永遠不會承擔其風險。流動性提供商也獲得勝利:他們只有在Alice能夠償還貸款的情況下才會出借其資金。

利用閃貸進行套利或預言機操縱

在2月14日和2月18日,兩起跟閃貸有關的事件導致bZx停止其平臺。在第一次的交易中,一次閃貸獲利1,193ETH,大約298,250美元。該交易使用智慧合約執行,在Fulcrum上開了wBTC的空頭頭寸。在同一筆交易中,該交易從Compound中借出一筆wBTC貸款,並在kyber的Uniswap儲備池中交易wBTC,導致很大的滑點,最終也將Fulcrum的價格降低。具體可參考bZx和peckShield的分析。(藍狐筆記:也可參考之前藍狐筆記的文章《bZx事件的啟示》)

同樣,2月18日發生了第二起事件,這一次交易中“攻擊者”獲得了2,378ETH(約60萬美元)的收益。該交易涉及最初借入7,500ETH,以在Synthetix的sUSD買入多頭頭寸。(藍狐筆記:大概的攻擊步驟如下:1.透過閃貸借出7,500ETH ;2.將其中的3,517ETH在Synthetix上換取94萬美元的sUSD,sUSD價格此時為1美元左右;3. 使用900ETH在Kyber和Uniswap上購買sUSD,將sUSD價格推高至2美元;4.透過抵押sUSD借入6,796ETH,之所以用之前94萬sUSD能借入這麼多ETH,是因為sUSD的價格被推高到2美元,也就是說相當於188萬美元價值的抵押品;5.使用借來的6,796個ETH和剩餘的3,083ETH償還7500ETH的閃貸,那麼還剩下6,796+3,083-7500=2,379ETH的收益)

預言機操縱以減少所需的流動性

對於有些攻擊,我們可以假設5萬MKR就足夠了。即使實踐上所需的代幣數量可能更多,閃貸會讓Maker安全面臨困境,如果沒有治理延遲的話。用一種幼稚的方法,攻擊者可以借出一筆閃貸購買5萬MKR代幣。

按照目前的匯率,攻擊者需要大約485,000ETH,用來購買MKR,因為只有一個交易所Kyber有足夠的量。但是,攻擊者也可以在多個交易所購買MKR,在Kyber買入3.8萬的MKR,在Uniswap買入1.15萬的MKR,從Switcheo買入500MKR,共計需要378,940ETH。這個數字依然很高,但已經減少了近10萬ETH。

攻擊者可以使用預言機操控策略以有效降低Kyber和Uniswap上MKR的價格。這是兩個最大的MKR提供商,並顯出很容易受到預言機價格操縱的影響。需要進一步分析來確定MKR價格可以降低多少。但是,像wBTC這樣的流動性較低的代幣,攻擊者能夠將匯率操縱大約285%。

獲得足夠的流動性

即使使用預言機操縱,也需要大量的ETH執行對Maker的攻擊。但是,攻擊者可以透過在同一次交易中進行兩筆閃貸來提高其流動性。Aave和dYdX為了保護自己免遭重入攻擊的傷害,在一次交易中僅允許單筆閃貸。但是,攻擊者可以在同一筆交易中從這兩個不同協議中借出ETH。

因此,截止到2月18日,攻擊者在dYdX上擁有一個9萬ETH池,在Aave上有1.7萬ETH池。因此,以當前的流動性,攻擊者可以從dYdX和Aave那裡獲得共計大約10.7萬ETH的貸款,透過借入的ETH,試圖用來操縱MKR代幣價格,並由此獲得足夠的MKR代幣,以取代當前Make治理合約。

為了讓這種方法成功,攻擊者必須能夠將MKR平均價格降低至少3.54倍。或者,攻擊者可以等待dYdX和Aave增加其流動性池。由於兩種協議的當前流動性池增長率大約在5%左右,因此似乎不太可能在兩個月內實現此攻擊。

組合攻擊?

顯然,可以將眾籌和閃貸兩種方法結合起來。使用當前可獲得的大約10.7萬的ETH,大約可以從Kyber上獲得1.08萬MKR。這樣一樣,多個攻擊者所需的眾籌MKR量從5萬個降至3.92萬個。在非正式的Twitter調查中顯示,似乎有些人確實對這種攻擊感興趣:

還應注意:排名前四位的賬戶持有人(實際上有5個,但不考慮當前Maker治理合約)能夠在無須眾籌的情況下實施攻擊。

沒時間等待。

一旦透過閃貸池獲得足夠的流動性(使用或不使用預言機操縱的組合),任何人都可以接管Maker治理合約。當流動性池資金達到這種閥值時,一旦Maker開始投票,Maker需要確保MKR代幣儘可能少地分佈。如果在此投票過程中,任何時候MKR的分佈被允許利用此漏洞,那麼,任何抵押品都可能被取走。

該攻擊者將能夠取走價值7億美元的ETH抵押品,且能夠任意印發新Dai。這種攻擊將會擴散到整個DeFi領域,因為Dai在其他協議被用作抵押資產。此外,攻擊者可以使用新Dai交易其他價值2.3億美元的代幣。

對策

Maker應制定新的治理合約,防止閃貸攻擊其系統。具體來說,新的治理合約應該能夠被Maker基金會核查,以檢視是否有惡意程式碼,並能夠有足夠的時間做出反應。從最低限度來說,新治理合約不應該在單個交易中生效。這樣,攻擊者無法從攻擊中獲利,從而導致無法償還閃貸貸款。如果攻擊者無法償還閃貸,攻擊也就不會發生。

Maker將於2020年2月21日大平洋標準時間12點(星期五)下午對這類合約進行表決。其建議對合約啟用治理安全模組(GSM),並防止此類閃貸攻擊。

免責聲明:

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

推荐阅读

;