一文覆盤近期 ETC 雙花攻擊事件

買賣虛擬貨幣

作者|Coinbase

摘要

Coinbase沒有成為任何攻擊交易的目標,也沒有任何資金的損失。

在PST 7/31/2020晚上10:57,Ethereum Classic(ETC)受到51%攻擊,導致約80萬ETC(約580萬美元)的雙花交易。

PST 8/5/2020晚上8:15,Ethereum Classic再次受到51%攻擊,導致約46萬ETC(約320萬美元)的雙花交易。

在第一次攻擊中,執行在精簡模式下的Parity(OpenEthereum)節點忽略了攻擊區塊,而其餘網路則接受了攻擊區塊為,導致修精簡Parity節點與其餘網路出現了分割槽網路

如果攻擊者控制了大部分挖礦權,他們就能夠51%攻擊區塊鏈網路。攻擊者會重組("reorg")區塊鏈的歷史,透過雙花交易竊取資金。

Coinbase的觀點

在 PST 7/31/2020 晚上11:10,Coinbase區塊鏈安全部接到警報,Coinbase的ETC節點在預期的時間區間內沒有看到新的區塊。經調查發現,我們的節點在區塊鏈狀態上已經分叉。Coinbase內部精簡的Parity節點與我們非精簡的Parity節點和Geth節點看到的區塊不同,這是第一個說明有問題的指標。我們得出的結論是,在PST 7/31晚上10:57的大規模重組導致了網路分叉,是由於不同的節點造成的(關於分叉的更多資訊,請參閱下面的網路分割槽部分)。

大型的重組是潛在雙重花費的顯著指標。此時,Coinbase選擇大幅提高我們的確認次數要求。這確保了Coinbase平臺上沒有雙花交易入賬。

兩個公開的問題隨之而來:首先,重組的交易中是否包含雙花?第二,考慮到網路分割槽,Coinbase如何確保我們在正確的鏈上呢?

為了回答第一個問題,我們比較了孤鏈和導致重組的新鏈。我們發現,在53個孤塊交易中,有約580萬美元的ETC被雙花。然而Coinbase沒有成為這些攻擊的目標。

我們接下來的重點是瞭解ETC網路分割槽。我們發現精簡的Parity節點會忽略超過一定高度的區塊。因為大規模的重組試圖對超過這個閾值的區塊進行孤塊化處理,所以被精簡的Parity節點認為重組是無效的。需要注意的是,網路中的其他節點選擇跟隨重組,這一現象導致了網路的分割槽。在觀察了網路分割槽的每一方後,Coinbase開始跟隨規範的主鏈(即包括雙花攻擊的非精簡的Parity鏈)。

8月5日晚,區塊鏈安全部又收到警報,發生了大規模的重組。由於精簡後的奇偶性節點不再被操作,沒有出現類似第一次重組的網路分割槽。因此,唯一的問題是Coinbase是否是這次攻擊的受害者。做了和上面類似的分析,我們確認ETC再次被攻擊,這次的攻擊金額約為320萬美元,涉及9筆孤塊交易。我們再次發現,Coinbase不是任何一筆孤塊交易的受害者。

作為額外的預防措施,我們進一步提高了確認次數以確保客戶資金的安全。需要注意的是,這並不是ETC第一次被雙花。

雖然ETC近幾日看起來已經穩定下來,但我們會繼續監測ETC是否有進一步的動盪。

技術分析

基於Nonce的雙花攻擊

在這次ETC攻擊中,我們發現了一個有趣的模式,用來執行雙花。我們在下面討論攻擊者雙花策略的一個例子。

攻擊者使用一個攻擊交易來雙重花費多個孤塊交易的例子:

攻擊者利用一個攻擊交易將多個單個交易進行雙重消費的例子。

攻擊模式

1. 攻擊者透過多次交易向被攻擊交易所傳送大量ETC。

2. 攻擊者利用被攻擊交易所服務,將ETC兌換成其他貨幣,然後將資金移出平臺。

3. 攻擊者重新記錄區塊鏈,"刪除 "步驟1的交易。

4.現在,攻擊者可以使用他們原來的ETC。然後他們用一筆大的交易將資金轉移到他們控制的另一個地址。為了使任何重複的遺棄交易變得無效,這一點是必要的。

結束狀態:攻擊者現在控制了他們從被攻擊交易所那裡轉出的一定數量的非ETC資產,同時還保持對原始ETC的控制。

有趣的是,透過使用這種基於非ce的增量技術,每筆孤塊交易的移動量不到3萬ETC(約20萬美元)。我們相信,攻擊者使用這些增量的孤塊交易是由於被攻擊交易所的一些基於價值的速率限制。例如,被攻擊交易所交易所可能有一個功能,防止使用者在一次存款中收到大於X金額的ETC。

攻擊者利用一筆攻擊交易對多筆無主交易進行雙花的例子。

在這裡,我們發現孤塊鏈上發生了三筆交易。傳送方(即攻擊者)和接收方(即受害者)的地址在三筆交易中都是一致的。如上所述,每筆交易的轉賬金額都在約20萬美元左右。此外,後兩筆交易與前一筆交易相比,nonces增加了。根據賬戶nonces的工作方式,這是可以被預估的。

關鍵點是在主鏈上,只要攻擊者賬戶沒有持有足夠的資金來支付轉賬,後兩筆交易都是無效的。在主鏈上,我們發現一個來自攻擊者地址的大額雙花交易,而不是三個獨立的雙花交易,並且各有一個孤塊交易。

主鏈(即攻擊者)上的攻擊交易,將資金合併並轉移到攻擊者控制的地址上。

值得注意,這個大交易的轉移值等於三個孤塊交易的值之和。這確保了所有三個孤塊交易在主鏈上都是無效的。

精簡奇偶節點網路分割槽

除了正常的51%攻擊雙花攻擊模式外,由於這次事件,還出現了第二個有趣的情況。當配置在精簡模式下時,Parity OpenEthereum客戶端會選擇忽略任何超過一定高度的區塊,並認為這些區塊無效。

一個 "古老 "的錯誤,導致精簡後的奇偶性節點拒絕reorg。

因此,精簡後的Parity OpenEthereum客戶端忽略重組以及繼續挖掘自己的獨立鏈。如上所述,我們稱之為孤鏈。重組鏈的無效性導致網路按節點和節點配置進行了分割槽。

ETC網路如何分割槽

在這個分割槽發生後,礦工繼續在精簡後的Parity鏈以及網路其他部分所遵循的主鏈上採礦。

為了清晰起見,請注意,被精簡的Parity節點的當前狀態等同於未被精簡的Parity、Geth節點在被重組之前的狀態。在重組內請求一定高度的區塊,會從被精簡的Parity節點返回孤兒區塊,而未精簡的Parity節點則返回攻擊者區塊。從unpruned節點接收到的孤塊曾是unpruned Parity節點的狀態的一部分,然而孤塊被重組出unpruned節點的檢視。

繼續執行被精簡的奇偶性節點的節點操作者維護並擴充套件了孤鏈。在這些運營商重新同步他們的精簡奇偶節點或切換到不同的節點型別之前,網路化仍然是分割槽的。Coinbase強烈建議切換到支援的節點(例如Geth)。

Reorgs

根據Coinbase非精簡節點的日誌,曾經有一次極其龐大的重組,從區塊高度10904147開始直到區塊高度10907434。在攻擊時,主鏈(即攻擊)的高度為10907434,而孤鏈的高度為10907836。孤鏈和主鏈之間的共同原型區塊高度為10904146。這意味著重組了孤鏈3692個,新增了3287個區塊。需要注意的是,雖然攻擊鏈的高度較低,但因為難度較高,它取代並超越了孤兒鏈成為ETC的正統鏈。假設區塊時間為15秒,攻擊者必須用多數hashpower挖礦約13.7小時才能執行這次攻擊。

重組8/1的示意圖

被精簡的節點忽略了這個重組,而未被精簡的節點則接受這個重組為有效。更多資訊請參見上文的網路分割槽部分。

我們的分析顯示,在鏈式重組中,有15個雙花交易對和38個基於孤塊的交易。這些雙花都沒有影響到Coinbase。

2020年5月8日,ETC在主鏈上發生了第二次大規模的重組。

在重組時,孤鏈區塊為0x9555,高度為10939866。重組後,主鏈(即攻擊)鏈頭塊為0x7521,高度為10939975。孤鏈和主鏈之間的共同原型區塊在高度10935622。重組孤鏈4244塊,而攻擊鏈包含4353塊。假設區塊時間為15秒,攻擊者必須用多數算力挖礦約18.1小時才能執行這次攻擊。

reorg 8/5的示意圖

區塊鏈安全公司對這次重組進行了與上述相同的分析,發現了7個雙花交易對和另外2個傳送到受害者地址的孤兒交易。同樣這些雙花都沒有影響到Coinbase。

雙花

在第一輪雙花交易中,我們發現約有580萬美元被雙花。有5個獨立的地址向5個獨立的受害者地址傳送了大量的雙花交易。攻擊者和受害者地址一對一地進行了對映。

在檢查了來往地址後,區塊鏈安全公司得出結論,這些雙消費都沒有影響到Coinbase:

在第二輪雙花中,我們發現約有320萬元被雙花。這一次,只有一個目標受害者地址為0x38cd54fc7b1fe7994355fce1d75c9c4bd7335a46。此外,每筆交易的雙花金額有更高的差異,在約9.7萬美元到高達約108萬美元之間。我們發現,在第二次攻擊中,攻擊者傾向於不拆分孤塊交易,這意味著孤塊交易和攻擊交易一般是一對一對映的。一個例外是特定的攻擊者地址0xa56cfaef495a45f17f44fd0b2d85e0fe63b9ba7d,它傳送了三個孤塊交易。

需要注意的是,在第一次重組中,我們的分析還發現了一些其他的小額雙花,數量在10美元左右。我們認為這些都是非惡意使用者在重組期間與區塊鏈互動導致的非惡意雙花消費。

Coinbase 作者

olivia 翻譯

李翰博 編輯

內容僅供參考 不作為投資建議 風險自擔

免責聲明:

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

推荐阅读

;