新聞加密貨幣Electrum 4.8.3 修補利用比特幣費率調升作為攻擊途徑的惡意伺服器攻擊

Electrum 4.8.3 修補利用比特幣費率調升作為攻擊途徑的惡意伺服器攻擊

作者: Coindoo·

重點速覽

  • •Electrum 4.8.3 版本於 10 月 23 日標記,並於 10 月 24 日發布公開公告,修補了一個允許惡意伺服器在使用者錢包歷史中顯示帶有無效簽章之虛假轉出交易的漏洞。
  • •此攻擊利用 replace-by-fee:當使用者對被植入的零手續費交易調升費率時,新簽章便授權經篡改的付款流向攻擊者控制的地址。
  • •兩名使用者回報遭遇事件,其中一人於 10 月 18 日對虛假交易調升手續費後損失了未披露金額的資金。
  • •此修復會對動用錢包自身地址資金的未確認交易驗證簽章,而接收方向的未確認交易仍未驗證,因為 Electrum 缺乏完整的共識引擎。
  • •使用早於 4.8.3 版本的使用者應更新,或在核准任何交易(包括費率調升)前,於簽署畫面上手動確認輸出地址與金額。
Electrum 4.8.3 修補利用比特幣費率調升作為攻擊途徑的惡意伺服器攻擊

Electrum 比特幣錢包的一個高嚴重性漏洞已在 4.8.3 版本中修復,此前攻擊者找到了一種方法,將比特幣的 replace-by-fee 機制轉變為竊取已簽署交易的途徑。Electrum 開發者 SomberNight 在一份 10 月 24 日的安全公告 中揭露此問題,指出部分伺服器已在實際環境中執行此攻擊。兩名使用者回報遭遇事件;其中一人損失資金。

此攻擊需要持有人的簽章

惡意伺服器無法自行動用任何人的比特幣。它植入的虛假交易帶有無效簽章,因此網路會拒絕該交易。攻擊者需要的是錢包持有人的有效簽章,而這個陷阱正是設計來透過調高手續費取得簽章。

Replace-by-fee(RBF)透過以支付更高手續費的新版本取代原本交易,來加速待確認的比特幣付款。對使用者而言,這感覺像是在調整一項設定;但對網路而言,這是一筆全新的交易,簽署它即授權其中所有的目的地與金額。如果被「調升」的交易已遭篡改,新簽章就會核准經篡改的版本。

誘餌是一筆看似卡住的付款。在使用者損失資金的案例中,該伺服器將虛假交易建構為零手續費,開發者認為這是為了誘使使用者調升手續費。零手續費的交易會停留在未確認狀態,而調高手續費正是標準的應對方式。

惡意伺服器如何設下陷阱

Electrum 是一個輕量錢包:它不會自行下載並驗證整條區塊鏈。根據其文件說明,此錢包通常會連線至約十台伺服器,但依賴一台主伺服器來取得交易歷史並廣播交易。其他伺服器主要提供區塊標頭與手續費估算。該公告指出,將未確認交易交由主伺服器處理是 Elect 文件中記載的設計的一部分。新出現的是一種將這種信任轉化為竊盜的實際方法。這種取捨正是此次攻擊的背景:卸除驗證工作是輕量錢包得以「輕量」的原因,但這也意味著使用者所見的歷史紀錄,其可靠程度僅取決於提供該紀錄的主伺服器——而在 4.8.3 之前,一筆帶有無效簽章的轉出紀錄可能會如同真實交易般出現在該歷史中。

在簽署步驟之前,不會有任何損失。如果提交簽署的交易已被篡改,有效的數位簽章也可能授權錯誤的付款,而這正是費率調升所提供的環節。

兩名受害者所見

第一起回報來自使用者 dannydeezy,時間為 10 月 11 日。該筆付款由一個受兩台 Trezor 硬體裝置保護的 2-of-3 多重簽章錢包發出,將 31 筆輸入合併為一筆輸出。使用者在兩台 Trezor 上核對目的地後進行廣播。Electrum 的歷史隨後顯示全額款項未確認地流向一個未知地址,之後該條目變為「Local」。實際上沒有任何東西進入記憶體池(mempool)。

這筆虛假交易被精心建構。它使用相同的輸入,並逐位元組複製真實交易的簽章資料,因此全部 62 個簽章都與真實付款相符,而無一與虛假交易相符。它將幾乎全部金額發送至一個以「GyQ3」結尾的地址——與真實目的地相同的四個字元——並將少量金額返回錢包自身的其中一個地址,模仿正常的找零輸出。其手續費趨近於零。由於使用者未再次簽署,真實交易仍然有效且未被廣播,因此沒有損失任何資金。

直到第二名使用者 Raju-K12 於 10 月 18 日回報在對一筆虛假交易調升手續費後損失資金,開發者才確認這條費率調升的攻擊途徑。損失金額並未披露。

  • 10 月 11 日:首起私下回報,尚未涉及費率調升角度
  • 10 月 18 日:第二起回報,在對虛假交易調升手續費後造成損失
  • 10 月 23 日:4.8.3 版本標記包含此修復
  • 10 月 24 日:二進位檔發布並公開安全公告

4.8.3 修復了什麼,以及未修復什麼

此修復使 Electrum 在將任何動用錢包自身地址資金的未確認交易加入歷史之前,先驗證其簽章。帶有無效簽章的虛假轉出付款現在會被拒絕而非顯示,從而封堵此攻擊途徑。

此檢查刻意保持狹窄。接收方向的未確認交易仍然不會被驗證,公告解釋了原因:Electrum 沒有完整的共識引擎,檢查他人的輸入意味著必須追溯其未確認的父交易,直到抵達已被挖出的區塊為止已確認的交易原本就透過簡化支付驗證(SPV)進行驗證,即對照區塊標頭進行檢查。

僅連線至自己信任的伺服器(例如自行架設的伺服器)的使用者不受影響。此豁免並不適用於錢包恰好選為主連線的任何公共伺服器。

再次簽署任何交易前

  1. 更新至 4.8.3。 從 Electrum 官方網站下載,並依照該網站的說明驗證檔案簽章。
  2. 核對完整地址。 與原始帳單或付款請求比對,而非與錢包歷史比對——後者正是攻擊者所能控制的。
  3. 在裝置螢幕上確認。 為每一次新簽章檢查金額與手續費。Trezor 的 RBF 指南與發送指南均要求使用者在裝置上核對更新後的詳細資訊。
  4. 卡住或被篡改?停下。 在調升任何交易前,先在獨立的區塊瀏覽器上查詢原始交易 ID。在首起回報中,真實付款從未到達網路。

尚無法更新的使用者可採用公告中的替代做法:每當簽署任何交易時,無論是否為費率調升,都應檢查輸出地址與金額是否與預期完全一致。早於 4.8.3 的版本不會執行新的簽章檢查,因此對仍使用較舊版本的使用者而言,這種手動驗證是抵禦此途徑的唯一保障。此修補程式封堵了這條特定途徑,但 Electrum 仍依賴其主伺服器提供未確認資料,因此核准付款的螢幕仍然是最後一道檢查關卡。

本文僅供參考,不構成財務或投資建議。

來源:Coindoo