Bitcoin CVE 概覽:歷史安全漏洞回顧
Bitcoin 網路多年來面臨各種安全挑戰,導致多個常見漏洞和暴露(CVE)被識別和記錄。本文概述了影響 Bitcoin 的重要 CVE,強調網路在安全實踐方面的持續演進。

重要 Bitcoin CVE 列表:
- CVE-2010-5137 - OP_LSHIFT 崩潰
- CVE-2010-5141 - 交易處理錯誤
- CVE-2010-5138 - 無限 SigOp DoS
- CVE-2010-5139 - 數值溢出事件
- CVE-2010-5140 - 永久未確認交易
- CVE-2011-4447 - 錢包未加密
- CVE-2012-1909 - 交易覆寫
- CVE-2012-1910 - MingW 非線程安全
- CVE-2012-2459 - 透過 Merkle 樹的區塊雜湊碰撞
- CVE-2012-3789 - 孤兒交易資源限制
- CVE-2012-4682 - 未指定的阻斷服務
- CVE-2012-4683 - CPU 耗盡 DoS 警報
- CVE-2012-4684 - 透過可塑性簽名的全網路 DoS
- CVE-2013-2272 - 遠端錢包位址探測
- CVE-2013-2273 - 可預測的找零輸出
- CVE-2013-2292 - 需要超過 3 分鐘驗證的交易
- CVE-2013-2293 - 順序磁碟查詢延遲
- CVE-2013-3219 - 未強制執行的區塊協議規則
- CVE-2013-3220 - 不一致的 BDB 鎖定交互
- CVE-2013-4627 - 批量交易資訊導致的記憶體耗盡
- CVE-2013-4165 - RPC 認證中的時間洩漏
- CVE-2013-5700 - 透過 Bloom Filter 的遠端 P2P 崩潰
- CVE-2016-8889 - Debug Console 日誌儲存敏感資訊
- CVE-2018-17144 - 缺少重複輸入檢查
精選 Bitcoin CVE 詳細分析
CVE-2010-5137
日期: 2010 年 7 月 28 日
- 摘要: 涉及
OP_LSHIFT的錯誤導致 Bitcoin 客戶端崩潰。此漏洞從未在主網路上被利用,並在 Bitcoin 0.3.5 版本中修復。發現後,出於安全原因,幾個當前未使用的腳本指令被禁用。
CVE-2010-5141
日期: 2010 年 7 月 28 日
- 摘要: 此錯誤允許攻擊者花費他們不擁有的幣。同樣在 0.3.5 版本中解決,採取了類似於 CVE-2010-5137 的預防性安全措施。
CVE-2010-5138
日期: 2010 年 7 月 29 日
- 摘要: 此漏洞涉及區塊 71036 包含多個具有過多
OP_CHECKSIG操作的交易,導致潛在的阻斷服務攻擊。新的 Bitcoin 版本迅速發布以解決此問題。
CVE-2010-5139
日期: 2010 年 8 月 15 日
- 摘要: 區塊 74638 中的一筆交易由於輸出值總和溢出,在兩個位址上創建了超過 1840 億個 Bitcoin。這導致了區塊鏈分叉,後來在區塊 74691 通過超越錯誤鏈而解決。
CVE-2010-5140
日期: 2010 年 9 月 29 日
- 摘要: 由於 Bitcoin 程式碼的更改允許低於 0.01 的免費交易,使用者報告交易未確認。這些交易無限期保持未確認狀態。網路後來要求此類交易支付 0.01 費用,並實施了修復。
CVE-2011-4447
日期: 0.4.1 和 0.5.0rc 版本之前
- 摘要: wxBitcoin 和 Bitcoin 0.4.x 中的「加密錢包」功能與 BSDDB 的刪除功能存在不當交互,導致未加密的私鑰可能從 Bitcoin 錢包文件中暴露。
CVE-2012-1909
日期: 0.4.4 版本之前
- 摘要: bitcoind、wxBitcoin、Bitcoin-Qt 和其他使用 Bitcoin 協議的程式中的此問題涉及無法處理具有相同標識符的多個交易,導致透過重複 coinbase 交易的阻斷服務。
CVE-2012-1910
日期: Windows 上的 Bitcoin-Qt 0.8.0rc4 之前
- 摘要: 應用程式未使用 MinGW 的多線程安全異常處理,允許遠端攻擊者透過精心設計的 Bitcoin 協議訊息造成阻斷服務或可能執行任意程式碼。
CVE-2012-2459
- 摘要: 透過在 Merkle 樹中複製交易可以輕易實現區塊雜湊碰撞的漏洞。這些碰撞是無效的,但可用於分叉區塊鏈並可能實現雙花攻擊。
CVE-2012-3789
日期: 2012 年 5 月
- 摘要: 報告了兩個漏洞,其中更嚴重的一個允許連接的對等方透過發送一系列特製交易來掛起受害者的客戶端,作為阻斷服務攻擊。
CVE-2012-4684
- 問題: 在 0.7.0 版本中,警報由訊息的雜湊(包括簽名)識別。此設計缺陷允許攻擊者透過更改現有警報的簽名來傳播大量有效警報。
- 影響: 此漏洞可能導致 RAM 耗盡,可能停止網路中的所有 Bitcoin 節點。
CVE-2013-2272
- 問題: bitcoind 中的 CTxMemPool::accept 方法包含一個防小額攻擊保護機制。然而,此機制允許遠端攻擊者透過一系列大額、費用不足的 Bitcoin 交易來確定錢包位址和 IP 位址之間的關聯。
- 影響: 此漏洞透過暴露錢包和 IP 位址之間的連結而損害了使用者隱私。
CVE-2013-2273
- 問題: 較早版本的 bitcoind 和 Bitcoin-Qt 存在漏洞,允許遠端攻擊者由於 Bitcoin 交易中可預測的輸出而獲取有關返回找零的潛在敏感資訊。
- 影響: 此問題引發了對交易隱私和使用者資訊安全的擔憂。
CVE-2013-2292 和 CVE-2013-2293
- 問題: 較早版本的 bitcoind 和 Bitcoin-Qt 容易受到具有多個 OP_CHECKSIG 腳本操作碼的非標準 Bitcoin 交易的影響,導致阻斷服務。這些版本也容易受到強制過度讀取區塊鏈部分的攻擊,延遲其他處理。
- 影響: 這些漏洞可能導致網路中斷並影響交易處理效率。
CVE-2013-3219
- 問題: 具有 Berkeley DB 鎖的較舊版本 bitcoind 和 Bitcoin-Qt 允許遠端攻擊者透過在大型區塊中觸發錯誤來繞過存取限制並執行雙花。
- 影響: 此缺陷使網路面臨雙花攻擊,破壞了區塊鏈的可靠性。
CVE-2013-3220
- 問題: 對區塊大小的錯誤評估(可能需要過多的資料庫鎖)允許遠端攻擊者造成阻斷服務(分裂)並啟用某些雙花功能。
- 影響: 此問題威脅網路穩定性並開啟了雙花攻擊的可能性。
CVE-2013-4627
- 日期: 2013 年 6 月
- 摘要: 過多 Tx 資訊導致的記憶體耗盡
- 修復部署: 99.9%
- 詳情: 此漏洞允許遠端攻擊者透過發送大量 Tx 訊息造成記憶體消耗的阻斷服務(DoS)。
CVE-2013-4165
- 日期: 2013 年 7 月 20 日
- 摘要: RPC 認證中的時間洩漏
- 修復部署: 99.9%
- 詳情: 在 bitcoind 0.8.1 中,
bitcoinrpc.cpp中的HTTPAuthorized函數在檢測到密碼的第一個錯誤位元組時會洩漏認證失敗的資訊。此漏洞使遠端攻擊者更容易透過時序側通道攻擊確定密碼。
CVE-2013-5700
- 日期: 2013 年 9 月 4 日
- 摘要: 透過 bloom filter 的遠端 P2P 崩潰
- 修復部署: 99.9%
- 詳情: bitcoind 和 Bitcoin-Qt 0.8.x(至 0.8.4rc1)中的 Bloom Filter 實現允許遠端攻擊者透過特製的訊息序列造成阻斷服務(除以零錯誤和守護程式崩潰)。
CVE-2016-8889
- 日期: 2016 年 10 月 27 日
- 摘要: Debug console 日誌儲存敏感資訊
- 修復部署: 100%
- 詳情: 在 Bitcoin Knots v0.11.0.ljr20150711 至 v0.13.0.knots20160814(在 v0.13.1.knots20161027 中修復)中,debug console 在其命令歷史日誌中儲存敏感資訊,包括私鑰和錢包密碼。
CVE-2018-17144
- 日期: 2018 年 9 月 17 日
- 摘要: 缺少重複輸入檢查
- 修復部署: 13%
- 相關閱讀:
- 詳情: 此關鍵錯誤涉及缺少對重複交易的檢查。它對網路完整性構成重大威脅,允許 Bitcoin 潛在通膨超過其 2100 萬上限並導致雙花漏洞。由於其對整個 Bitcoin 區塊鏈信任和安全的潛在影響,此 CVE 特別令人擔憂。