ハッカーからビットコインの秘密鍵を遠ざけるために作られたハードウェアウォレットが、いまや自社の顧客に対して、その一部の鍵がすでに危険にさらされている可能性があると伝えている。Coldcardウォレットの製造元であるCoinkiteは、攻撃者がボタン操作を追跡するだけで秘密鍵を再構成できてしまうColdcardシードの脆弱性を塞ぐことを目的とした新しいファームウェアをリリースした。この修正により、新しいウォレットがシードフレーズを生成する方法は強化されるが、もう一つ別のことも起こる。それは、所有者に不都合な真実と向き合わせるということだ。パッチ適用前に作成されたシードであれば、ファームウェアを更新してもそのシードは救われない。
Summary
重要なポイント
- CoinkiteはColdcard Mk4およびMk5向けにファームウェア5.6.1を、Coldcard Q向けに1.5.1Qをリリースし、新しいシードに物理的なランダム性を混ぜ込むことを必須とした。
- 新しいシードの作成には、少なくとも65回のキー押下、6面ダイス50回のロール、または128回のコインフリップを、デバイスのエントロピーと組み合わせて行う必要がある。
- 脆弱なファームウェア上で生成されたシードは、アップデート後も依然として露出したままであり、影響を受ける所有者は新しいシードを作成し、資金を移動しなければならない。
- Blockによる独立した分析は、Coinkiteの公式アドバイザリが認めているよりも、脆弱性の期間が広い可能性を示唆している。
Coinkite、エクスプロイトを受けてColdcardのシード生成を強化
Coinkiteがこの侵害に対して打ち出した答えは、Coldcardがデバイスのランダム性だけでシードを生成できないようにするファームウェアの再構築だ。同社は木曜日付けのブログ投稿でアップデートを公開し、Mk4およびMk5デバイスの所有者にはバージョン5.6.1のインストールを、Coldcard Qの所有者には1.5.1Qへの移行を指示した。両バージョンは8月20日にロールアウトされており、Coinkiteはすべてのユーザーに対して遅滞なくアップグレードするよう強く求めている。
新ファームウェアのバージョンと物理的ランダム性の必須化
中核となる変更は説明こそ簡単だが、実務上は重大だ。すべての新しいシードは、Coldcardのセキュアエレメントとハードウェア乱数生成器から取得されるデバイスのエントロピーに加え、ランダム性の人間由来のソースを組み合わせなければならない。つまり、予測不能な間隔で行われる65回以上のキー押下、6面ダイス50回のロール、または128回のコインフリップのいずれかが必要になるということだ。ロジックは単純だ。デバイス内部の乱数生成器が再び故障したり操作されたりしても、人間の手から供給される外部エントロピーがあれば、最終的なシードは依然として予測不能なまま保たれる。
これは重要だ。というのも、元の欠陥は、シード要求を静かに決定論的なMicroPythonフォールバックへとルーティングしてしまうコードに遡るからだ。このフォールバックは、ゼロに定義されているにもかかわらず有効として扱われるフィーチャーフラグによってトリガーされていた。言い換えれば、ウォレットが生成していると主張していたランダム性は、常に宣伝どおりにランダムだったわけではない。そしてBlockの技術レビューは、ボタン押下を追跡する攻撃者が、その予測可能なパターンから秘密鍵をリバースエンジニアできることを突き止めた。
なぜ古いシードは依然として危険なのか
新しいファームウェアをインストールしても、すでに存在するシードは何一つ修正されない。これが、Coinkiteがいま顧客ベースに伝えている率直な現実であり、この話の中で最も差し迫った金銭的な意味を持つ部分だ。影響を受けたファームウェアバージョンで生成されたシードは、そのウォレットが後にアップデートされたかどうかに関係なく、パッチ前と同じくらい今日も推測されやすいままだ。
Coinkiteの公式なエクスポージャーリストは、バージョン4.0.1から4.1.9までのMk2およびMk3ファームウェア、5.6.0以前のMk4およびMk5標準ファームウェアと6.6.0X以前のEdgeファームウェア、そして1.5.0Q以前のQ標準ファームウェアと6.6.0QX以前のEdgeファームウェアを対象としている。Block独自の分析では、このラインをやや過去にまで引き戻し、Mk2およびMk3のバージョン4.0.0も危険ゾーンに含めている。つまり、Coinkiteが示す境界の内側にいるから安全だと考えている一部の所有者は、実際にはそうではない可能性があるということだ。
移行手順とダイスロールの例外
Coinkiteの移行ガイダンスは明快だ。ウォレットのシードが非公開の50回ダイスロールの例外を使って生成されたものでない限り、影響を受けるユーザーは新しいシードフレーズを作成し、そのバックアップとウォレットフィンガープリントを検証し、ハードウェア上で直接送金先アドレスを認証し、小額のテストトランザクションを送信し、そのうえで初めて古いシードに紐づくすべての残高を移動しなければならない。
ある指示が繰り返し強調されているのには理由がある。つまり、古いウォレットのクローン作成や復元は、新しいシードを作成しないということだ。このショートカットでは、根本的な脆弱性はまったく手つかずのままだとCoinkiteは明言している。面倒なダイスロールやキー押下のプロセスを避けるために、単にバックアップを復元しようとする人は、実質的に露出した秘密鍵をそのまま維持していることになる。
Coldcardには、ハードウェアのランダム性を完全にスキップし、代わりに12語のシードには50回、24語のシードには99回のダイスロールだけに依存する高度な「ダイスロールのみ」モードも用意されている。これは、現在デフォルトで要求されている標準的な混合エントロピーフローとは別の、より厳格な経路だ。
Coldcardシードの脆弱性はどこまで深刻なのか
この欠陥に紐づく金銭的被害は、もはや理論上のものではない。Coinkite自身、一部の顧客が深刻な損失を被り、法執行機関が捜査中であることを認めているが、同社は被害者数や自社で把握している総損失額を公表していない。
確認された損失と公式な認知との間にあるこのギャップは、注視に値する。公表された数字を出しているのはCoinkiteではなく独立研究者であり、Blockが示すより広い脆弱性の境界は、同社のアドバイザリが実際に危険にさらされているウォレットの数を過小評価している可能性を示している。ハードウェアウォレットが秘密鍵を保管する最も安全な場所だという前提の上に成り立つ業界において、攻撃者がボタン押下のタイミングから秘密鍵を再構築できてしまう欠陥は、単なるバグ修正ではなく、深刻な評判上および技術的な問題だ。
シード生成以外にも、新しいファームウェアは署名とトランザクション検証を強化している。USBインターフェースを暫定的なPSBTハッシュと関連付け、署名適用前にトランザクションデータを検証し、標準設定としてSIGHASH_SINGLE操作を禁止し、USBファイル転送を現在の暗号化セッションに制限し、ファームウェアファイルの長さを検証する。Coinkiteは、永続的なRNG障害ストップ、ハードウェアRNGを結びつけるブート時チェック、より強力なデルタモード分離、新しいアクティブウォレットのバックアップ動作も追加した。同社は、このレビューをターゲットを絞ったソース解析、実機でのRNGパス検証、ダイスパスのトレースを伴う再現可能ビルドと説明しているが、修正済みバイナリすべての完全な監査とまでは位置づけていない。
タイミングもウォレット所有者にとって別の懸念材料となっている。Microsoftは別途、USBドライブを悪用して暗号資産ウォレットに到達可能なCryptoBanditsマルウェアについて警告しており、ハードウェアウォレットのセキュリティはファームウェアだけに依存しているわけではないことを改めて思い起こさせる。
FAQ
新しいColdcardファームウェアアップデートはどのような変更を導入しますか?
ファームウェアアップデート5.6.1および1.5.1Qでは、新しいウォレットシードに、65回のキー押下、50回のダイスロール、または128回のコインフリップをデバイスのエントロピーと組み合わせた、必須の物理的ランダム性を含めることが求められます。
影響を受けたファームウェアバージョンで作成された既存のColdcardシードは、アップデート後に安全になりますか?
いいえ。影響を受けたファームウェアで作成された既存のシードは依然として脆弱であり、ファームウェアを更新しても安全にはなりません。影響を受けるユーザーは新しいシードを作成し、資金を移行する必要があります。
古いウォレットをクローンまたは復元することで、ウォレットを安全にできますか?
いいえ。古いウォレットのクローン作成や復元では、新しいシードは作成されません。セキュリティのためには、新しいシードを生成することが必須です。
自分のシードが50回ロールの例外に該当する場合、ユーザーはどうすべきですか?
Coinkiteのガイダンスによれば、シードが非公開の50回ロールの例外に適合しているユーザーは、移行の必要がない場合もあります。ただし、自分のシードがその条件を満たしているか確信が持てない人は、露出しているものとして扱ったほうが安全です。
{“@context”:”https://schema.org”,”@type”:”FAQPage”,”mainEntity”:[{“@type”:”Question”,”name”:”新しいColdcardファームウェアアップデートはどのような変更を導入しますか?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”ファームウェアアップデート5.6.1および1.5.1Qでは、新しいウォレットシードに、65回のキー押下、50回のダイスロール、または128回のコインフリップをデバイスのエントロピーと組み合わせた、必須の物理的ランダム性を含めることが求められます。”}},{“@type”:”Question”,”name”:”影響を受けたファームウェアバージョンで作成された既存のColdcardシードは、アップデート後に安全になりますか?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”いいえ。影響を受けたファームウェアで作成された既存のシードは依然として脆弱であり、ファームウェアを更新しても安全にはなりません。影響を受けるユーザーは新しいシードを作成し、資金を移行する必要があります。”}},{“@type”:”Question”,”name”:”古いウォレットをクローンまたは復元することで、ウォレットを安全にできますか?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”いいえ。古いウォレットのクローン作成や復元では、新しいシードは作成されません。セキュリティのためには、新しいシードを生成することが必須です。”}},{“@type”:”Question”,”name”:”自分のシードが50回ロールの例外に該当する場合、ユーザーはどうすべきですか?”,”acceptedAnswer”:{“@type”:”Answer”,”text”:”Coinkiteのガイダンスによれば、シードが非公開の50回ロールの例外に適合しているユーザーは、移行の必要がない場合もあります。ただし、自分のシードがその条件を満たしているか確信が持てない人は、露出しているものとして扱ったほうが安全です。”}}]}
この記事は人工知能の支援を受けて作成され、編集チームによる確認を経ています。

