Coldcardの5年バグが露呈、ハードウェアウォレットの検証不足。Kraken幹部が警鐘

ハードウェアウォレットの老舗Coldcardが、約5年にわたって深刻なシード生成バグを抱えていたことが分かった。これまでに約9000万ドル相当のビットコインが不正に流出し、4500超のアドレスが被害を受けている。

Krakenのセキュリティ責任者Nick Percoco氏は、今回の事例が業界全体の独立検証の欠如という構造的な問題を浮き彫りにしたと指摘する。暗号資産の自己管理という行為が、他の業界では当たり前の安全性チェックを経ずに提供されている現状へ、改めて疑問を投げかける出来事だ。

5年越しの発覚、Coldcardの致命的なバグ

5年越しの発覚、Coldcardの致命的なバグ

問題のバグは、ウォレットの心臓部にあたるシード(秘密鍵のもととなるランダムな単語の並び)の生成プロセスに潜んでいた。本来ならば、物理的なノイズを利用する真性乱数生成器(TRNG、True Random Number Generator)が呼び出されるはずだった。しかし実際には、より弱い擬似乱数生成器(PRNG)が使われ続けてきたのだ。

コード移行が引き起こした意図せぬルート変更

Coinkite社(Coldcardの開発元)が公表した事後分析によると、2021年3月に新しい暗号ライブラリを統合したタイミングで、内部の呼び出し経路が変わった。シード生成の中心的な処理が、マイクロPython環境に組み込まれていたPRNGに流れてしまい、開発者が丹念に書き上げたTRNGコードは「偶然にも、重要性の低い処理にだけ使われる」という歪な状態に陥った。

つまり、コード上には正しい乱数生成器が存在し、見た目上は問題なく動作しているように見えた。だからこそ、社内外の監査やコードレビューでも異常を検知できず、バグは5年もの間見過ごされた。

バグ検出をすり抜けた「チェックの穴」

Percoco氏がX(旧Twitter)で指摘したように、監査の多くは「意図した乱数生成器がコードベースに存在すること」までは確認するが、「実際にその生成器が呼び出されているか」までは検証していない。これは単なる実装ミスではなく、テスト手法そのものの盲点だ。コードが静かに迂回しているシナリオを想定しなければ、どんなに精巧な監査も無力になってしまう。

約9000万ドルの被害、4500超のアドレスに影響

約9000万ドルの被害、4500超のアドレスに影響

この脆弱性を突く攻撃は段階的に行われたとみられ、Galaxy Digitalのリサーチ部門による分析では、被害総額は約9000万ドル(約1300億円)にのぼる。影響を受けたアドレスは4500を超えており、日曜日時点でも攻撃は継続している可能性がある。

攻撃者は、弱いシードから生成された秘密鍵を効率的に推測し、該当アドレスに保管されたビットコインを自らの管理下へ移す手口を使った。ブロックチェーン上のデータ分析からは、いくつかの攻撃波が確認されており、直近ではさらに389BTCが動かされたとの報告もある。

被害拡大の構造的要因

Coldcardユーザーは、セキュリティ意識が高い層に多い。取引所に資産を預けず、自分で管理するという行動は、第三者リスクを避けるための最善策の一つだ。だが皮肉にも、ハードウェアそのものに潜むバグは、むしろ自己管理のコントロールの及ばない領域で資産を危険に晒す結果となった。

この構図は、専門家が「信頼のパラドックス」と呼ぶ問題に通じる。ユーザーはメーカーを信頼しなければデバイスを使えないが、信頼した先に検証の抜け穴があれば、結局は大きなリスクを背負うことになる。

問題の核心、乱数生成のチェック漏れ

問題の核心、乱数生成のチェック漏れ

乱数生成は暗号技術の土台であり、わずかな偏りが致命的な弱点になる。特にシード生成では、予測不可能な数値を得るために、物理的なノイズ源を使うTRNGが標準だ。一方、ソフトウェアだけで構成されるPRNGは、アルゴリズムの特性上、出力を数学的に追跡されるおそれがある。

Coldcardのケースでは、TRNGとPRNGの呼び分けが意図せず壊れていた。Coinkiteの説明によれば、開発者自身も「ソースコードベースにPRNGがあることを知らなかった」という。これは単体テストや統合テストが、実際のプロダクションファームウェアの動作を完全に再現できていない典型的な例といえる。

なぜ「呼び出し検証」は見落とされるのか

一般的なコード監査は、モジュール単位の正しさに焦点を当てる。乱数生成器のロジック自体にミスがなければ、たとえそれが呼び出されなくても「問題なし」と判断されてしまう。これはPercoco氏が「独立検証のギャップ」と呼ぶ問題そのものだ。監査人はソースコードを読み、機能の存在を確認するが、稼働中のファームウェアがどの経路を通って乱数を得ているかをエンドツーエンドで追跡する仕組みは、ハードウェアウォレット業界では整備されていない。

業界全体の課題、欠落する独立検証の仕組み

業界全体の課題、欠落する独立検証の仕組み

Percoco氏は、他のセキュリティ分野ではエントロピー源の検証が当たり前になっていると強調する。具体的には、米国政府標準のNIST SP 800-90Bや、ドイツ連邦情報セキュリティ局(BSI)のAIS-31といった規格があり、物理的な乱数生成器の設計からテスト、運用検証までの要件が定められている。ところがハードウェアウォレットには、これに類する強制的なフレームワークが存在しない。

「決済業界では、PIN入力端末を独立したラボでのテストなしに出荷することはない。米国政府もエントロピー源の検証なしに暗号モジュールを受け入れない。デジタル資産の自己管理だけが例外であってはならない」とPercoco氏は警鐘を鳴らす。現状ではCommon CriteriaやCSPN認証といった評価制度があるが、それらも「検証済みのエントロピー源がプロダクションファームウェアで実際に呼び出されているか」までは体系的に確認しない。

ハードウェアウォレット市場への波及

今回の問題はColdcard一社に留まらない。他のハードウェアウォレットメーカーでも、同じような呼び出し経路の検証不足が潜んでいる可能性は否定できない。市場には競合製品が複数存在するが、独立した第三者機関がエントロピー源の実動作をランダムに抜き取って検証する仕組みは、業界の共通インフラとして整備されるべき段階に来ている。

ユーザー側の防御策として、シード生成後に別のオープンソースツールで乱数の品質を評価する方法もあるが、これも完全ではない。抜本的な解決には、メーカー自身がファームウェアのエンドツーエンド検証を受け入れる文化と、それを後押しする規制や業界標準の策定が求められる。

今後の展開、Coinkiteの対応と業界への教訓

今後の展開、Coinkiteの対応と業界への教訓

Coinkiteは脆弱性の確認を受け、すべての新規出荷を停止した。同社の施設に残る影響対象のファームウェアを搭載したデバイスも破棄されている。一方で、既存ユーザーに対しては「資金回収の可能性がある場合に備え、デバイスを廃棄しないでほしい」と呼びかけ、法執行機関との連携を進める構えだ。

今回の事件が投げかける最大の教訓は、信頼の出発点をどう設計するかにある。ハードウェアウォレットにとって、シード生成は資産の安全を支える一元の起点だ。そのプロセスをメーカーの内部テストだけに委ねるのではなく、独立したラボやコミュニティ主導の継続的検証に開かれた状態にすることが、次なる攻撃を防ぐための現実的な一歩になる。

Percoco氏が「これは警鐘だ」と表現した意図は、特定企業への批判ではなく、自己管理の世界全体が成熟するためのトリガーとして機能することにある。暗号資産業界の成長にとって、避けて通れない試練が訪れたといってよい。

この記事のポイント

  • Coldcardに5年間潜んでいたシード生成バグにより、約9000万ドル相当のBTCが不正流出した
  • バグの原因は、TRNGの代わりに弱いPRNGが使われたこと。コードレビューでは呼び出し経路の検証が不十分だった
  • Krakenのセキュリティ責任者は、他の業界にはある独立エントロピー検証の仕組みがハードウェアウォレットには欠けていると指摘
  • Coinkiteは出荷停止とデバイス破棄を実施。業界全体でエンドツーエンド検証の導入が急務となっている
共有:

コメントする

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)