閃電網絡上的持久漏洞仍然需要修復| 烤仔星選
话说区块链
2021-01-19 02:36
本文约3346字,阅读全文需要约13分钟
我們發現,悲傷對大型“巨大”渠道構成了嚴重威脅,這些渠道希望從其比特幣中獲得收益,只是將其資金凍結了一段時間。

當閃電網絡路由節點被垃圾填充時,會發生什麼情況?簡而言之,這會給路由節點帶來很多麻煩。曾經精明的腳本編寫者可以用不費吹灰之力就鎖定了曾經是一個流暢的、全球性的支付系統。

在一個由路由節點組成的小組中,我們成功地用資金發起攻擊進行測試,並演示了Joost Jager描述的“Griefing”攻擊。這次襲擊被稱為“悲傷”攻擊,因為它不是盜竊資金,但它會導致受害者的閃電基金被凍結:一個重大恐慌。我們發現,悲痛攻擊是對大型“wumbo”頻道的嚴重威脅,它們希望通過比特幣賺取收益,但卻被凍結了一段時間。

這主要是一次“悲傷”攻擊:沒有損失資金,但受害者可能被迫支付昂貴的渠道力量關閉。這是一個已知的主幹網閃電漏洞,需要理解和優先考慮,特別是在比特幣閃電網絡的早期階段。

感謝Clark Burkhardt和Phillip Sheppard,感謝他們願意參加這次測試,感謝Jager不懈的努力,讓人們關注和重視這一問題。 Jager在我們的演示中扮演了攻擊者的角色,而Burkhardt和Sheppard作為連接的受害者路由節點加入了行列。

如何進行攻擊操作?

攻擊者用散列時間鎖定契約(HTLC)使一個(或多個)通道飽和,這些合約不能作為最終付款來解決。這些是HTLC的特殊種類,稱為HODL發票。這些未解析的HTLC中只有483個需要按每個方向壓倒信道。一旦這些HTLC進入通道,使用該相同通道方向的任何交易都是不可能的,包括合作關閉該通道的交易。

理論上,攻擊者可以聯繫受害者(可能通過密鑰發送消息或“洋蔥圈”)並要求支付贖金來停止攻擊。一旦支付贖金,攻擊者就可以移除未支付的款項,從而結束攻擊。攻擊可以無限期地持續下去,停止該通道中的所有路由和支付活動。這就凍結了閃電頻道的資金。

通過在每個方向(入站和出站)使用483個HTLC,可以在一個通道中停止兩個付款方向。

為什麼攻擊者會做這樣的事情?

我想到的第一個動機是要求贖金。這種攻擊會給受害者帶來痛苦,即使無法保證攻擊會停止,支付贖金對受害者也可能很有吸引力。與受害者聯繫可能對攻擊者有風險,但是贖金付款可能不是進攻者這樣做的唯一原因。

發起悲傷攻擊的第二個誘因是破壞路由競爭。阻塞競爭對手的路線可能會增加對攻擊者擁有的路線的需求。

作為基準,請考慮Lightning Labs的Loop節點對流動性的需求持續不斷,有時它會支付每百萬分之2500的付款(ppm)(0.25%)費率。以我的經驗,他們通常會在大約兩週內耗盡1600萬薩特的流動資金(年增長率為5.2%),但這存在競爭。

如果攻擊者可以以較低的費用率禁用任何競爭路線,則Loop可能願意支付較高的費用率(因為現在減少了流動性供應)。假設Loop將支付3,000 ppm(0.3%)的費用,並且由於沒有其他渠道在起作用,因此可以更快地使用這種流動性。 Loop可能會在一半時間(例如一周)內使用該流動性。在此示例中,攻擊者的正常收益率將翻倍,達到15.6%。攻擊者的唯一成本是在現有頻道上運行腳本的成本,以及對閃電網絡進行不道德/破壞性行為的心理成本。使用單個攻擊者通道,惡意行為者可能會阻塞大約九個通道。

這次攻擊的受害者會經歷什麼?

除非他們為未決的HTLC設置了一些特殊警報,否則此攻擊的受害者不會真正知道此攻擊是否正在發生。對於Thunderhub用戶(強烈推薦的工具),主屏幕將顯示掛起的HTLC圖表以及警告,指出通道只能容納483個掛起的HTLC。

來源於: Thunderhub

事實上,我的節點很快變得不牢固,經歷了幾次應用崩潰,包括Thunderhub,它是唯一通知我問題的應用。然後,由於我的“Satoshis的平衡”電報機器人,我得到了一個頻道關閉通知。受到攻擊的通道自動關閉了!這不應該是實驗的一部分(有關非自願力合的更多技術信息,請參閱以下附加力合數據。)

由於攻擊,使用Burkhardt(salmiak)信道的測試支付失敗。這個警告報告說Burkhardt的節點是離線的,儘管它是在線的。來源:Thunderhub.

受害者可以採取什麼措施來停止襲擊

攻擊開始後,受害者基本上無法採取任何行動來阻止它。阻止正在進行的攻擊的唯一替代方法是強制關閉被攻擊的通道,這意味著恐怖分子會獲勝。

為了增加侮辱性傷害,強制關閉渠道會將未解決的付款推送到鏈上交易數據,從而觸發第二次鏈上交易,以強制發起者關閉。以50個sat / vbyte和483個鏈上交易計算,這很容易以100萬個sat的價格標記來強制關閉一個受到攻擊的頻道(按今天的價格收取368美元的頻道關閉費)。僅當輸出超出最低付款“灰塵”限制時,才會發生多個鏈上交易。 (請參見測試網上的示例。)

正文

正文

 https://t.co/z6mAGZxvrC.收盤價越來越貴。

如何防止攻擊

Jager一直在進行概念驗證計劃,以幫助隔離和打擊攻擊者。他稱自己的程序為“斷路器”。斷路器在網絡級別工作,不幸的是,這意味著每個人都必須參與才能使之有效。

除此之外,此問題還需要確定優先級並得到專門工程師/開發人員的關注,以找到更好的解決方案。在Bitcoin Optech時事通訊(第122號或第126號)中,也有關於修改協議的良好討論。

今天可以執行此攻擊。尚未被惡意使用的奇蹟。這反映了當今使用Lightning的人們的積極性,因此它可以成為一個開放的,通用的支付網絡。請分享您認為合適的這篇文章,以鼓勵和激發更多的工作來解決此問題,以免造成實際傷害。

有關非自願關閉部隊的其他技術信息

這是發生上述非強制關閉時來自運行LND 0.11的節點的日誌:

2020年11月26日21:24:47.374 [ERR] HSWC:ChannelLink(657759:561:0):沒有鏈接:ChannelPoint(c37bec006b18df172698a84739ca47128935e0a8666fecd1a843e49b01db207c:0):從對等體接收到的錯誤:chan_id = 7c20db019be443a8d1ec6f66a8e035891247ca3947a8982617df186b00ec7bc3,ERR =拒絕承諾:commit_height = 455,invalid_commit_sig = 3044022076fd65191eb6305b723fa6012be378413b6326e2786c38db58b4c02e1f3999d202207605ca31de8b4c5b1d9cd20dc1581dfa2383e0b4e06c8ad4f718ab5c434d8cf5,commit_tx = 02000000017c20db019be443a8d1ec6f66a8e035891247ca3947a8982617df186b00ec7bc300000000008a792e8002210d0000000000002200201031cf10a1efef261edd3d0a1a6a953b27bc25bd7150bb2b07afdc69805e02157213000000000000160014de650929042bef58b71783ae1a44834a902a8f2d542ca720,sig_hash = 4e0fb804c74376020e4c44a60969b9206eb0aaa9a89b76017d60f23ad5cf63e5,錯誤:遠程錯誤

日誌顯示“ invalid_commit_sig”,這是LND中的已知問題。據推測,這可能是在重新連接時發生的,而不是頻道卡頓的直接結果。不幸的是,待處理的HTLC的數量使它更有可能發生。傑格(Jager)幫助解釋了以下過程:信道阻塞–>無限付款循環(bug)–>節點關閉–>重新連接–>無效提交信號(bug)–>信道強制關閉。

“無盡”循環錯誤是一個已知錯誤,當達到HTLC限制並發送附加HTLC時發生。 LND將繼續嘗試循環付款,而不是結束付款失敗。要解決此錯誤,請參閱LND問題#4656。

话说区块链
作者文库