為替レート -
|
USDT(Upbit) -
|
BTC.D -
|
時価総額 -
|
接続中 0

ビットコインコア、AIが見つけた脆弱性3件を公開 4バージョンで修正

ビットコインコア、AIが見つけた脆弱性3件を公開 4バージョンで修正

ビットコインコア、28日にノードの脆弱性3件を公開 中程度2件・低1件

3件ともスパイラルの「プロジェクト・ルーペ」によるAI自動検査で初めて発見

Windows・Macの遠隔停止はLinuxに影響なし 32ビット・FAT32では1件が未解決

광고

ビットコインのネットワークを支える代表的なソフトウェア「ビットコインコア(Bitcoin Core)」の開発者は現地時間10月28日、ノードを停止させうる脆弱性3件の詳細を公開した。開発者は27日と28日の2日間で29.5・30.4・31.2・32.1の4バージョンをリリースし、これらを修正した。3件はいずれも人ではなく、AIによる自動コード検査で初めて見つかった。

3件今回公開された脆弱性
4バージョン29.5・30.4・31.2・32.1
1件32ビット・FAT32では未解決
3件2週間後に追加公開予定

公開文書によると、3件はいずれもスパイラル(Spiral)のエリアス・ローラー氏が進める「プロジェクト・ルーペ(Project Loupe)」が大規模言語モデル(LLM)でコードを自動検査する中で発見した。ビットコインコアの貢献者グレゴリー・サンダース氏が結果を検証し、セキュリティチームに伝えた。開発者は2件を「中程度(Medium)」、1件を「低(Low)」と分類し、3件とも「容易に発見できる(easily discoverable)」脆弱性とした。

WindowsやMacのノードは特殊な信号ひとつで落ちうる

最も直接的な脆弱性は、Linux以外のOSで動くノードに関わる。ビットコインコアは、接続先ノード(ピア)から届いたデータがたまりすぎると読み込みを一時停止してメモリを守る。ところがLinux以外で使うソケット監視方式(select)は、読み込みを止めている間も「TCP緊急データ」という特殊な信号が届くとデータを読み続けていた。これを悪用すると、たまるデータの上限がなくなる。

開発者は「悪意あるピアは、接続しているWindows・macOS・BSDのノードを簡単にクラッシュさせられる」と説明した。Linuxは別の方式(poll)を使うため影響はない。プロジェクト・ルーペは10月23日にこの問題を発見し、3日後の26日に修正(PR #36665)がマージされ、29〜32の各系統にも反映された。

광고

止めた接続に積もるメッセージ、1時間あたり最大5MB

2件目は、読み込みが遅いピアを「一時停止」にした後も、取引の通知メッセージを送信待ちの列に積み続ける動作から生じた。通常は20分以内にping応答がないピアは切断されるが、「BIP31」という古い規格のpingに対応していないと名乗るピアにはこの切断が適用されなかった。攻撃者はBIP31に対応していないと装い、メッセージをゆっくり読むことで列を際限なく膨らませることができた。

メモリの増加ペースは、外部から受けた接続(インバウンド)1本あたり1時間に最大2MB、自ら張った接続(アウトバウンド)は5MBだった。取引の通知を受け取らない「-blocksonly」設定のノードは影響がはるかに小さい。この問題は9月15日にプロジェクト・ルーペが先に見つけ、9月21日には開発者のL0rinc氏も独自に報告した。

マイナーが約1カ月分のブロックを注ぎ込む必要がある攻撃

3件目は、ブロックを巻き戻す(リオーグ)際に使う「アンドゥ(undo)」ファイルの位置を32ビット整数で保存していたことに起因する。アンドゥファイル1つが4GiBを超えると位置の値がオーバーフローして古いデータを上書きし、その後に該当ブロックを巻き戻す必要が生じるとノードが停止する。再起動しても直らず、修正版で全体の再インデックス(-reindex)を行わないと復旧できない。Windowsと32ビット環境では2GiBの時点で書き込みに失敗し、起動のたびに停止した。

ただし開発者は、64ビット環境での実際の攻撃は「非現実的」としている。非標準取引で埋めたブロックを数千個、ネットワーク全体のブロック生成量で約1カ月分を自ら採掘したうえ、ノードごとに異なるファイル配置に合わせて約18個のブロックを正確な位置に置き、さらに2ブロックのリオーグを成功させる必要があるためだ。修正は位置の値を64ビットに変える方式で、保存形式は変わらない。ただし32ビットのシステムと、ブロックのフォルダをFAT32ファイルシステムに置くノードは、今回のバージョンでも引き続き影響を受ける。この問題は7月8日に初めて報告され、その後L0rinc氏(8月21日)とアンドリュー・ドーマン氏(10月23日)もそれぞれ同じ問題を報告した。

31.2と32.1は27日、29.5と30.4は28日にリリースされ、脆弱性の公開も28日に行われた。32.1のリリースノートには、32.0はタグが付いたものの直前の問題で正式リリースされなかったとの説明とともに、新しいメジャーバージョンの登場で29.x以前がサポート終了(EOL)になったとの案内が記された。開発者は定例の公開スケジュールに沿って、30.0で修正した中程度・高リスクの脆弱性3件を2週間後に公開すると予告した。

BTC 詳細 →
本記事は公開された発表・資料をもとにまとめたもので、投資を勧誘するものではありません。投資判断はご自身の責任で行ってください。