加密錢包 ZenGo 稱其在 Ledger、BRD 和 Edge 等加密貨幣錢包中發現漏洞,可發起假充值攻擊,慢霧解析比特幣 RBF 攻擊原理。

原文標題:《比特幣 RBF 假充值風險分析》
撰文:慢霧安全團隊

鏈聞消息,加密錢包 ZenGo 發佈報告稱其在 Ledger、BRD 和 Edge 等主流加密貨幣錢包中發現了一個漏洞(命名「BigSpender」)。該漏洞可能會使未確認的交易計入用戶的總餘額中,而此時,攻擊者可在交易確認之前撤銷該筆交易。攻擊者利用了比特幣協議中的一項費用替代「Replace-by-Fee」功能。該功能可通過支付更高的手續費來替換此前的一筆交易。攻擊者可以連續多次使用該功能進行 BigSpender 攻擊。下面,慢霧安全團隊將基於此次事件分析比特幣協議 RBF 特性對交易所和錢包所產生的影響。

什麼是 RBF

RBF,全稱 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 的說明

如何利用 RBF 進行攻擊

RBF 主要針對的是 0 確認交易,即對內存池中的未確認交易進行替換,當交易所或錢包在處理 0 確認的交易時,沒有正確處理交易相關的狀態時,就會導致雙花和假充值的問題,具體攻擊手法如下:

  1. 攻擊者發送一筆 RBF 交易,輸出地址指向交易所或錢包,並支付低額手續費,防止交易過快被打包;
  2. 在交易所檢索到這筆 0 確認的交易後,攻擊者立刻發送一筆替換交易,並將輸出地址改爲攻擊者可控的其他地址,替換先前的發送給交易所或錢包的交易;
  3. 由於交易所或錢包在對 0 確認交易的處理存在問題,沒有校驗交易是否爲 RBF 交易和交易的確認狀態,直接在未確認的情況下入賬 RBF 交易,導致交易所或錢包被假充值、雙花、欺詐攻擊及對錢包進行 DoS 攻擊;

攻擊流程圖如下:

慢霧:簡析比特幣 RBF 假充值攻擊原理

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

防禦方案

  1. 交易所或錢包應禁止採用 0 確認的方式對比特幣充值進行入賬;
  2. 如需要對 0 確認交易進行入賬,必須檢測該交易不能爲 RBF 交易,具體爲交易 Input 中的 nSequence 字段值必須爲 0xffffff,任意未確認交易中包含非 0xffffff 值的 nSequence 應拒絕入賬;
  3. 檢查交易狀態,如檢查比特幣交易是否被打包,或已達到相應的確認數(如 3 個);
  4. 錢包應展示對應的交易確認狀態,防止欺詐攻擊;
    5.慢霧安全團隊已支持該攻擊的檢測,如錢包或交易所不確定自己的入賬方式是否存在問題,可聯繫慢霧安全團隊(team@slowmist.com)進行檢測

來源鏈接:mp.weixin.qq.com