閃電網路最新漏洞分析:僅需攻擊85個節點便可竊取閃電節點通道資金

買賣虛擬貨幣

編譯:kyle

導讀:以色列最高學府希伯來大學工程與電腦科學學院的副教授Aviv Zohar以及希伯來大學碩士研究生Jona Harris近日釋出了一份研究論文《Flood&Loot:一種針對閃電網路的系統性攻擊》。提出一種閃電網路的系統性攻擊,攻擊者透過對閃電網路進行系統攻擊,可竊取鎖定在支付通道中的資金。在此攻擊中,攻擊者會迫使大量受害者向區塊鏈索要資金,然後攻擊者可利用擁塞竊取在截止日期之前未領取的資金。該論文證明,只需 85 個同時被攻擊的通道就可保證攻擊者可以竊取一些資金。此外,該論文還針對此攻擊提出了幾種緩解技術。

眾所周知,閃電網路支付通道網路容易受到區塊鏈擁塞的影響,如果網路受到攻擊,參與者可能無法及時提取資金。在我們的最新論文中,我們評估了一種這樣的攻擊:對閃電網路的系統攻擊,它可以竊取鎖定在支付通道中的資金。

在此攻擊中,攻擊者立即迫使許多受害者湧向區塊鏈,索要其資金。然後,攻擊者可以利用他們造成的擁塞來竊取在截止日期之前未領取的所有資金。

攻擊的後果取決於攻擊者選擇攻擊的閃電網路實現。我們證明,攻擊者只需要同時攻擊85個通道就足以竊取通道內的資金(這是假設沒有其他區塊鏈交易爭奪區塊空間的情況下,這是一個非常樂觀的假設)。

除了從總體上了解這種攻擊及其後果外,在這篇文章中,我們還提出了幾種緩解這種攻擊的技術。

注意:攻擊可能會使無辜使用者的資金被盜。不要在家嘗試這種攻擊。不幸的是,目前還有任何協議更改可以將其完全消除。本文的研究結果已在釋出前與三個主要閃電網路客戶端實施的開發人員共享。

攻擊細節

該攻擊利用了跨多個閃電通道轉發付款的機制——雜湊時間鎖定合同(HTLC)。簡而言之,HTLC允許參與者透過無信任的中間節點來路由付款,以確保他們中的任何一個都不會竊取資金。如果這樣的節點試圖竊取資金,則其對等方可以透過將交易釋出到區塊鏈來索取資金,但只能在有限的時間內進行。正如我們在工作中所顯示的,相對容易使無辜的閃電節點湧入區塊鏈,並利用此時間限制來竊取資金。

HTLC背後的關鍵思想是,在建立HTLC之後,透過提供一個秘密(secret)(一種雜湊原像),付款被透過目標節點從路徑中的上一個節點“扯出”。攻擊者將在他自己的兩個節點之間路由付款,並在路徑的末尾提取付款。當付款最終要被從源節點提取時,他將拒絕合作——迫使受害者透過區塊鏈交易進行索要。

這個拓撲示例顯示了攻擊者的節點以及他與受害者共享的通道

該攻擊分為四個主要階段:

一 建立通道

攻擊者控制兩個閃電節點,分別代表源節點和目標節點。源節點開啟了許多潛在受害者的通道,可能每個受害者都有多個通道。這些通道是由攻擊者的源節點發起和提供資金的(目標節點可以遠離受害者,但在下面的圖中,我們簡化了過程,並僅顯示了一條很短的簡單路徑)。

階段1:建立通道

二 使用HTLC付款載入通道

設定完所有通道後,源節點將開始向目的地節點進行許多HTLC付款,並透過每個源節點的通道進行路由。源節點傳送允許中繼的最大金額,並將其分配到儘可能多的付款中(受害人允許的數量)。

作為HTLC機制的一部分,目標節點應該透過發回一組HTLC秘密(secret)來接受付款。這個攻擊將避免這樣做,直到源節點完成轉發所有付款為止。

階段2:使用HTLC付款載入通道

三, 解析最後一跳的付款

在成功完成所有付款的傳送並將HTLC新增到目標節點的通道後,目標節點將透過返回所需的secret來解析所有付款,併為自己索取這些資金。此時,目標節點可以正常關閉其通道,並保留源節點傳送的資金。一旦每個受害者獲取了這些secret,他就會將其傳送回源節點,要求解析HTLC,並將其數量移至通道的受害者一側。源節點拒絕解析付款,並忽略來自其受害者的任何進一步訊息。

階段3:在最後一跳解析付款

四 等待到期並收集未花費的HTLC

在這個時候,每個受攻擊的通道都充滿了尚未解析的HTLC,受害者知道它們的secret。由於攻擊者的源節點不合作,因此受害者可以獲取這些付款的唯一方法是關閉其通道並在區塊鏈上宣告HTLC。受害者有有限的時間(以區塊為單位)來要求付款(如果節點不知道這些secret,則有時間限制,在這種情況下,資金應由源節點要求)。

一旦它們過期,HTLC的輸出就會被攻擊者花費。儘管受害者仍然可以在到期後要求HTLC,但是特定的協議詳細資訊為攻擊者提供了很大的優勢:

受害人在釋出交易時無法設定交易費用。該費用是在開啟通道時確定的

攻擊者可以按自己的意願為自己的交易設定費用,並替換到期後仍未確認的任何受害者交易(使用“替換費用(Replace-By-Fee)”策略)

透過攻擊多個通道並強迫所有通道同時關閉(為所有HTLC設定相同的到期時間),某些受害者的HTLC宣告所有權交易將無法得到及時確認,攻擊者將竊取它們。

因此,攻擊者保留了一些本應留給受害者的資金(受害者下一跳的資金已傳送至攻擊者的目標節點)。

階段4:到期後收集未使用的輸出

模擬結果

為了顯示攻擊的可行性,我們在比特幣測試網路regnet上的本地閃電網路上進行了模擬。我們實施了攻擊者節點的原型,能夠阻止HTLC secret的傳輸,而忽略解析HTLC的請求,併發布增加費用的HTLC宣告所有權交易。由於LND是當今最流行的閃電實施方案(據報道,網路上90%以上的閃電網路節點都執行LND),因此我們使用它來模擬受害節點。如下圖所示,即使向受害者的交易分配了區塊中所有可用空間(最大區塊大小),攻擊85個通道也能確保成功進行攻擊。每增加一個通道,其所有資金也將被盜。

針對不同數量的受攻擊通道和區塊大小,成功竊取的HTLC的數量。

比特幣當前的最大區塊大小為4M(與綠線相對應)。實際上,閃電交易的可用空間少於全部。

如圖所示,當每個區塊中的可用空間減少時,竊取相同數量的HTLC所需要的受害者會更少。我們證明,當攻擊者使用“聯合最小化”策略(如下所述)時,可能就是這種情況。

針對不同數量的受攻擊通道和塊大小,成功竊取的HTLC的數量。比特幣當前的最大塊重為4M(與綠線相對應)。實際上,閃電交易的可用空間少於全部

如圖所示,當每個區塊中的可用空間減少時,需要更少的受害者才能竊取相同數量的HTLC。我們證明,當攻擊者使用“feerate-minimization(費率最小化)”策略(如下所述)時,可能就是這種情況。

攻擊放大

每個受害者交易所支付的費用均來自通道的Feerate引數。這個feerate由通道的發起者(在我們的情況下為攻擊者的源節點)確定並支付。在開啟通道之前,另一個節點必須接受通道設定的feerate。如果節點符合其對區塊鏈費用的估計,則節點同意設定一個feerate,由bitcoind的估算方法確定。從下圖可以看出,feerate的估算值可能會在相對較短的時間內發生很大的波動。當單方面關閉該通道時,在某個時間點確定的通道feerate可能不適用於以後的時間。

Bitcoind估算的用於立即確認的Feerate(聰/位元組)

除了設定初始通道feerate之外,通道的發起人還可以在通道開放後的任何時間提出新的feerate,以將其調整為當前的區塊鏈費用狀態。閃電協議指出,在我們的情況下,另一方(即受害者)不允許提出任何feerate的更新請求。在“feerate-minimization”策略中,攻擊者在可能的情況下(即,在區塊鏈費用較低時(因此另一方會同意這一更改))使用費用更新機制降低通道的feerate,但從在區塊鏈費用高時進行更新。一旦通道的費用率與實際的區塊鏈費用率之間的差異變得很大,攻擊者就可以開始啟動所有HTLC付款併發起攻擊。在下圖中,我們看到了當攻擊者持續3天和7天使用feerate-minimization策略時,受害者可用的平均區塊空間。例如,當攻擊者試圖在開始攻擊前7天將費用降到最低時,受害人只有58%的時間可以使用平均一半的區塊空間,或者更多(在2個月的時間內收集資料)

當使用“feerate-minimization”策略時,受害者交易可用的平均區塊空間

尋找潛在的受害者

在這項工作中,我們還表明,找到潛在受害者對於攻擊者來說並不是一件工作量很大的事情。為了使節點成為攻擊的受害者,節點只需要接受與攻擊者開啟通道的請求。如閃電協議中所述,節點可以透過響應“ accept_channel”訊息來顯示其開啟通道的意願,這時候並不需要真的開啟通道。我們進行了一項實驗,其中測試了網路上許多節點與未知節點開啟一個通道的意願。我們發現絕大多數活動節點(〜95%)願意根據這個請求開啟通道,因此很容易成為這種攻擊的受害者。

節點對“ open_channel”請求的響應

緩解措施

對於這種攻擊,多種技術可以使攻擊者的難度加大,並降低攻擊的潛在危害。以下是我們提出的一些緩解技術。

1)減少未解析的HTLC的最大數量:攻擊者可以透過被攻擊通道進行路由的最大付款次數由通道的引數“ max_accepted_htlcs”確定。如果該引數的值保持較低,則攻擊者將不得不攻擊更多的通道才能成功竊取資金。

2)提前關閉通道:受害人要求其資金的時間(區塊)由特定於實現的引數確定。大多數閃電網路實施所使用的值要比它們可能使用的值小得多(以避免過早關閉通道)。可以基於通道的當前狀態,例如,未解析的HTLC的數量或總的未解析的值,增加該引數一個恆定因子或者甚至動態地設定。

3)立即釋放HTLC宣告所有權交易:某些實現在釋放HTLC交易以宣告其輸出之前一直等到確認其已釋出的commitment。節點可以並且應該立即與這個commitment一起釋放這些交易,以允許更多交易可以進入的潛在區塊。

4)基於信譽的行為:通道的引數會極大地影響成功攻擊的可能性。根據某些策略,節點可以為與為其分配了“良好信譽”的當事方的通道使用更多的許可引數。

儘管有不同的緩解措施可以降低攻擊的風險,但是完全消除風險似乎是一項複雜的任務。我們認為,在許多方面,所利用的漏洞是HTLC工作方式所固有的,因此,如果不對HTLC機制進行重大修改,就無法完全避免攻擊。

免責聲明:

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

推荐阅读

;