Bitcoin CVE

Bitcoin CVE CVE(Common Vulnerabilities and Exposures,常見的漏洞和風險) 該項目整理Bitcoin曾經出現過的CVE

目錄

CVE-2010-5137

日期:2010-07-28 摘要:OP_LSHIFT崩潰 修復部署:100%

2010年7月28日,在測試網絡上發現並演示了兩個 Bug 。一個處理包含 OP_LSHIFT 的 Tx 時,一個機器上的 Bitcoin 崩潰。這從未在主網絡上被利用,並由 Bitcoin 版本 0.3.5 修復。 在發現這些錯誤之後,許多當前未使用的腳本字被禁用,以確保安全。

CVE-2010-5141

日期:2010-07-28 摘要:? 修復部署:100%

2010年7月28日,在測試網絡上發現並演示了兩個 Bug 。一個利用了 Tx 處理程式碼中的錯誤,並允許攻擊者花費他們不擁有的硬幣。這從未在主網絡上被利用,並由 Bitcoin 版本 0.3.5 修復。

在發現這些錯誤之後,許多當前未使用的腳本字被禁用以確保安全。

CVE-2010-5138

日期: 2010-07-29 摘要: 無限SigOp DoS 修復部署: 100%

在2010年7月29日,發現第 71036 塊中多個具有大量 OP_CHECKSIG 指令的 Tx 。應該只有一個這樣的指令。這導致每個節點執行額外的不必要工作,並且它可能被用作拒絕服務攻擊。Bitcoin的新版本很快發布。新版本沒有導致主網路上的分叉, 但在Bitcoin測試網路中有導致分岔過 (在那裡有人玩了更多的攻擊)。

CVE-2010-5139

日期: 2010-08-15 摘要: 組合輸出溢出 修復部署: 100%

在2010年8月15日,發現第74638塊中一個Tx,該Tx在兩個不同的地址創建了超過1840億個Bitcoin。這是可能的,因為用於在將Tx塞進區塊之前,檢查Tx的程式碼沒有考慮輸出如此大,以至於它們在求和時溢出的情況。在事件發生後的幾個小時內,發佈了新版本。區塊鏈必須分叉。雖然許多未修補的節點繼續建立在『壞掉』區塊鏈上,但『正常』區塊鏈在塊高度74691處超越了『壞掉』區塊鏈。對於使用最長鏈的人來說,不正常的Tx不再出現。

CVE-2010-5140

日期:2010-09-29 摘要:永遠不會確認Tx 修復部署:100%

2010年9月29日左右,有人開始回報他們發送的Tx無法被確認。之所以發生這種情況,是因為有人修改了Bitcoin程式,發送小於0.01的Tx不需負擔任何手續費。網絡要求此類Tx需要負擔0.01手續費(基本上禁止這些Tx ),因此Tx 永遠保持0次確認。這成為一個更嚴重的問題,因為Bitcoin將使用從0次確認Tx 中獲得的Bitcoin,再次發送Tx ,這些Tx 結果也永遠不會確認。因為Bitcoin傾向於發送較小的硬幣,所以這些無效Tx 迅速成倍增加,污染了接受它們的每個人的Bitcoin錢包。 Bitcoin被更改為僅選擇至少1確認的硬幣。其餘的小於0.01Tx 由generators清理,他們修改了Bitcoin的版本,不需要支付小額費用。然而,由於許多中間Tx 已被網絡移除,並且必須由原始Tx 發起人重新廣播到Bitcoin網路,因此需要一段時間才能清除所有內容。

CVE-2011-4447

日期:2011-11-11 摘要:錢包非加密 修復部署:100%

在0.4.1 和0.5.0rc 之前, wxBitcoin 和的0.4.x 中的 ‘加密錢包’ 功能與 BSDDB 的刪除功能沒有適當的交互, 這允許依賴上下文的攻擊者從Bitcoin錢包檔獲取未加密的私金。繞過 BSDDB 介面和讀取標記為刪除的項。

CVE-2012-1909

日期:2012-03-07 摘要:Tx 覆蓋 修復部署:100%

在0.4.4之前的bitcoind,wxBitcoin,Bitcoin-Qt和其他程序中使用的Bitcoin協議不能正確處理具有相同標識符的多個Tx,它允許遠程攻擊者通過利用創建重複的coinbase Tx的功能導致拒絕服務(不可靠的Tx)。

CVE-2012-1910

日期: 2012-03-17 總結: MingW 非多執行緒 修復部署: 100%

Bitcoin-Qt 0.5.0.x在0.5.0.5之前; 0.5.3.1之前的0.5.1.x,0.5.2.x和0.5.3.x;在Windows上0.6.0rc4之前的0.6.x和0.6.x不使用MinGW多執行緒安全異常處理,它允許遠程攻擊者通過精心設計的Bitcoin協議消息導致拒絕服務(應用程序崩潰)或可能執行任意程式碼。

CVE-2012-2459

日期:2012-05-14 摘要:區塊Hash值碰撞(通過 Merkle Tree) 修復部署:100%

可以通過複製 Merkle Tree 中的Tx來輕鬆地進行區塊Hash值碰撞。這樣的碰撞是無效的,但如果記錄(如0.6.1之前的Bitcoin-Qt和bitcoind那樣)將阻止接受具有相同Hash值的合法區塊。這可以用來分叉區塊鏈,包括深度雙花攻擊。

CVE-2012-3789

日期:2012-06-20 摘要:(缺乏)孤兒txn資源限制 修復部署:100%

此報告包含有關2012年5月發現的兩個新漏洞的信息。更嚴重的一個允許連接的peer,通過發送特製Tx流在不到20分鐘時間,掛起受害者的客戶端應用程序,作為拒絕服務攻擊。

CVE-2012-4682

日期: 摘要: 修復部署:100%

Bitcoin 和 Bitcoin-Qt 中未指定的漏洞允許攻擊者通過未知向量導致拒絕服務,這是一個與 CVE-2012-4683 不同的漏洞。

CVE-2012-4683

日期: 2012-08-23 摘要: 透過CPU耗盡警報進行 DoS 修復部署: 100%

Bitcoin 協議有一個警報系統,可以傳播有關數字貨幣的重要信息。警報使用私有 ECDA 密鑰簽名,因此只有開發團隊才能發出新警報。針對收到的每個警報檢查警報簽名。每次檢查都需要一些時間,通常在 1 到 4 毫秒之間。驗證時間取決於簽名是否正確。因此,攻擊者可能會在節點中使用動態生成的無效警報來灌爆,並耗盡受害者的節點CPU。惡意客戶端應用程序可以開始以每秒近 3000 個警報/秒的速率發送無效警報,以獲得 64 千字節/秒的鏈接。計算機的速度會明顯減慢。即使使用 3 Kbytes / sec的帶寬,攻擊也能正常工作,因此即使是慢速網絡鏈接也可用於攻擊。

CVE-2012-4684

日期:2012-08-24 摘要:透過可塑性簽名的警報對全網DoS 修復部署:100%

然而,在先前版本 0.7.0 中,警報由消息的散列標識,其中包括簽名。Bitcoin 接受 BED 編碼的簽名,這些簽名具有可塑性。攻擊者通過更改仍在循環中的警報的簽名以高速率構建新簽名,從而顯著增加在網絡上傳播的有效警報的數量。這導致在大約 4 小時內 RAM 耗盡而停止網絡中的所有 Bitcoin 節點。攻擊是持久的,因為如果重新啟動的節點被在線對等體再次淹沒。

CVE-2013-2272

日期:2013-01-11 摘要:遠端發現節點的錢包地址 修復部署:99.99%

他在 bitcoind 中的 CTxMemPool :: accept 方法中使用了 penny-flooding 保護機制,允許遠程攻擊者通過一系列費用不足的大型 Bitcoin Tx 來確定錢包地址和IP地址之間的關聯。

CVE-2013-2273

日期:2013-01-30 摘要:可預測的更改輸出 修復部署:99.99%

bitcoind 和 Bitcoin-Qt 0.4.9rc1 之前版本,0.5.8rc1之前的0.5。X版本,0.6.0.11rc1之前的0.6.0版本,0.6.1至0.6.5rc1之前的0.6.5版本,0.7.3rc1之前的0.7.x版本中存在漏洞。通過利用在 Bitcoin Tx 的輸出中一定的可預測性,遠程攻擊者利用該漏洞獲得有關返回變更的潛在敏感信息。

CVE-2013-2292

日期: 2013-01-30 摘要: 需要至少3分鐘才能驗證的Tx 修復部署: 0%

bitcoind 和 Bitcoin-Qt 0.8.0及更早版本允許遠程攻擊者通過挖掘一個塊來創建一個包含多個 OP_CHECKSIG 腳本操作碼的非標準 Bitcoin Tx ,從而導致拒絕服務(電力消耗)。

CVE-2013-2293

日期:2013-02-14 摘要:連續硬碟查找 修復部署:99.99%

Tx 處理在 Satoshi Bitcoin 客戶端有兩個階段。在第一階段,提取 Tx 輸入。這是通過將包含輸入引用的輸出的 Tx 引入 RAM 來完成的。在第二階段,驗證先前的輸出是未花費的,並評估相關的腳本。由於雙花不被協議規則視為 DoS 嘗試,因此引用先前花費的輸出的事務將通過第一個處理階段而不被丟棄。因此,攻擊者可以構造 Tx,這些 Tx 在被處理的第二階段被丟棄之前,需要受害者應用程序尋找和讀取可能在存儲文件中分散的區塊鏈的太多部分,從而延遲任何其他處理。

CVE-2013-3219

日期: 2013-03-11 摘要: 非強制的區塊協議規則 修復部署: 100%

0.8.1 之前的 bitcoind 和 Bitcoin-Qt 0.8.x非強制的區塊協議規則,允許遠端攻擊者繞過預期的訪問限制,並通過在舊版本觸發錯誤的 Berkeley DB鎖定的大區塊進行雙花攻擊。

CVE-2013-3220

日期:2013-03-11 摘要:不一致的BDB鎖限制交互 修復部署:99.99%

錯誤的評估區塊的大小是否可能需要過多的資料庫鎖,允許遠程攻擊者通過觸發錯誤的 Berkeley DB鎖定的大區塊來導致拒絕服務(分裂)並啟用某些雙花功能。

CVE-2013-4627

日期: 2013-06-?? 摘要: 大量 Tx 信息導致記憶體耗盡 修復部署: 99.9%

允許遠端攻擊者通過大量 Tx 消息資料導致拒絕服務 (記憶體消耗)。

CVE-2013-4165

日期:2013-07-20 摘要:RPC身份驗證中的時間洩漏 修復部署:99.9%

bitcoind 0.8.1 中 bitcoinrpc.cpp 中的 HTTPAuthorized 函數在檢測到密碼的第一個錯誤字節時提供有關身份驗證失敗的信息,這使遠程攻擊者更容易通過定時側通道攻擊來確定密碼

CVE-2013-5700

日期:2013-09-04 摘要:通過bloom過濾器導致遠程p2p崩潰 修復部署:99.9%

bitcoind 中的 Bloom Filter 實現和 0.8.4rc1 之前的 Bitcoin-Qt 0.8.x 允許遠程攻擊者通過精心設計的消息序列導致拒絕服務(被零除錯誤和守護進程崩潰)。

CVE-2016-8889

發佈時間: 2016-10-27 摘要:除錯控制台紀錄儲存敏感信息 修復部署: 100%

在Bitcoin Knots v0.11.0.ljr20150711 到 v0.13.0.knots20160814(修復於v0.13.1.knots20161027)中,除錯控制台在其指令歷史記錄中,儲存包括私鑰和錢包密碼的敏感信息。

CVE-2018-17144

日期:2018-09-17 摘要:缺少檢查重複輸入 修復部署:13%

  1. CVE-2018-17144: The Aftermath of a Catastrophic Bitcoin Bug
  2. Bitcoin Core Bug CVE-2018–17144: An Analysis
Written on September 14, 2018