Bitcoin Core 26.2 釋出
Bitcoin Core 26.2 簽署時不再假定 TapMiniscript 符合 sane 條件(#29853);getnetworkhashps 遇到無效參數會丟出錯誤(#28554),setmocktime 也有了強制上限(#29869)。建置同時支援 miniupnpc 2.2.8。
Bitcoin Core
比特幣的參考實作。其網站發布新版本消息、安全性公告與專案聲明。
119 篇文章
Bitcoin Core 26.2 簽署時不再假定 TapMiniscript 符合 sane 條件(#29853);getnetworkhashps 遇到無效參數會丟出錯誤(#28554),setmocktime 也有了強制上限(#29869)。建置同時支援 miniupnpc 2.2.8。
Bitcoin Core
Bitcoin Core 0.10.1 之前,接收訊息最大可達 32 MiB,攻擊者每條連線都能逼節點配置這麼多記憶體,甚至可能造成當機。Bitcointalk 使用者 Evil-Knievel 通報此問題,#5843 把上限砍到 2 MiB,後來因 Segwit 提高到 4 MB。原訂 2015 年的揭露遭到延後,細節到 2024 年才公開。
Bitcoin Core
IPv6 讓灌大 Bitcoin Core 無上限的封鎖清單變得很便宜,而每則 GETADDR 訊息又會針對回傳的每個位址掃描該清單,最多 2500 個。記憶體當機與 CPU 消耗這兩個問題評為高風險,皆由 #19219 修復,收錄於 0.20.1 與 0.21.0。
Bitcoin Core
version 訊息處理有兩個漏洞,分別是有號整數溢位與 abs64 邏輯錯誤,攻擊者可藉此扭曲受害者的調整後時間,讓對方認定新區塊時間太過超前而拒收。攻擊者必須是最先連上的 200 個對等節點之一。這個中度風險缺陷已在 Bitcoin Core 0.21.0 修復。
Bitcoin Core
開啟惡意 BIP72 付款連結可能讓 Bitcoin-Qt 當機:r 參數可以指向巨大檔案,程式在背景默默下載的同時,會試著配置對應的記憶體。這個中度風險漏洞隨 #17165 移除 BIP70 支援而消失,該變更收錄於 0.20.0。
Bitcoin Core
特製孤兒交易無效但驗證成本高,可讓節點停擺數小時,因為每接受一筆新交易,都會啟動一次二次方複雜度的孤兒快取搜尋。Pieter Wuille 的 #15644 改成一找到符合項目就暫停,先處理新訊息。這項高風險修正隨 Bitcoin Core 0.18.0 送到使用者手上。
Bitcoin Core
在 0.20.0 之前的 Bitcoin Core,一則格式錯誤的 GETDATA 訊息就能讓 net_processing 執行緒空轉、CPU 飆到 100%,每個攻擊者連線還多吃 1.5 MB 記憶體。其他對等節點仍能獲得服務,所以評為低風險。John Newbery 發現此漏洞,並以 #18808 修復。
Bitcoin Core
直接接在創世區塊上的標頭只需難度 1,從 Bitcoin Core 0.12.0 到 0.15.0 都能繞過檢查點邏輯,濫發者可藉此無限擴大 mapBlockIndex,甚至可能讓節點記憶體耗盡而當機。Cory Fields 於 2017 年通報這個中度風險漏洞,#11028 將其修補。
Bitcoin Core
一則塞了 50,000 個區塊項目的 INV,可讓節點排入 50,000 個各約 1 kB 的 getheaders 回應,對方只要拒絕讀取,這 50 MB 的傳送緩衝區就一直滿載。John Newbery 的 #18962 改為每則 INV 只送一個 GETHEADERS,當初以節省頻寬為名提出,收錄於 0.20.0。
Bitcoin Core
攻擊者先扣住 GETDATA 回覆,再濫發假公告,把交易從容量 50,000 筆的 g_already_asked_for 對應表擠掉,接著反覆重新宣告,受害者就無法向其他人索取該筆交易。John Newbery 揭露這個中度風險漏洞,Pieter Wuille 的 #19988 在 Bitcoin Core 0.21.0 修復。
Bitcoin Core
Wladimir J. Van Der Laan 在 miniupnpc 發現第二個緩衝區溢位,會洩漏資料,若與 CVE-2015-6031 串接可達成遠端程式碼執行,他也針對 Ubuntu 的 miniupnpc 1.6-precise 實際示範。這個攻擊手法無法直接移植到 Bitcoin Core,修補則收錄於 2016 年 2 月的 0.12 版。
Bitcoin Core
Bitcoin Core 27.1 以修正錯誤為主:GUI 替未簽署交易加價手續費的功能恢復正常,代理 IP 欄位不再接受連接埠,GetAddedNodeInfo() 現在也能偵測透過 addnode 加入的 CJDNS 對等節點(#30085)。簽署時處理 TapMiniscript 的方式同樣有所更動(#29853)。
Bitcoin Core
BIP324 v2 傳輸在 Bitcoin Core 27.0 預設開啟;新的 CoinGrinder 演算法會在費率達 30 sat/vB 以上時,尋找最輕的輸入組合。共識程式碼不再使用網路調整時間,改用系統時間,節點營運者的時鐘準確度因此更要緊。libbitcoinconsensus 列為棄用,預計在 v28 移除。
Bitcoin Core
升級到 Bitcoin Core 25.2 的節點不再處理變造區塊(#29412)。這一版也修復 getrawtransaction 的 segfault(#29003)、WalletBatch::EraseRecords 的 use-after-free(#29176),以及選取「Mask values」時的 GUI 當機。
Bitcoin Core
I2P 工作階段在 Bitcoin Core 26.1 同時採用 ECIES-X25519 與 ElGamal 加密(#29200),節點載入記憶池時也會記錄進度。修正項目包括拒絕處理變造區塊(#29412),以及啟用 SFFO 時錢包會跳過 BnB 幣選擇(#28994)。
Bitcoin Core
實驗性的 BIP324 v2 傳輸在 Bitcoin Core 26.0 登場,預設關閉,須以 -v2transport 啟用。新的 loadtxoutset RPC 可載入 assumeutxo 快照,幾分鐘內就能有一個可用節點,原本的 chainstate 則在背景繼續驗證完成;submitpackage 可將原始交易以套件形式送進記憶池。
Bitcoin Core
Bitcoin Core 24.2 不再提供過時的手續費估算(#27622),RPC 對無效 bech32 位址的處理也獲修正(#27727)。其餘異動多半落在建置系統與 CI,包括用 Xcode 15 連結器建置 macOS Qt 套件的修正(#28543)。
Bitcoin Core
平行下載 compact block 的功能進入 Bitcoin Core 25.1(#27626)。其他修正涵蓋 REST 的 /deploymentinfo 當機(#27853)、遠端用戶端斷線後的伺服器關閉(#28551),以及現在會拒絕無效腳本的錢包遷移(#28125)。
Bitcoin Core
只要透過 -blockfilterindex=1 備有 BIP158 compact block filter,Bitcoin Core 25.0 的描述符錢包重新掃描就會變快,新的 scanblocks RPC 也能搜尋這些過濾器。轉發政策現在接受非見證資料 65 位元組以上的交易。-blocksonly 模式下,記憶池記憶體上限從 300MB 降到 5MB。
Bitcoin Core
Bitcoin Core 23.2 的主軸是三項 P2P 異動:peers.dat 不再毀損(#26909)、不再提前清除其他對等節點的下載狀態(#27608),以及 inv-to-send 佇列加速(#27610)。其餘屬於建置與 CI 工作,例如在 aarch64 上用 clang-16 編譯 bdb。
Bitcoin Core