Bitcoin Core 27.2 釋出
Bitcoin Core 27.2 消除了自我連線偵測的競爭條件(#30394),FillPSBT 呼叫誤回 complete=true 的問題也已修正(#30357)。載入區塊執行緒與排程器的關閉順序有所調整(#30435),程式碼也能搭配 miniupnpc 2.2.8 與 GCC 15 建置。
Bitcoin Core
來自比特幣軟體開發者的版本發布、安全性公告與協定開發工作。
121 篇文章
Bitcoin Core 27.2 消除了自我連線偵測的競爭條件(#30394),FillPSBT 呼叫誤回 complete=true 的問題也已修正(#30357)。載入區塊執行緒與排程器的關閉順序有所調整(#30435),程式碼也能搭配 miniupnpc 2.2.8 與 GCC 15 建置。
Bitcoin Core
只要針對同一區塊重複送出 blocktxn 訊息,就能遠端讓 v25.0 之前的 Bitcoin Core 節點當機,原因是觸發了 FillBlock 只能執行一次的斷言。攻擊不需要 short-id 碰撞,放入區塊 merkle root 未涵蓋的交易即可走到同一路徑。這個高風險漏洞 CVE-2024-35202 由 Niklas Gögge 發現並修復。
Bitcoin Core
Testnet4(BIP94)隨 Bitcoin Core 28.0 上路,同時帶來僅限一父一子的有限套件轉發、BIP 431 下的標準 TRUC 交易,以及新的 Pay To Anchor 輸出類型。-mempoolfullrbf 預設改為 1,27.0 已棄用的 libbitcoinconsensus 也正式移除。
Bitcoin Core
攻擊者在區域網路內冒充 UPnP 裝置,不斷回傳肥大的 M-SEARCH 回覆,就能讓 Bitcoin Core 節點耗盡記憶體。只有以 -miniupnp 啟動的節點會受害,因為這個函式庫預設並未啟用。這個低風險漏洞已在 v22.0 修復。
Bitcoin Core
Bitcoin Core 26.2 簽署時不再假定 TapMiniscript 符合 sane 條件(#29853);getnetworkhashps 遇到無效參數會丟出錯誤(#28554),setmocktime 也有了強制上限(#29869)。建置同時支援 miniupnpc 2.2.8。
Bitcoin Core
攻擊者先扣住 GETDATA 回覆,再濫發假公告,把交易從容量 50,000 筆的 g_already_asked_for 對應表擠掉,接著反覆重新宣告,受害者就無法向其他人索取該筆交易。John Newbery 揭露這個中度風險漏洞,Pieter Wuille 的 #19988 在 Bitcoin Core 0.21.0 修復。
Bitcoin Core
特製孤兒交易無效但驗證成本高,可讓節點停擺數小時,因為每接受一筆新交易,都會啟動一次二次方複雜度的孤兒快取搜尋。Pieter Wuille 的 #15644 改成一找到符合項目就暫停,先處理新訊息。這項高風險修正隨 Bitcoin Core 0.18.0 送到使用者手上。
Bitcoin Core
開啟惡意 BIP72 付款連結可能讓 Bitcoin-Qt 當機:r 參數可以指向巨大檔案,程式在背景默默下載的同時,會試著配置對應的記憶體。這個中度風險漏洞隨 #17165 移除 BIP70 支援而消失,該變更收錄於 0.20.0。
Bitcoin Core
直接接在創世區塊上的標頭只需難度 1,從 Bitcoin Core 0.12.0 到 0.15.0 都能繞過檢查點邏輯,濫發者可藉此無限擴大 mapBlockIndex,甚至可能讓節點記憶體耗盡而當機。Cory Fields 於 2017 年通報這個中度風險漏洞,#11028 將其修補。
Bitcoin Core
Bitcoin Core 0.10.1 之前,接收訊息最大可達 32 MiB,攻擊者每條連線都能逼節點配置這麼多記憶體,甚至可能造成當機。Bitcointalk 使用者 Evil-Knievel 通報此問題,#5843 把上限砍到 2 MiB,後來因 Segwit 提高到 4 MB。原訂 2015 年的揭露遭到延後,細節到 2024 年才公開。
Bitcoin Core
Wladimir J. Van Der Laan 在 miniupnpc 發現第二個緩衝區溢位,會洩漏資料,若與 CVE-2015-6031 串接可達成遠端程式碼執行,他也針對 Ubuntu 的 miniupnpc 1.6-precise 實際示範。這個攻擊手法無法直接移植到 Bitcoin Core,修補則收錄於 2016 年 2 月的 0.12 版。
Bitcoin Core
IPv6 讓灌大 Bitcoin Core 無上限的封鎖清單變得很便宜,而每則 GETADDR 訊息又會針對回傳的每個位址掃描該清單,最多 2500 個。記憶體當機與 CPU 消耗這兩個問題評為高風險,皆由 #19219 修復,收錄於 0.20.1 與 0.21.0。
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