32-bitシステムにおけるバグの詳細が開示されました。このバグにより、稀なエッジケースで、 異常なブロックを受信した際にノードがクラッシュする可能性があります。 このバクを悪用するのは非常に困難です。修正は、2025年10月10日にBitcoin Core v30.0でリリースされました。

この問題の重大度は と見なされています。

詳細

Bitcoin Coreは、ブロックをディスクに書き込む前に、そのサイズが正常範囲内であるかどうかを確認します。 このチェックは、32-bitシステムでは、1GBを超えるブロックでオーバーフローを引き起こし、 ディスクへの書き込み時にノードをクラッシュさせる可能性があります。 このようなブロックは、BLOCKメッセージを使って送信することはできませんが、 対象ノードが非デフォルトの大きなmempoolを持ち、そこに既に1GBのトランザクションが含まれている場合、 理論上はコンパクトブロックとして送信できます。この場合、 対象ノードは-maxmempoolオプションを3GBを超える値に設定する必要がありますが、 32-bitシステムのメモリは最大4GiBです。

この問題は、32-bitシステムで-maxmempool設定の最大値を制限することで間接的に防止されました。

貢献

Pieter Wuilleがこのバグを発見し、責任を持って開示しました。

Antoine Poinsotが秘密裏に軽減策を提案し、実装しました。

タイムライン

  • 2025-04-24 - Pieter Wuilleが問題を報告
  • 2025-05-16 - Antoine PoinsotがPRを#32530作成し、秘密裏に修正
  • 2025-06-26 - PR #32530がmasterにマージされる
  • 2025-09-04 - バージョン29.1が修正と共にリリースされる
  • 2025-10-10 - バージョン30.0が修正と共にリリースされる
  • 2025-10-24 - 公開