ビットコインの重大な脆弱性、CVE-2024-52911が発見される
ビットコインの基幹ソフトウェア「Bitcoin Core」の開発チームは5月5日、深刻な脆弱性が存在していたことを公表した。このバグはCVE-2024-52911と名付けられ、バージョン0.14.1から28.4までのBitcoin Coreに影響を及ぼしていた。
攻撃手法とそのリスク
この脆弱性により、マイナーは特殊なブロックを作成し、十分なプルーフ・オブ・ワーク(PoW)を提供することで、他人のノードをクラッシュさせたり、遠隔でコードを実行したりすることが可能だった。具体的には、メモリ解放後の使用(Use-After-Free)と呼ばれる脆弱性を悪用し、ノードのメモリを乗っ取る攻撃が成立する。
攻撃には以下の条件が必要とされた。
- 特定の形式のブロックをマイニングするための膨大なハッシュパワー
- 攻撃対象のノードが古いバージョンのBitcoin Coreを使用していること
- 攻撃者が電力コストを負担する覚悟があること
特に注目すべきは、攻撃に成功しても、そのブロックは実際のコインベース報酬の対象とならず、採掘者にとって経済的な損失が確定していた点だ。このため、攻撃の実用性は低いとされている。
なぜこのバグが見過ごされていたのか
この脆弱性は、Bitcoin Coreのスクリプト検証エンジンに存在していた。具体的には、トランザクションの入力データを事前に計算・キャッシュし、バックグラウンドスレッドで検証作業を行う際に、メモリ解放後のキャッシュデータを参照してしまうという問題だった。
攻撃者は、特別に細工されたブロックを作成し、その検証処理中にメモリを不正に操作することで、リモートコード実行(RCE)につなげる可能性があった。ただし、Bitcoin Coreチームは具体的な攻撃事例は確認されていないとしている。
未だに多数の古いノードがリスクにさらされている現状
Bitcoin Coreは、この脆弱性を修正したバージョン29(v29)以降へのアップグレードを推奨している。しかし、ノードのアップグレードは任意であり、自動更新も行われないため、多くのユーザーが古いバージョンを使用し続けている。
ある推計によると、全ビットコインノードの43%が未だに脆弱なバージョンで稼働しているという。これは、ネットワーク全体のセキュリティリスクを高める要因となっている。
責任ある開示と修正の経緯
この脆弱性は、2024年11月にCory Fields氏によって発見され、責任を持って開示された。その後、4日以内にPieter Wuille氏によって修正プロポーザル(PR 31112)が提出され、「並列スクリプト検証のエラーログ改善」という平凡なタイトルのもとで、攻撃の詳細が隠蔽された形で対応が進められた。
「Bitcoin Coreのセキュリティアドバイザリを2年近く公開してきたが、今回初めてメモリ安全性に関する問題(Use-After-Free)を公表した。Cory Fields氏の功績に感謝します。」
— Niklas Gögge (@dergoegge)
今後の対策とユーザーへの呼びかけ
Bitcoin Coreチームは、全ユーザーに対してバージョン29以上へのアップグレードを強く推奨している。特に、ビットコインのフルノードを運用しているユーザーは、速やかに最新版に更新することが重要だ。
また、この事例は、オープンソースプロジェクトにおける責任ある開示の重要性と、古いソフトウェアがもたらすセキュリティリスクを再認識させるものとなった。ビットコインネットワークの健全性を維持するためには、全参加者の協力が不可欠である。