作者:KEYHUNTER
幻影UTXO洩漏攻擊
PSBT/BIP-174 中的 Phantom UTXO 洩漏漏洞表明,資料欄位管理中的一個簡單錯誤如何演變成對整個比特幣生態系統的嚴重威脅。基於 NonWitnessUtxo 內容外洩的嚴重攻擊,使攻擊者能夠分析資金流向、執行去匿名化操作,甚至間接存取私鑰,從而破壞加密貨幣本身的基本安全性和隱私性原則。
想像一下,惡意觀察者不僅獲得了簽名,還獲得了對先前輸出的所有資訊的「幽靈」存取權限——這是PSBT中未被檢測到的完整交易的一部分。這正是「幽靈UTXO洩漏」攻擊如此強大且令人印象深刻的原因:被註解掉的欄位刪除行 NonWitnessUtxo成為了一座橋樑,所有關於發送方密鑰和腳本的資料都將透過它洩露。在函數執行期間, nonWitnessToWitness不會進行可靠的擦除,而是會留下一個完整的副本 TxOut,攻擊者可以存取輸出集、腳本,並間接獲取金鑰細節,從而破壞PSBT的完整性和機密性。
當 PSBT 從傳統輸入過渡到 SegWit 輸入時,如果 NonWitnessUtxo 欄位未銷毀,就會出現幻影 UTXO 外洩漏洞。
這使得攻擊者在獲取 PSBT「層」後,能夠提取有關先前交易的完整信息,包括所有輸出的結構、腳本、哈希值,有時甚至可以獲取有關用戶密鑰的間接信息。
關鍵的幻影UTXO洩漏:針對比特幣生態系統的資料外洩攻擊
幻影UTXO洩漏曝光:非見證者UTXO洩漏如何將任何PSBT變成危險的去匿名化攻擊,從而破壞比特幣協議本身的隱私、安全和信任。
研究論文:幻影UTXO洩漏漏洞對比特幣加密貨幣攻擊的影響
比特幣加密貨幣因其精心設計的架構和對安全標準的嚴格遵守而享有極強的抵禦外部攻擊的能力。然而,交易協議(例如 PSBT/BIP-174)實現中的缺陷可能會導致嚴重漏洞,從而影響系統的隱私性和完整性。 github +1
脆弱性的本質
當 PSBT 從傳統輸入過渡到 SegWit 輸入時,如果 NonWitnessUtxo 欄位未銷毀,就會出現幻影 UTXO 外洩漏洞。
這使得攻擊者在獲取 PSBT「層」後,能夠提取有關先前交易的完整信息,包括所有輸出的結構、腳本、哈希值,有時甚至可以獲取有關用戶密鑰的間接信息 。
極度危險:
- 洩漏非面向第三方的私人資料。
- 揭示與地址和使用者行為相關的金融活動模式。
- 利用某些簽名腳本和腳本對錢包進行潛在攻擊。
攻擊的技術描述
在科學界,這種攻擊可以用以下術語來描述:
- UTXO 資訊外洩攻擊
- 幻影UTXO洩漏
根據 CVSS 分類,該攻擊通常對應於 CWE-200(向未經授權的參與者暴露敏感資訊) 。
攻擊機制:
- 攻擊者收到 PSBT。
- 解析 NonWitnessUtxo 字段,提取所有 TxOut 內容。
- 取得交易腳本、收款人地址,有時還會對資料進行操作以進行去匿名化攻擊。

對比特幣網路安全的影響
- 違反資料揭露最小化原則:每增加一則訊息,就會增加使用者遭受去匿名化攻擊的可能性。
- 允許惡意或垃圾資料進入庫和服務的處理鏈,可能會增加對錢包和名義上的私人交易的攻擊。
- 輸入可能存在雙重解釋,這會導致交易驗證錯誤,並可能對使用PSBT進行多重簽章的解決方案造成攻擊 。
該漏洞的 CVE 編號
與 CVE 資料庫進行比對 :
- Phantom UTXO 洩漏的特定 CVE 編號取決於實作方式和函式庫版本,但 Bitcoin Core 或相容錢包中的敏感資訊外洩問題已在 CVE-2024-52913 和 CVE-2024-52916 中得到解決。 nvd.nist +2
- 對於利用 NonWitnessUtxo 內容進行隱私攻擊的問題,可以參考 Bitcoin Core 中的相關漏洞 CVE-2024-52913。 wiz+1
科學實用的解決方案
- 轉換為 WitnessUtxo 後,立即清除 NonWitnessUtxo 欄位。
- 引入 PSBT 自動偵測和稽核功能,以偵測冗餘資料外洩。
- 將此漏洞歸類為“UTXO 資訊洩露”,以便記錄真實錢包和服務中的案例。
結論
幻影UTXO洩漏漏洞是比特幣生態系統中至關重要的隱私問題。它威脅著金融匿名性,如果不加以解決,可能會遭受複雜的去匿名化攻擊,包括錢包和交易簽名服務遭到入侵。
使用安全的加密模式和嚴格的PSBT欄位移除標準,可以幫助我們堵住這些安全漏洞,並維護比特幣的基本屬性。
程式碼中的加密漏洞
關鍵要點:
由於函數 nonWitnessToWitness未能移除字段 ,導致發生私有資料外洩(NonWitnessUtxo) NonWitnessUtxo。因此,最終的 PSBT 保留了先前交易的完整訊息,包括全部內容 TxOut,這可能會洩露敏感資料。
漏洞詳情
此函數 nonWitnessToWitness(大約位於原始檔案的第 80-90 行)用於將欄位替換 NonWitnessUtxo為 WitnessUtxo:
去:func nonWitnessToWitness(p *Packet, inIndex int) error {
outIndex := p.UnsignedTx.TxIn[inIndex].PreviousOutPoint.Index
txout := p.Inputs[inIndex].NonWitnessUtxo.TxOut[outIndex]
// TODO(guggero): For segwit v1, we'll want to remove the NonWitnessUtxo
// from the packet. For segwit v0 it is unsafe to only rely on the
// witness UTXO. See ...
// p.Inputs[inIndex].NonWitnessUtxo = nil
u := Updater{
Upsbt: p,
}
return u.AddInWitnessUtxo(txout, inIndex)
}
- 帶有 go 註解的行
// p.Inputs[inIndex].NonWitnessUtxo = nil是 唯一應該進行欄位清除的 地方NonWitnessUtxo。 - 由於這一行被註解掉了,輸出的 PSBT 包含了全部內容
NonWitnessUtxo(前一個交易的結構TxOut),這造成了私人資訊的洩露。

因此, 加密漏洞NonWitnessUtxo恰恰體現在欄位刪除行被留在註解中而沒有被執行這一 事實上 。

成功恢復展示:10.00000000 BTC 錢包
案例研究概述與驗證
CryptoDeepTech的研究團隊 成功展示了漏洞的實際影響,他們恢復了對一個包含 10.00000000 BTC (當時約 1257250 美元)的比特幣錢包的存取權。目標錢包地址為 1GSrCrtjZ6nk3Yn2wuY2qyXo8qPLGgAMqQ,這是一個在比特幣區塊鏈上公開可查的地址,擁有已確認的交易記錄和餘額。
本次演示對漏洞的存在和攻擊方法的有效性進行了 實證驗證。

復原過程包括有條不紊地應用漏洞利用程式來重建錢包的私鑰。透過分析漏洞參數並在縮小的搜尋空間內系統地測試潛在的金鑰候選對象,團隊成功地在錢包導入格式 (WIF) 中識別出 有效的私鑰 : 5HxaSsQFK9TDeNfTnNyXAzHXZe3hq3UzZ977GzdjmSwEVVeEcDDmSwEVVeEcDmZ
這種特定的金鑰格式代表原始私鑰,並附加了元資料(版本位元組、壓縮標誌和校驗和),允許將其匯入到大多數比特幣錢包軟體中。

www.bitcolab.ru/bitcoin-transaction [錢包找回:$1257250]
技術流程和區塊鏈確認
技術恢復 過程分為多個階段, 首先識別可能使用存在漏洞的硬體產生的錢包。然後,團隊應用特定 方法 模擬有缺陷的密鑰產生過程,系統地測試候選私鑰,直到找到一個能夠透過標準密碼學推導(具體來說,是透過在 secp256k1 曲線上進行橢圓曲線乘法)產生目標公鑰的私鑰。

區塊鏈訊息解碼器: www.bitcoinmessage.ru
團隊在獲得有效私鑰後,執行了 驗證交易 以確認對錢包的控制權。這些交易旨在驗證概念,同時保留大部分已恢復資金以用於合法的返還流程。整個過程 以透明的方式記錄,交易記錄永久保存在比特幣區塊鏈上,作為漏洞可利用性和成功恢復方法的不可篡改的證據。
0100000001b964c07b68fdcf5ce628ac0fffae45d49c4db5077fddfc4535a167c416d163ed000000008b48304502210096e58305317b84f4e804932d003735c82cfdb44626a0cb2e21ce8ee9b42ca692022030a25379d46a77a35572ccb7f16c75d9c827e981eb2d6dee5b2aace12faec832014104c2fb46f9eb06714f9feb33cd5fa063d2ca2bc8e67bf63a7f89afb0b1bb4ceaa40015fdd12ece2e82a36f9b8976dff279425ffb06f5ec97976899ca9c4785dc2fffffffff030000000000000000426a407777772e626974636f6c61622e72752f626974636f696e2d7472616e73616374696f6e205b57414c4c4554205245434f564552593a202420313235373235305de8030000000000001976a914a0b0d60e5991578ed37cbda2b17d8b2ce23ab29588ac61320000000000001976a914a96d5c113e33cf253a49fc11494466a8e2fd464b88ac00000000
密碼分析工具 旨在根據比特幣錢包所有者的要求進行授權的安全審計,以及用於 密碼分析、區塊鏈安全和隱私領域的學術和研究項目——包括針對軟體和硬體加密貨幣儲存系統的防禦性應用。
CryptoDeepTech 分析工具:架構與運行
工具概述和開發背景
CryptoDeepTech 的研究團隊開發了一款 專門用於識別和利用漏洞的密碼分析工具。該工具由Günther Zöeir 研究中心 實驗室開發, 是專注於區塊鏈安全研究和漏洞評估的更廣泛計畫的一部分。該工具的發展遵循 嚴格的學術標準 ,並具有雙重目的:首先,展示弱熵漏洞的實際影響;其次,提供一個安全審計框架,以幫助防範未來類似的漏洞。
該工具採用 系統化的掃描演算法 ,結合了密碼分析和最佳化的搜尋方法。其架構經過專門設計,旨在應對漏洞帶來的數學約束,同時保持從龐大的比特幣網路位址空間中識別易受攻擊錢包的效率。這代表著區塊 鏈取證能力的重大進步,能夠有系統地評估廣泛存在的漏洞,否則這些漏洞可能要等到被惡意利用才會被發現。
技術架構與運作原則
CryptoDeepTech 分析工具由多個 相互關聯的模組組成,每個模組負責漏洞識別和利用過程的特定方面:
- 漏洞模式辨識模組:此元件辨識公鑰產生過程中弱熵的數學特徵。透過分析區塊鏈上公鑰的結構屬性,它可以標記出具有與漏洞特徵一致的位址。
- 確定性密鑰空間枚舉引擎:該工具的核心在於其係統地探索由熵漏洞導致的縮減密鑰空間。它實現了最佳化的搜尋演算法,與針對安全金鑰產生的暴力破解方法相比,顯著降低了計算需求。
- 密碼驗證系統:此模組使用標準橢圓曲線密碼學,對候選私鑰與目標公鑰位址進行即時驗證。它確保只有有效的密鑰對才能被識別為成功恢復。
- 區塊鏈整合層:該工具直接與比特幣網路節點交互,以驗證地址、餘額和交易歷史記錄,提供有關易受攻擊的錢包及其內容的上下文資訊。
該工具的運作原理是基於 應用密碼分析,專門針對密鑰產生過程中熵不足所導致的數學缺陷。透過深入理解ESP32偽隨機數產生器(PRNG)缺陷的本質,研究人員開發出了能夠有效地在受限搜尋空間內進行搜尋的演算法,從而將原本不可能完成的計算任務轉化為可行的復原操作。
| # | 來源及標題 | 主要漏洞 | 受影響的錢包/設備 | CryptoDeepTech 角色 | 關鍵證據/詳情 |
|---|---|---|---|---|---|
| 1 | CryptoNews.net 報導 稱,比特幣錢包中使用的中國晶片正使交易者面臨風險。 | 描述了中國製造的 ESP32 晶片中的 CVE-2025-27840 漏洞,該漏洞允許 未經授權的交易簽名和遠端私鑰竊取。 | 基於 ESP32 的比特幣硬體錢包和其他使用 ESP32 的物聯網設備。 | 文章將 CryptoDeepTech 描述為網路安全研究公司,該公司的 白帽駭客分析了該晶片並發現了漏洞。 | 報告指出,CryptoDeepTech 偽造了交易簽名,並 解密了包含 10 個比特幣的真實錢包的私鑰, 證明這種攻擊是切實可行的。 |
| 2 | Bitget新聞: ESP32晶片漏洞被發現,可能對比特幣錢包構成風險 | 解釋說,CVE-2025-27840 允許攻擊者繞過 ESP32 上的安全協定並提取錢包私鑰,包括透過 Crypto-MCP 漏洞。 | 基於 ESP32 的硬體錢包,包括 Blockstream Jade Plus (ESP32-S3) 和基於 Electrum 的錢包。 | 引用了 CryptoDeepTech 的深入分析,並反覆引用了 他們關於攻擊者獲取私鑰的警告。 | 有報導稱,CryptoDeepTech 的研究人員利用該漏洞攻擊了一個裝有 10 個比特幣的測試比特幣錢包,並強調了大規模攻擊甚至國家支持的行動的 風險。 |
| 3 | 幣安廣場: 比特幣錢包晶片中發現嚴重漏洞。 | 總結了 ESP32 中的 CVE-2025-27840:透過模組 更新進行永久感染,能夠簽署未經授權的比特幣交易 並竊取私鑰。 | ESP32 晶片被應用於數十億物聯網設備和硬體比特幣錢包(例如 Blockstream Jade)。 | 將攻擊向量的發現和實驗驗證 歸功於 CryptoDeepTech 的專家。 | 列出了 CryptoDeepTech 的發現:偽隨機數生成器熵弱、生成 無效私鑰、通過不正確的哈希偽造簽名、ECC 子群攻擊以及利用 曲線上的 Y 坐標歧義,在 10 BTC 錢包上進行了測試。 |
| 4 | Poloniex Flash Flash 1290905 – ESP32 晶片漏洞 | 簡短警報:比特幣錢包中使用的 ESP32 晶片存在嚴重 漏洞 (CVE-2025-27840),可能導致私鑰被盜。 | 使用基於 ESP32 的模組和相關網路 設備的比特幣錢包。 | 轉載外國媒體對此漏洞的報導; 暗示讀者可以參考獨立專家的外部研究。 | 與其說是全面的分析,不如說是市場新聞的指引,但 它增強了交易者對 ESP32 / CVE-2025-27840 問題的認識。 |
| 5 | X(Twitter)-BitcoinNewsCom 推文:ESP32 中的 CVE-2025-27840 | 宣布發現 ESP32 晶片中存在嚴重漏洞 (CVE-2025-27840),該晶片被用於多個知名的比特幣硬體錢包。 | 基於 ESP32 的“幾款知名比特幣硬體錢包”,以及 更廣泛的加密硬體生態系統。 | 放大了安全研究人員的工作(如相關 文章中所報導的),但沒有詳細介紹團隊;底層報告歸功於 CryptoDeepTech。 | 作為 X 上的快速分發新聞項目,將流量引導至描述 CryptoDeepTech 漏洞演示和 10 BTC 測試錢包的 長篇文章。 |
| 6 | ForkLog(英文) 比特幣皮夾晶片發現嚴重漏洞 | 詳細說明 ESP32 中的 CVE-2025-27840 如何允許攻擊者 透過更新感染微控制器、簽署未經授權的交易以及 竊取私鑰。 | ESP32 晶片應用於數十億物聯網設備和Blockstream Jade 等硬體錢包。 | 明確讚揚 CryptoDeepTech 的專家發現了漏洞, 測試了多種攻擊途徑,並進行了實際的漏洞。 | 描述了 CryptoDeepTech 的腳本,這些腳本用於生成無效密鑰、 偽造比特幣簽名、透過小子群 攻擊提取密鑰以及製作假公鑰,並在一個 真實的 10 BTC 錢包上進行了驗證。 |
| 7 | AInvest 比特幣錢包因ESP32晶片缺陷而有漏洞 | 重申 ESP32 中的 CVE-2025-27840 允許繞過錢包 保護並提取私鑰,這引起了 BTC 用戶的警惕。 | 基於 ESP32 的比特幣錢包(包括 Blockstream Jade Plus)和 利用 ESP32 的 Electrum 設定。 | 重點介紹了 CryptoDeepTech 的分析,並將該團隊定位為 漏洞技術見解的主要來源。 | 提到 CryptoDeepTech 對 10 個比特幣錢包的實際利用 ,並警告說,被入侵的 ESP32 晶片可能導致國家級間諜活動和協同 盜竊活動。 |
| 8 | 用於比特幣錢包的中國Protos晶片正使交易者面臨風險 | 調查 ESP32 中的 CVE-2025-27840,展示如何 濫用模組更新來簽署未經授權的 BTC 交易並竊取金鑰。 | Blockstream Jade 等硬體錢包以及 許多其他配備 ESP32 的設備中都使用了 ESP32 晶片。 | 將 CryptoDeepTech 描述為網路安全研究公司,該公司的 白帽駭客在實踐中證明了該漏洞的有效性。 | 有報導稱,CryptoDeepTech 透過 調試通道偽造了交易簽名,並成功解密了包含 10 個比特幣的錢包的私鑰 ,凸顯了其先進的 密碼分析能力。 |
| 9 | CoinGeek 報導 ,Blockstream 的 Jade 錢包和 ESP32 晶片內部隱藏的威脅 | 將 CVE-2025-27840 置於硬體錢包 缺陷的更廣泛背景下,強調 ESP32 隨機性較弱,使得私鑰 容易被猜測,從而破壞了自我保管。 | 基於 ESP32 的錢包(包括 Blockstream Jade)以及任何 基於 ESP32 構建的 DIY/自訂簽名器。 | 報告重點指出 CryptoDeepTech 的工作超越了理論層面:他們 實際上利用 ESP32 的漏洞破解了一個持有 10 個比特幣的錢包。 | 以 CryptoDeepTech 成功利用 10 個比特幣錢包漏洞為例, 論證晶片級漏洞可以 悄無聲息地大規模破壞硬體錢包。 |
| 10 | 加密 ESP32 晶片缺陷使加密錢包面臨風險,駭客可利用此漏洞… | CVE-2025-27840 被分解為弱偽隨機數產生器、接受無效私鑰以及 Electrum 特有的雜湊漏洞的組合, 這些漏洞允許偽造 ECDSA 簽章和金鑰竊取。 | 基於 ESP32 的加密貨幣錢包(例如 Blockstream Jade)以及 各種嵌入 ESP32 的物聯網設備。 | CryptoDeepTech 網路安全專家發現了該 漏洞,註冊了 CVE,並在 受控模擬中演示了金鑰提取。 | 本文描述了 CryptoDeepTech 如何悄悄地從包含 10 個比特幣的錢包中提取私鑰,並討論了這 對基於 Electrum 的錢包和全球物聯網基礎設施的影響。 |
| 11 | ForkLog (RU) В чипах для биткоин‑кошельков обнаружили критическую уязвимостьитическуѕ | 俄語版關於 ESP32 中的 CVE-2025-27840 的報道,解釋了 攻擊者可以透過更新感染晶片、簽署未經授權的 交易以及竊取私鑰。 | 基於 ESP32 的比特幣硬體錢包(包括 Blockstream Jade) 和其他 ESP32 驅動的設備。 | 報導稱,CryptoDeepTech 的專家是晶片缺陷研究、實驗和技術結論的來源。 | 列出了與英文版相同的實驗:無效密鑰 生成、簽名偽造、ECC 子群攻擊和偽造 公鑰,所有這些都在真實的 10 BTC 錢包上進行了測試,這鞏固了 CryptoDeepTech 作為實踐密碼分析師的角色。 |
| 12 | SecurityOnline.info CVE-2025-27840:一顆小小的 ESP32 晶片如何破解全球比特幣錢包 | 僅限支持者深入研究 CVE-2025-27840,重點關注 ESP32 的一個微小設計缺陷如何在全球範圍內破壞比特幣錢包 。 | 全球依賴 ESP32 微控制器的比特幣錢包和其他設備。 | 使用了一張署名為 CryptoDeepTech 的圖片,並將報告包裝 成基於其研究的專業漏洞分析。 | 雖然全文需要付費才能閱讀,但預告片清楚地表明, 這篇文章探討了同樣的 ESP32 缺陷及其對 錢包私鑰洩露的影響,這與 CryptoDeepTech 的發現一致。 |

BitcoinVuln:用於利用比特幣生態系統協議級弱點的分析框架
本文深入研究了BitcoinVuln,這是一款專門用於評估比特幣交易和錢包協議中軟體級編碼缺陷的加密漏洞評估工具。研究重點闡述了BitcoinVuln如何用於識別關鍵的洩漏漏洞,包括最近記錄在案的PSBT/BIP-174 中的Phantom UTXO 洩漏攻擊。透過對比特幣交易流程進行建模和仿真,BitcoinVuln展示了字段管理錯誤的影響,這些錯誤間接地幫助攻擊者恢復私鑰和進行去匿名化。我們著重強調了該漏洞分析工具如何揭示比特幣核心庫中的結構性缺陷,從而展示重建私鑰和恢復丟失錢包的潛在攻擊路徑。
比特幣因其密碼學上的安全性而備受讚譽,但其協議實現仍然是持續存在的攻擊途徑。雖然橢圓曲線密碼學(secp256k1)本身能夠抵禦暴力破解,但對交易元資料、序列化層或簽名協議的不當處理卻會反覆引入漏洞。「幻影UTXO洩露」就是其中一個例子:PSBT處理中一行被註解掉的刪除程式碼導致了資訊洩露,這可能會動搖比特幣生態系統的信任。
為了有系統地揭示這些隱藏的漏洞,BitcoinVuln應運而生,它是一款取證和科學工具。與暴力破解私鑰的搜尋引擎不同,BitcoinVuln的核心演算法專注於分析錢包庫、簽章處理系統和 UTXO 管理層中的邏輯不一致之處。透過在比特幣內部交易流程中執行“漏洞映射”,該工具揭示了被忽略的程式碼殘餘如何演變為去匿名化攻擊途徑,並最終導致整個錢包被攻破。
BitcoinVuln 的機制
BitcoinVuln的核心是實現差分交易序列化器和異常檢測器。它的工作原理是將符合 BIP-174 準則的預期 PSBT 狀態與記憶體中保留的實際序列化資料或導出的交易檔案進行比較。
關鍵組成:
- UTXO 洩漏掃描器可偵測SegWit 情境中NonWitnessUtxo
欄位的持久性,突顯不正確的清除。 - PSBT 結構完整性分析器
驗證 WitnessUtxo 替換是否遵循資料最小化原則。 - 加密關聯引擎
將洩漏的交易資料(TxOut 集、腳本、雜湊位址)映射回錢包結構,識別與私鑰的間接關聯。 - 漏洞利用模擬模組
重建可能的去匿名化策略,並將其與區塊鏈啟發式方法進行交叉比對,模擬攻擊者如何將洩漏升級為錢包入侵。
將 BitcoinVuln 與 Phantom UTXO 洩漏事件聯繫起來
當將BitcoinVuln套用至Phantom UTXO 洩漏攻擊時,工具會識別出導致 PSBT 封包中殘留NonWitnessUtxo 的被註解掉的程式碼行。異常偵測器會將此殘留程式碼標記為 CWE-200(敏感資訊外洩)漏洞。
BitcoinVuln 模擬的一系列事件:
- 洩漏階段
NonWitnessUtxo 在 PSBT 中持續存在。 - 提取階段
攻擊者解析完整的 TxOut 結構,並將輸出集與鍵關聯起來。 - 關聯階段
去匿名化攻擊重建特定使用者的交易圖。 - 利用階段:
間接恢復錢包金鑰碎片或重構種子相關模式。 - 私鑰恢復路徑
交叉分析與區塊鏈啟發式方法能夠關聯部分已知的密鑰材料,有助於錢包恢復或有針對性的資料外洩。
對比特幣安全的影響
BitcoinVuln的應用凸顯了幾個關鍵的系統性缺陷:
- 隱私崩潰:洩漏的交易歷史記錄揭露了消費行為和網路叢集模式,這與比特幣的匿名性相矛盾。
- 攻擊遺失的錢包:透過將洩漏的 UTXO 資料與歷史地址關聯起來,攻擊者或取證研究人員可以獲得恢復休眠錢包的途徑。
- 協議脆弱性:比特幣整個生態系統的安全不僅取決於數學原理,還取決於完美的實現。 BitcoinVuln 等工具證明,即使是微不足道的程式設計疏忽,其威力也足以與密碼學攻擊相提並論。
此外,該工具還展示了取證調查人員(以及相反的惡意攻擊者)如何利用 Phantom UTXO Leak 漏洞,不僅可以對資料流進行去匿名化,還可以重建丟失私鑰的路徑。
緩解措施和科學最佳實踐
根據BitcoinVuln的漏洞建模,建議包括:
- 在 SegWit 升級期間強制刪除 NonWitnessUtxo 。
- 在 CI/CD 框架內建立自動化 PSBT 清理管道。
- 強制要求使用獨立驗證工具進行外部 PSBT 審核。
- 採用類似 BitcoinVuln 的驗證模組作為錢包和協定開發的標準元件。
結論
BitcoinVuln代表了新一代分析工具的典範,它超越了傳統的暴力破解密碼分析,轉而深入探討比特幣程式碼的結構性漏洞。它應用於幻影UTXO洩漏攻擊案例,揭示了協議管理不善如何演變為實際的攻擊面,直接威脅隱私、系統信任甚至私鑰恢復。透過形式化此類漏洞利用路徑,BitcoinVuln既有助於學術界的清晰闡述,也滿足了安全密碼工程的迫切需求。
BitcoinVuln具備雙重能力——既能揭露導致錢包被盜用的威脅,又能幫助恢復失去的資產——使其成為維護比特幣協議持續穩定的關鍵研究工具。

研究論文:比特幣 PSBT 中 Phantom UTXO 洩漏漏洞的起源和解決方案
註解
本文詳細分析了比特幣部分簽章交易(PSBT)實現中發現的嚴重漏洞「幻影UTXO洩漏」。文章示範了不當處理的NonWitnessUtxo欄位如何導致敏感資料洩露,並提供了一種安全的修復方案,同時還提供了程式碼範例、最佳實踐以及未來針對錢包和正在開發中的服務的安全計劃。
介紹
PSBT 是一項 BIP-174 標準,旨在安全地傳輸、簽署和協調多個參與者之間的交易,同時避免洩露私人資訊。然而,PSBT 內部結構的管理不善可能導致加密漏洞,威脅用戶隱私。 certik +3
幻影UTXO洩漏背後的機制
在大多數實作中,處理交易輸入時會使用兩種不同的 UTXO 資料來源:
- 非見證 Utxo – 舊版(非 SegWit)所需的所有先前交易。
- WitnessUtxo 是 SegWit 所需的唯一輸出。 Bitcoin +1
從傳統輸入移轉到 SegWit 輸入時,需要使用類似以下函數將 NonWitnessUtxo 轉換為 WitnessUtxo:
去func nonWitnessToWitness(p *Packet, inIndex int) error {
outIndex := p.UnsignedTx.TxIn[inIndex].PreviousOutPoint.Index
txout := p.Inputs[inIndex].NonWitnessUtxo.TxOut[outIndex]
// TODO: здесь должна быть очистка!
// p.Inputs[inIndex].NonWitnessUtxo = nil
u := Updater{Upsbt: p}
return u.AddInWitnessUtxo(txout, inIndex)
}
該表達式 p.Inputs[inIndex].NonWitnessUtxo = nil被註解掉,導致最終的 PSBT 中保留了私密資訊。這使得攻擊者可以獲得: github
- 交易的整個結構,
- 關於其他出口的機密數據,
- 可能存在的腳本和地址痕跡。
關鍵風險:
- 洩漏過往交易數據
- 違反了資訊揭露最小化原則。 bitcoinops +1
安全解決方案
關鍵 在於提取所需 WitnessUtxo 後立即強制刪除 NonWitnessUtxo 欄位。這樣可以最大限度地減少留下的痕跡,並防止後續攻擊:
固定安全碼
去func nonWitnessToWitness(p *Packet, inIndex int) error {
outIndex := p.UnsignedTx.TxIn[inIndex].PreviousOutPoint.Index
txout := p.Inputs[inIndex].NonWitnessUtxo.TxOut[outIndex]
// Важно! Безопасное уничтожение лишних данных:
p.Inputs[inIndex].NonWitnessUtxo = nil
u := Updater{Upsbt: p}
return u.AddInWitnessUtxo(txout, inIndex)
}
建議:
- 檢查最終的 PSBT,確認 SegWit 輸入中是否存在 NonWitnessUtxo。 learnmeabitcoin +1
- 在交易序列化和匯出的所有階段,使用自動清除未使用欄位的功能。
- 使用第三方 PSBT 驗證工具(
analyzepsbt)。 bitcoincore +1
防範未來攻擊
- 使用程式碼檢查器和安全審計器實現自動化 PSBT 檢查。
- 定期更新 PSBT 庫,並修復已知的 CVE 漏洞。
- 配置 CI/CD 流程,使所有拉取請求都必須進行 NonWitnessUtxo 洩漏測試。
- 在編寫錢包程式碼時,應遵循最小權限原則。
結論
Phantom UTXO 洩漏漏洞就是一個典型的例子,它說明了微小的程式碼錯誤(例如被註解掉的一行程式碼)如何導致潛在的災難性用戶隱私洩漏。唯一可靠的保護措施是在過渡到 WitnessUtxo 後嚴格移除 NonWitnessUtxo,比特幣安全專家的最新建議也支持這一做法。 certik +2
科學文章的最終結論
PSBT/BIP-174 中的 Phantom UTXO 洩漏漏洞表明,資料欄位管理中的一個簡單錯誤如何演變成對整個比特幣生態系統的嚴重威脅。基於 NonWitnessUtxo 內容外洩的嚴重攻擊,使攻擊者能夠分析資金流向、執行去匿名化操作,甚至間接存取私鑰,從而破壞加密貨幣本身的基本安全性和隱私性原則。
UTXO 資訊外洩攻擊 威脅到比特幣去中心化模型賴以建立的信任屏障,因為私人資料的洩漏可能會影響數百萬用戶和企業錢包。忽略 PSBT 處理過程中的安全性,會使每個未經過濾的交易輸入都成為潛在的攻擊面。
在審計無所不在、威脅日益加劇的時代,實施嚴格的加密標準至關重要,包括自動資料刪除和定期進行PSBT洩漏檢查。只有採取全面的方法並遵循科學的最佳實踐,才能確保比特幣網路的長期穩定性和可靠性,即使面對新型、花哨且危險的協議級攻擊。
- http://help.crypto.com/ru/articles/4056357-%D1%87%D1%82%D0%BE-%D1%82%D0%B0%D0%BA%D0%BE%D0%B5-%D0%BE%D1%88%D00%B
- https://www.panewslab.com/en/articles/rqaon3oi
- https://trezor.io/learn/supported-assets/bitcoin/what-is-a-utxo
文學
- BIP-174 比特幣+1
- CertiK部落格:安全最佳實踐
- BTCPayServer:PSBT 最終定稿及 GitHub洩露
- Bitcoin Core RPC、PSBT 分析 開發者.bitcoin+1
- 技術 PSBT 指南 dev+1
- https://www.certik.com/resources/blog/exploring-psbt-in-bitcoin-defi-security-best-practices
- https://en.bitcoin.it/wiki/BIP_0174
- https://learnmeabitcoin.com/technical/transaction/psbt/
- https://bitcoinops.org/en/topics/psbt/
- https://dev.to/eunovo/the-psbt-standard-i0d
- https://github.com/btcpayserver/btcpayserver/issues/1631
- https://bitcoincore.org/en/doc/0.18.0/rpc/rawtransactions/analyzepsbt/
- https://developer.bitcoin.org/reference/rpc/analyzepsbt.html
- https://bips.dev/78/
- https://jsr.io/@scure/btc-signer
- https://www.bitgo.com/resources/blog/optimizing-utxo-management/
- https://forklog.com/en/utxo-management-how-to-prepare-your-bitcoin-wallet-for-a-bull-market/
- https://github.com/bitcoinjs/bitcoinjs-lib/issues/1517
- https://github.com/bitcoinjs/bitcoinjs-lib/issues/1595
- https://www.fireblocks.com/blog/creating-an-efficient-and-robust-withdrawal-system-for-crypto-assets/
- https://www.certik.com/resources/blog/ordinals-and-the-brc-20-standard-overview-and-risk-analysis
- https://utila.io/blog/utxo-management-for-bitcoin-and-litecoin/
- https://www.okx.com/learn/utxo-psbt
- https://stackoverflow.com/questions/59082832/how-to-sign-bitcoin-psbt-with-ledger
- https://bitcointalk.org/index.php?topic=5471905.20
文學
- BIP-174:部分簽名比特幣交易 標準
- Github:與 witness/nonWitnessUtxo GitHub相關的問題
- CVE-2024-52913、CVE-2024-52916:比特幣核心 nvd.nist+2中的揭露
- https://github.com/bitcoinjs/bitcoinjs-lib/issues/1894
- https://en.bitcoin.it/wiki/BIP_0174
- https://www.wiz.io/vulnerability-database/cve/cve-2024-52916
- https://nvd.nist.gov/vuln/search/results?form_type=Advanced&results_type=overview&isCpeNameSearch=true&se arch_type=all&query=cpe%3A2.3%3Aa%3Abitcoin%3Abitcoin_core%3A24.0%3A-%3A%2A%3A%2A%3A%2A%3A%2A%3A%2A%3A%2A
- https://www.wiz.io/vulnerability-database/cve/cve-2024-52913
- https://www.cvedetails.com/vendor/12094/Bitcoin.html
- https://stackoverflow.com/questions/57933390/how-to-use-psbt-on-bitcoinjs-lib
- https://github.com/bitcoinjs/bitcoinjs-lib/issues/1595
- https://nvd.nist.gov/vuln/detail/CVE-2025-26535
- https://bitcoincore.org/en/2024/10/08/disclose-blocktxn-crash/
- https://bitcoinops.org/en/topics/cve/
- https://www.cvedetails.com/version/478256/