
Bitcoin Core 開發團隊於 6 月 12 日在 X 發文,確認 Bitcoin Core 31.0 版本新引入的 -privatebroadcast 功能存在隱私漏洞:在特定網路條件下,若 v2 握手失敗,將透過 IPv4 或 IPv6 連接對等節點,從而向接收方洩露發送者的明網 IP 地址。
根據 Bitcoin Core 官方公告,以下五項條件全部成立時,節點才會受到此漏洞影響:
· 節點運行的是 Bitcoin Core 31.0,且已啟用 -privatebroadcast 功能
· 交易透過 RPC 指令 sendrawtransaction 廣播(錢包 RPC 如 sendtoaddress、sendall 等不使用私有廣播,不受影響)
· 可直接建立出站 IPv4 或 IPv6 連線(無 -onlynet 限制,且無 -proxy=... 配置)
· BIP324 v2 傳輸未被禁用(未設置 -v2transport=0)
連線至 onion 及 I2P 對等節點的連線不受影響,因為在任何 v1 重試中,這些連線始終透過各自的代理路由。
根據官方說明,漏洞的觸發機制:當私有廣播選擇支援 v2(BIP324)傳輸的 IPv4 或 IPv6 對等節點時,初始連線如預期透過 Tor 代理路由。若 v2 握手失敗,Bitcoin Core 會嘗試以 v1 協議重試,此 v1 重試不透過 Tor 代理路由,而是直接透過 IPv4 或 IPv6 連接,從而洩露發起者的 IP 地址。
此行為違反了 31.0 版本說明中的隱私保證:「接收者永遠不會知道他們的 IP 位址(以及地理位置)」。開發團隊確認,此漏洞最有可能由惡意對等節點故意關閉 v2 握手、以強制觸發 v1 重試的方式人為觸發。
Bitcoin Core 官方提供以下三種臨時解決方案:
方案一(推薦):直接禁用 -privatebroadcast 設定 -privatebroadcast=0
方案二:禁用 v2 傳輸 設定 -v2transport=0。注意:此設定將導致節點所有連線均使用未加密的 v1 協議,在明網上更容易被指紋識別及遭受審查。
方案三:將 IPv4/IPv6 出站流量路由至 Tor 設定 -proxy=127.0.0.1:9050(按實際 Tor SOCKS 端口替換)。注意:此設定將使節點更容易受到女巫攻擊(Sybil Attack)。
根據 Bitcoin Core 官方公告,錢包 RPC(如 sendtoaddress、sendall 等)不使用私有廣播功能,因此不受此漏洞影響。此漏洞僅在透過 sendrawtransaction 進行廣播且滿足其餘四項條件時才會觸發。
根據官方說明,對於實際支援 v2 傳輸的對等節點,v2 握手正常情況下不太可能失敗。此漏洞最有可能由惡意對等節點故意關閉 v2 握手以強制 v1 重試而被人為觸發。
根據 Bitcoin Core 官方公告,修復方案將隨 31.1 版本發布,但公告未提供具體發布日期。官方建議在升級至 31.1 之前,採用上述三種臨時解決方案之一。