披露一個整數溢位錯誤的細節,如果節點長時間(數年)持續被垃圾發送 addr 訊息,該錯誤會導致崩潰。修復程式於 2025 年 4 月 14 日在 Bitcoin Core v29.0 中發布。

此問題被認為是嚴重性。

細節

Bitcoin Core 中的地址管理器為每個條目使用 32 位元識別碼,在每次插入時遞增。早期的安全公告解釋了它如何使攻擊者能夠透過向節點垃圾發送 addr 訊息直到 32 位元識別碼溢位來遠端觸發斷言失敗。

這在 Bitcoin Core v22.0 中透過將地址管理器中的插入速率限制為每個對等節點每 10 秒 1 個地址來部分解決。這使得攻擊的成本大大增加,即使不是不切實際:即使有 1000 個對等節點持續攻擊,仍然需要一年多的時間才能使 32 位元識別碼溢位。

剩餘的、成本更高的攻擊向量在 Bitcoin Core 版本 29.0 中透過將識別碼變為 64 位元識別碼來解決。

歸屬

感謝 Eugene Siegel 發現並披露該漏洞,以及 Martin Zumsande 將識別碼更改為 64 位元。

時間表

  • 2021-06-21 - Eugene Siegel 向 security@bitcoincore.org 傳送初始報告
  • 2021-07-19 - 速率限制在 PR #22387 中合併
  • 2021-09-13 - v22.0 發布,包含速率限制
  • 2024-07-31 - 發布第一個安全公告
  • 2024-09-20 - 更改為 64 位元識別碼在 PR #30568 中合併
  • 2025-04-14 - Bitcoin Core v29.0 發布,包含 64 位元識別碼
  • 2025-04-28 - 公開披露