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 - 公開
