ノードが長期間(数年)にわたりスパムaddr
メッセージを継続的に受信するとクラッシュを引き起こす整数オーバーフローバグの詳細を開示しました。
このバグの修正は、2025年4月14日にBitcoin Core v29.0でリリースされました。
この問題の重大度は低です。
詳細
Bitcoin Coreのアドレスマネージャーは、エントリー毎に32-bitの識別子を使用し、
これはエントリーの挿入のたびにインクリメントされます。
以前のセキュリティアドバイザリでは、
攻撃者が32-bitの識別子がオーバーフローするまでノードにaddr
メッセージをスパム送信することで、
リモートからアサーションエラーを誘発できると説明されていました。
この問題は、アドレスマネージャーへの挿入をピア毎に10秒に1アドレスに制限したことで、 Bitcoin Core v22.0で部分的に解決されました。これにより、攻撃のコストは大幅に増加し、実用的ではなくなりました。 1,000個のピアが継続的に攻撃したとしても、32-bitの識別子がオーバーフローするまでに1年以上かかることになります。
残った、よりコストのかかる攻撃ベクトルは、識別子を64-bitにすることで、Bitcoin Coreバージョン29.0で解決されました。
貢献
この脆弱性を発見し公開したEugene Siegelと、識別子を64-bitに変更したMartin Zumsandeに感謝します。
タイムライン
- 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-bit識別子への変更がPR#30568でマージされる
- 2025-04-14 - 64-bit識別子への変更がBitcoin Core v29.0でリリースされる
- 2025-04-28 - 公開