比特幣 RBF 假充值風險分析

買賣虛擬貨幣
前言據鏈聞訊息,加密錢包 ZenGo 釋出報告稱其在 Ledger、BRD 和 Edge 等主流加密貨幣錢包中發現了一個漏洞(命名為「BigSpender」)。該漏洞可能會使未確認的交易計入使用者的總餘額中,而此時,攻擊者可在交易確認之前撤銷該筆交易。攻擊者利用了比特幣協議中的一項費用替代「Replace-by-Fee」功能。該功能可透過支付更高的手續費來替換此前的一筆交易。攻擊者可以連續多次使用該功能進行 BigSpender 攻擊。下面,慢霧安全團隊將基於此次事件分析比特幣協議 RBF 特性對交易所和錢包所產生的影響。什麼是 RBFRBF,全稱 Replace-by-fee,是比特幣記憶體池中的一種協議,允許使用其他交易將未確認交易進行替換的方式,RBF 的方案主要有以下幾種:1、Full RBF :使用更高的手續費替換前一筆交易2、First-seen-safe RBF:初見替換,即替換交易本身的輸出金額必須大於等於被替換交易
3、Opt-in RBF:選擇性替換交易,透過追加手續費的形式將舊交易替換,節點可選擇開啟或關閉此功能4、Delayed RBF:當舊交易首次被網路中節點接收,如果在給定數量的區塊數之後,舊交易仍然未被打包,則允許新交易無條件地替換舊交易目前 Bitcoin Core 採用的是 Opt-in RBF 的方案,即透過宣告一筆交易為可替換的形式,後續可使用其他交易替換這筆交易。關於 Opt-in RBF 的詳細說明可參考 Bitcoin Core 的說明 https://bitcoincore.org/en/faq/optin_rbf/如何利用 RBF 進行攻擊RBF 主要針對的是 0 確認交易,即對記憶體池中的未確認交易進行替換,當交易所或錢包在處理 0 確認的交易時,沒有正確處理交易相關的狀態時,就會導致雙花和假充值的問題,具體攻擊手法如下:1、攻擊者傳送一筆 RBF 交易,輸出地址指向交易所或錢包,並支付低額手續費,防止交易過快被打包;
2、在交易所檢索到這筆 0 確認的交易後,攻擊者立刻傳送一筆替換交易,並將輸出地址改為攻擊者可控的其他地址,替換先前的傳送給交易所或錢包的交易;3、由於交易所或錢包在對 0 確認交易的處理存在問題,沒有校驗交易是否為 RBF 交易和交易的確認狀態,直接在未確認的情況下入賬 RBF 交易,導致交易所或錢包被假充值、雙花、欺詐攻擊及對錢包進行 DoS 攻擊;

攻擊流程圖如下:

目前,慢霧安全團隊對市面上的幾款去中心化的錢包進行測試,已在部分錢包中發現此類問題,並將問題同步給相應的專案方以及協助修復。

防禦方案

1、交易所或錢包應禁止採用 0 確認的方式對比特幣充值進行入賬;

2、如需要對 0 確認交易進行入賬,必須檢測該交易不能為 RBF 交易,具體為交易 Input 中的 nSequence 欄位值必須為 0xffffff,任意未確認交易中包含非 0xffffff 值的 nSequence 應拒絕入賬;

3、檢查交易狀態,如檢查比特幣交易是否被打包,或已達到相應的確認數(如 3 個);

4、錢包應展示對應的交易確認狀態,防止欺詐攻擊;

5、慢霧安全團隊已支援該攻擊的檢測,如錢包或交易所不確定自己的入賬方式是否存在問題,可聯絡慢霧安全團隊(admin@chaindaily)進行檢測。

免責聲明:

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

推荐阅读

;