ノードが長期間(数年)にわたりスパム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 - 公開