Coldcardウォレットハッキングを解説:脆弱なシード生成が長年保管されたビットコインを危険にさらした仕組み
重要ポイント
· Coldcard端末が遠隔操作で開かれた、または物理的に侵害されたことを示す証拠はない。中心的な問題は、影響を受けたファームウェアが、利用者の想定よりはるかに信頼性の低い乱数性からウォレットの秘密情報を生成したことにある。
· Blockのセキュリティチームは、シード生成が本来のハードウェア乱数生成器ではなく、決定論的なMicroPythonフォールバックを経由する原因となった統合エラーを突き止めた。
· Coinkiteはエントロピー問題を確認し、影響を受けた製品向けの修正版を公開したうえで、ファームウェア更新では既存シードを修復できないと警告した。資金は新しいシードから作成したウォレットへ移す必要がある。
· 最初の大規模スイープでは、約25分間におよそ500のシングルシグ送信元アドレスから約594 BTCが流出した。Galaxy Researchはその後、観測された3回の攻撃で4,585アドレスと1,367.05 BTCが関係したと推定した。
· 8月3日に確認された第4波は暫定的な位置づけにとどまった。後続推定では、このクラスターに潜在的な被害アドレス709件と最大448.7 BTCが含まれる可能性が示されたが、保留中または置換可能な取引があり、最終総額は不確定だった。
要点
Coldcard事件は、オフライン端末への通常の侵入ではなかった。ファームウェア統合の不具合により、一部のColdcardモデルは予測可能、または著しく制限された乱数生成プロセスからウォレットシードを作成した。攻撃者が端末情報とタイミング入力の範囲を十分に絞り込めたなら、候補鍵をオフラインで生成し、その公開アドレスをビットコインのブロックチェーン上に見えるアドレスと比較できた。一致すれば、被害者のハードウェアウォレットに接触することなく、該当資金を支配できる。
コールドストレージは秘密鍵をオンライン環境から切り離す。しかし、弱く生成された秘密鍵を強くすることはできない。
最初の兆候は、ほとんどあり得ないものに見えた。一度の組織的な動きで、約25分間におよそ500のシングルシグ送信元アドレスから約594 BTCが移動した。多くのウォレットは何年も動いていなかったようだ。端末を接続する必要も、マルウェアが署名の瞬間を待つ必要も、攻撃者がビットコインの暗号技術を破る必要もなかった。
失敗したのは、より根本的な部分、つまり秘密情報が作られる過程だった。
Coldcardの製造元CoinkiteとBlockのセキュリティエンジニアはその後、影響を受けたファームウェアが誤った乱数実装からウォレットのエントロピーを取得するに至った一連のソフトウェア不具合を説明した。生成されたシードフレーズは正常に見えても、利用者が確保したと考えていた128ビットのセキュリティ目標よりはるかに小さな探索空間に属していた可能性がある。
この違いは事件の意味を変える。エアギャップは秘密鍵が端末外へ出るのを防げるが、攻撃者が別の場所で再構成できる鍵を守ることはできない。Coldcard事件は単なるハードウェアウォレットの障害ではない。署名端末をオフラインに保つことと同じように、シード生成、ソフトウェア統合、運用上の選択、移行手順がセルフカストディに不可欠であることを示す事例だ。
25分間の大規模スイープから複数波の事件へ
594 BTCの移動が見出しになったのは、その速さと組織性のためだ。第1波に関する報道では、その後約562 BTCが1つのアドレスに集約された。取引パターンは自動化を示唆していた。古いシングルシグの出力が短時間に連続してスイープされ、攻撃者は通常のウォレット利用者のように振る舞うのではなく、利用可能残高をすべて持ち去ったように見えた。
損失推定はそこで止まらなかった。Galaxy Researchのリサーチ責任者Alex Thornは、同様の形状を持つ取引の追跡を続けた。8月2日までに、観測された3回の攻撃についての推定は、送信元4,585アドレスと1,367.05 BTCに達した。更新時に用いられた価格基準では約8,860万ドルだった。
8月3日、Thornはビットコインのブロック960,778から960,792の間にある別のクラスターを指摘した。初期調査では、218件の取引が疑わしい被害アドレス462件から210の新規送信先へ380 BTC超を移動していた。その分析に基づく後続報道は、潜在的クラスターを709アドレス、約448.7 BTCへ拡大した。
この第4クラスターについては慎重な表現が必要だ。一部の取引はReplace-by-Feeが有効なまま保留中で、被害者がより高い手数料を提示し、悪意ある未承認取引を理論上置換できる状態だった。ThornはこのパターンをColdcard攻撃の第4波である可能性が高いとしたが、最終確定損失額とは位置づけなかった。以前の総額に448.7 BTCを機械的に加えると約1,815.75 BTCになるが、これは4波分の暫定エクスポージャー推定であり、確定した最終盗難額ではない。

攻撃波の数は重要だが、物語の最も深い部分ではない。より難しい問いは、秘密鍵がオフラインに残っているはずのウォレットを攻撃者がどう支配できたのかという点だ。
シード生成を弱体化させた2021年のコード変更
ビットコインウォレットのシードは、単なる単語の一覧ではない。ウォレットが秘密鍵を導出する秘密エントロピーを、人間が読める形で表現したものだ。エントロピーが正しく生成されれば、シードの推測は計算上現実的ではない。入力候補が大きく制約されると、単語は完全に正常に見えても、はるかに低い安全性しか提供しないことがある。
Blockのビットコイン・エンジニアリングおよびセキュリティチームは、Coldcard問題を2021年の暗号ライブラリ移行時に導入された変更までさかのぼった。Coldcardは、基板のハードウェア乱数生成器につながるckcc.rng_bytes()からngu.random.bytes()へシード生成を移行した。
正しいインターフェースの背後にあった誤った生成器
Coldcardが独自のハードウェア乱数生成器ラッパーを提供していたため、端末設定ではMICROPY_HW_ENABLE_RNGがゼロと定義されていた。ライブラリのガードは、そのマクロが有効かどうかではなく、定義されているかだけを確認した。マクロが存在したためビルドは成功したが、関数呼び出しは意図されたハードウェアソースではなく、MicroPythonのYasmarangソフトウェアフォールバックに解決された。
このフォールバックは、マイクロコントローラー固有識別子の一部やタイマーレジスターなどから初期化された。これらの入力は変化し得るものの、新鮮な暗号学的乱数ではなく、端末メタデータとタイミング状態だ。関連状態と過去の生成器呼び出し回数が既知、または十分に制約されれば、出力ストリームは決定論的になる。
影響を受けたMk2およびMk3ファームウェアについて、Blockはこの経路に暗号学的に生成された秘密入力が追加されていないと分析した。Coinkiteの暫定攻撃モデルは、実効探索空間を約40ビットと推定した。Blockはより条件付きの分析を示した。実際の探索コストは、端末識別子、タイマー、呼び出し履歴に関する知識に左右され、完全なエンドツーエンドの総当たりベンチマークは示していない。
後続のMk4、Q、Mk5はセキュアエレメントのデータを生成器に混ぜ、深刻度を下げたが、本来の安全余裕を回復できなかった。Blockは、フォールバック状態と呼び出し履歴が固定された条件では、ダイジェストの4バイトだけが再シード関数に入り、安全に区別される出力ストリームは最大2^32個だとした。Coinkiteは、より広い攻撃仮定の下で実効探索空間を約72ビットと見積もった。両者は異なるモデルを説明しているが、運用上の結論は同じだ。後続端末は影響を受けたMk2・Mk3世代より露出が低かったものの、なお対処が必要だった。
ハッシュ化で不足したエントロピーを回復できなかった理由
Coldcardは生成された32バイト値をウォレット材料に変換する前にハッシュ化した。これにより出力を統計的に均一に見せることはできるが、入力になかった可能性を作り出すことはできない。生成器が限られた候補値の集合しか作れなければ、それらをハッシュ化しても候補シード数は同じだ。
BIP-39チェックサムにも同じ原則が当てはまる。チェックサムは転記ミスの検出には役立つが、秘密の乱数性を追加しない。したがって、12語または24語の有効なフレーズでも、それを選ぶ過程が予測可能なら暗号学的に弱い可能性がある。
オフラインウォレットが空にされた仕組み
公開ブロックチェーンは攻撃者に有用な検証対象を与えた。ビットコインアドレス、過去の支出で公開された公開鍵、ウォレットソフトウェアと共有した拡張公開鍵は、推測した秘密鍵やシードが対象ウォレットに属するかを判断する助けになる。
想定される攻撃は、乱数生成器の候補状態を作り、対応するシードとアドレスを導出し、資金のあるオンチェーンアドレスと比較するものだ。候補が一致すれば、攻撃者は所有者と同じ署名権限を得る。実際のColdcardが攻撃者と通信する必要は一度もない。
これが、コールドストレージと盗難が同時に成立する理由だ。ウォレットはオフラインのままでも、その秘密情報は別の場所で再現可能だったかもしれない。
正確な攻撃手順は分かっていない。Blockは、実際のコストが端末UID、起動タイミング、過去の乱数生成器呼び出し、鍵導出処理などの情報に左右されるとした。報告書公開時点で、研究者は完全な実証的攻撃可能性テストを終えていなかった。攻撃者が必要な入力をどう取得または制約したのか、どのようなハードウェアを使ったのか、複数の攻撃者が関与したのかを確定した権威ある説明はない。
Coinkiteは、攻撃者が人工知能を使って過去のオープンソースファームウェアを調査した可能性を推測した。これは攻撃者や手法を示す証拠ではない。コードは長年公開されており、従来型のレビューでもAI支援レビューでも発見できた可能性がある。裏付けられる結論は、脆弱性がソースコードから発見可能だったことであり、AIが攻撃者の手法だったと証明されたことではない。
影響を受けたColdcardウォレット
Blockは脆弱な生成経路を2021年3月のファームウェア4.0.0までさかのぼった。Coinkiteの利用者向け勧告は、影響を受けたMk2・Mk3のリリース範囲を4.0.1から4.1.9までと定義している。後続端末についてCoinkiteは、標準ファームウェア5.6.0より前のMk4・Mk5、または1.5.0Qより前のQで生成されたシードも影響を受けると警告した。別系統のEdgeリリースでは、Mk4・Mk5に6.6.0X、Qに6.6.0QXが必要だった。
露出の有無は現在のファームウェアではなく、シード作成時に使われたファームウェアで決まる。端末を更新すれば今後の生成動作は変わるが、既存シードは変わらない。
Coinkiteは、特定ウォレットの露出を大きく変え得る2つの独立した保護策を挙げた。同社によれば、最初のシード作成時に少なくとも50回、公正かつ非公開で独立したサイコロ入力を加えていれば、最低128ビットの独立エントロピーが提供された。強力で固有のBIP-39パスフレーズも、攻撃者が越えるべき別の障壁になる。短いパスフレーズや端末PINを同等の保護とみなすべきではない。
マルチシグ構成も同様に慎重な評価が必要だ。脆弱なColdcard鍵が1つあっても、十分な数の独立して安全な端末の署名を必要とするウォレットが自動的に破られるわけではない。しかし、脆弱なシードだけでクォーラムを構成すれば、同じ根本問題が残り得る。保護はマルチシグという名称ではなく、独立して生成された安全な鍵が適切なしきい値を満たすことから生まれる。
Coinkiteの修正と移行問題
Coinkiteは影響を受けた製品群に緊急修正版を公開し、適切な修正版を導入する前に代替シードを生成しないよう利用者に求めた。最も重要な指針は明確だ。ファームウェア更新では、誤ったプロセスで作られたシードを修復できない。
影響を受けたシードを持つ利用者は、修正済みファームウェアで完全に新しいシードを作り、新しいウォレットのフィンガープリントと受取アドレスを確認し、少額のテスト取引を送った後にのみ残高を移す必要がある。全額の移動が承認されるまで古いバックアップを保持すべきだ。手続きを急ぐと、誤ったアドレス、不完全なバックアップ、パスフレーズの間違いによる新たな損失を招き得る。
TAPSIGNER、OPENDIME、SATSCARDは異なるコードベースを使うため影響を受けない。この範囲の限定は重要だ。事件は深刻だが、すべてのCoinkite製品やすべてのハードウェアウォレットが同じ脆弱性を持つ証拠ではない。
Coldcardの失敗がコールドストレージ観をどう変えるか
「コールド」はウォレットとネットワークの関係を説明する。秘密鍵がどう作られたか、ファームウェアが意図した実行経路をたどったか、バックアップとパスフレーズが安全に扱われたかを保証するものではない。
Coldcardの失敗は、構成要素のレビューとシステム動作の間にある隔たりを露呈した。本来のハードウェア乱数生成器コードはファームウェアバイナリに存在した。ソフトウェアフォールバックも想定された関数シグネチャを持っていた。従来のレビューは正しい構成要素が存在することを確認したが、統合ライブラリをまたいでウォレット生成が実際にどの実装へ到達するかは確認しなかった。
これはオープンソースセキュリティに厳しい教訓を与える。公開コードは独立検証を可能にするが、公開そのものが継続的なエンドツーエンドレビューを意味するわけではない。セキュリティ上重要なビルドには、エントロピーが呼び出し元に届くことを確認し、本来のソースが利用できない場合に安全側で停止し、ソース上の意図が統合後も維持されると仮定せず、コンパイル済み成果物の動作を測定するテストが必要だ。
利用者への教訓は、セルフカストディを放棄することではない。セルフカストディが、ハードウェアの真正性、ファームウェアの出所、シードエントロピー、パスフレーズ強度、バックアップ分離、マルチシグの多様性、欠陥発見時に安全に移行する能力など、複数レイヤーにわたる責任を移すことを理解する必要がある。
最初の594 BTCは数分で消えた。その移動を可能にした条件は5年以上存在していた可能性がある。この時間差こそ中心的な警告だ。コールドウォレットは何年も静かで安全に見える一方、最初のシードにある弱点は発見されるまで残り続けることがある。
資産管理権を手放さずにレバレッジでビットコインを取引
分散型無期限先物取引所は、すでにニッチな存在ではない。CoinGeckoの2025年暗号資産業界年次レポートによると、昨年のDEX無期限先物取引高は346%増の6.7兆ドルに達し、同期間に中央集権型取引所の建玉は20.8%減少した。トレーダーがオンチェーンデリバティブに本格的な資金を投じる理由は明確だ。カウンターパーティーリスクは現実に存在し、カストディ障害は起こり得て、検閲耐性は重要である。
edgeXは、資産の管理権を犠牲にせず市場へアクセスしたいトレーダー向けに構築された分散型無期限先物取引所だ。
BTC無期限先物でedgeXが選ばれる理由
· KYCも参入障壁もない。ウォレットを接続すれば、本人確認や口座承認なしで取引を開始できる。
· 真のセルフカストディを提供する。edgeXはオフチェーン注文照合と、イーサリアムで保護された検証可能なオンチェーン決済を組み合わせる。強制出金機能により、運営者がオフラインになってもブロックチェーンから直接資金を回収できる。
· 厚い流動性と狭いスプレッドを備える。edgeXは1bpスプレッド内に1,000万ドルの板厚を維持し、10万ドルを超える取引でもスリッページを0.1bp未満に抑える。
· 最大100倍のレバレッジに対応する。エクスポージャーのヘッジでもモメンタム取引でも、トレーダーは自らのリスク枠組みに合わせてポジションを調整できる。
· 取引手数料の140%相当のリワードを提供する。アクティブトレーダーは取引活動から報酬を得て、高頻度戦略の実質コストを抑えられる。
· 機関投資家水準のインフラを備える。edgeXは毎秒最大20万件の注文を処理し、マッチング遅延は10ミリ秒未満だ。
ビットコイン市場の見通しを取引に反映
資産の管理権を維持しながら、edgeXでBTC/USDC無期限先物を取引できる。レバレッジは利益と損失の両方を拡大するため、ポジションサイズ、清算価格までの距離、資金調達コストは引き続きリスク管理の重要要素となる。
よくある質問
ハッカーはColdcard端末へ遠隔アクセスしたのか
権威ある調査で、影響を受けた端末への遠隔アクセスは確認されていない。報告された仕組みは、弱体化した乱数生成過程から候補シードまたは秘密鍵をオフラインで再構成し、公開ブロックチェーン情報と照合するものだ。
この事件でビットコインの暗号技術は破られたのか
いいえ。脆弱性は影響を受けたColdcardファームウェアのウォレットシード生成に関係する。ビットコインの基盤となる署名システムが暗号学的に破られたことは示されていない。
最新ファームウェアを入れれば既存ウォレットも保護されるのか
修正版は今後のシード生成を保護するが、影響を受けたファームウェアで作られたシードは修復できない。Coinkiteは新しいシードを作成し、代替ウォレットを慎重に検証してから資金を移すよう案内している。
すべてのColdcardモデルが同じ程度に脆弱だったのか
いいえ。影響を受けたMk2・Mk3ファームウェアが最も深刻な経路を使っていた。Mk4、Q、Mk5はセキュアエレメントのエントロピーを追加して露出が低いと評価されたが、Coinkiteは修正前に生成された影響対象シードを、移行が必要なほど深刻だと分類した。製品、ファームウェアのリリース系統、シード作成時期がすべて重要だ。
1,815.75 BTCは確定した盗難額なのか
いいえ。Galaxy Researchが観測した3波分の推定は1,367.05 BTCだった。約448.7 BTCは第4波である可能性が高いクラスターに関連したが、分析時点で一部の取引は保留中または置換可能だった。合算値は暫定的なエクスポージャー推定であり、最終確定損失額ではない。
