Bitcoin Core 0.12.0からBitcoin Core 0.15.0未満で、ノードに最小難易度のヘッダーがスパム送信される可能性があり、これを利用してOOMによりクラッシュする可能性がありました。
この問題の重大度は中です。
詳細
ヘッダーの事前同期が導入される前は、ノードは難易度の低いヘッダーによるスパムを避けるため、 チェックポイントのみに依存していました。
Bitcoin Core 0.12.0では、最後のチェックポイントの高さより前にヘッダーが分岐した場合のチェックが、
mapBlockIndex
にヘッダーを格納した後に移動されました。これにより、攻撃者は、
親がジェネシスブロックであるヘッダー(作成に必要な難易度は1)をスパムすることで、
そのようなブロックがチェックポイントロジックをバイパスするため、マップを無制限に拡大させることができました。
貢献
このバグを発見し責任をもって開示したCory Fieldsに感謝します。
タイムライン
- 2017-08-08 Cory Fieldsがバグを非公開で報告
- 2017-08-11 Pieter Wuilleが修正のためにPR #11028を公開
- 2017-08-14 PR #11028がマージされる
- 2017-09-14 Bitcoin Core バージョン 0.15.0が修正と共にリリースされる
- 2018-10-03 脆弱性のある最後のバージョンのBitcoin Core (0.14.3)がEOLになる
- 2024-07-03 公開