Coldcardのファーム不具合悪用でビットコイン1,367BTC流出、被害約8,900万ドルに
ビットコインの代表的ハードウェアウォレットとして知られるColdcardで、シード生成の乱数品質に起因する重大な脆弱性が悪用され、約1,367BTC(約8,900万ドル)が流出した。攻撃はフィッシングや取引所侵害、端末の物理奪取とは異なり、ウォレット内部の鍵生成プロセスそのものを突いた点が特徴だ。影響を受けるファームウェアでは、シードが十分な乱数で生成されず、攻撃者がオフラインで秘密鍵を再構成して資金を移動できる状態になっていた。
■ 被害概要:3回の波状攻撃で4,585アドレスから流出
攻撃の開始は2026年7月30日。最初の波(Wave 1)では、約500のウォレットから25分間で594BTC(約3,800万ドル)が失われた。攻撃者は高額残高を優先し、Chainalysisによれば開始10分で3,000万ドル超を回収。単一ウォレットで約180万ドル相当が流出した例も確認されている。
同日中の第2波(Wave 2)では、41分間で損失が1,082BTC(約7,000万ドル)に拡大し、対象は1,196アドレスに及んだ。8月2日までに第3波(Wave 3)を含む累計で1,367BTC(約8,900万ドル)、4,585アドレスから流出した。
一連の資金移動は無作為ではなく、事前に高額アドレスを特定して順次実行した可能性が高い。広範な資金回収は約30時間続いた後、Coinkiteが最初の警告を公表。Galaxy Researchは攻撃者関連とみられる約600アドレスを特定し、捜査当局などへ共有した。Wave 1とWave 2は同一オペレーターの可能性がある一方、Wave 3はオンチェーン上の挙動が異なり、別の攻撃者が独自に脆弱性を発見して追随した可能性も指摘される。
■ 技術的背景:1行の変更が5年間見逃され、シードのエントロピーが不足
問題の発端は2021年3月1日のファームウェア変更。従来、STM32チップ内蔵のハードウェアRNGを用いるckcc.rng_bytesが使われていたが、ソフトウェアPRNG(疑似乱数)のngu.random.bytesへ置き換えられた。Coinkiteの助言や解析によると、このPRNGはデバイスのシリアル番号、内部タイマー値、過去のRNG呼び出し履歴など決定的な入力に依存し、SHA256dでハッシュ処理していた。ハッシュは入力を"混ぜる"ことはできても、元の乱数性以上のランダム性を生み出せない。
その結果、Mk2/Mk3で特定期間に生成されたシードは有効エントロピーが約40ビット程度まで低下。Mk4/Mk5/Qはセキュアエレメントからの追加入力により約72ビット程度とされるが、それでもビットコインのシード生成に期待される128ビット水準には届かない。Foundation DevicesのCEOであるZach Herbert氏は、この変更が2021年3月の大規模なファームウェア書き換え(残存GPLコードの置換と暗号ライブラリ刷新)の一環で入り込んだ可能性に言及している。
この不具合は2021年から2026年まで、複数回のアップデート、セキュリティ重視のリリース、さらには攻撃直前のAI支援監査でも検出されなかった。
■ どうやって盗まれたのか:40ビット級シードの総当たりとアドレス照合
攻撃者は端末への直接アクセスを必要としなかった。推定可能な変数(デバイスUID、タイマー状態、RNG呼び出し順序など)を手掛かりに、候補となるシード生成ストリームをオフラインで再現し、各候補からビットコインアドレスを導出。公開ブロックチェーン上の残高アドレスと突き合わせ、一致すれば対応する秘密鍵で資金を移動する。
エントロピー約40ビットは候補空間が約2^40(約1兆)通りで、見かけほど安全ではない。対象期間(2021〜2026年)にColdcardで生成された可能性が高いアドレスに絞れば、探索効率はさらに上がる。
Mk4/Mk5/Qの約72ビットは相対的に強いものの、Blockは一部のブート条件で探索空間が2^32まで縮む可能性があるとして"危険なフェイルオープン構造"と表現した。現時点で大規模悪用は確認されていないが、設計上の余地は残る。
■ 影響範囲:モデルではなく"シード生成時のファームウェア"が決め手
リスクの大小は、端末の現行ファームではなく、当該シードを"生成した時点"のファームウェアに依存する。脆弱なファームで作られたシードは、後から更新しても強化されない。
影響が大きいとされる範囲は次の通り。
- Mk2 / Mk3:v4.0.0 / v4.0.1〜v4.1.9で生成したシードが高リスク(有効エントロピー約40ビット)。実際に攻撃で狙われた中心。
- Mk4 / Mk5:standardはv5.6.0未満、Edgeはv6.6.0X未満で生成したシードが有効エントロピー約72ビット。
- Q:standardはv1.5.0Q未満、Edgeはv6.6.0QX未満で生成したシードが有効エントロピー約72ビット。
一方、セットアップ時に"50回以上の独立した私的なサイコロロール"を追加してエントロピーを外部から注入していた場合、この脆弱性によるリスクは小さいとされる。強固なBIP39パスフレーズは総当たり難度を上げるが、根本のシード品質そのものを修復するものではないため、Coinkiteは影響シードからの移行を推奨している。
■ Coinkiteの対応:修正版提供と移行ガイド、公表の遅れに批判も
Coinkiteは7月30日および7月31日にセキュリティアドバイザリを公表し、影響ユーザーにシード移行を呼びかけた。修正版として、Mk3向けv4.2.0、Mk4/Mk5向けv5.6.0、Q向けv1.5.0Qなどを提供。8月1日にはMk4/Mk5/Qについてもエントロピー低下があるとして対象範囲を更新し、技術解説と移行ガイドを提示した。
その一方で、不具合が5年間見逃されたこと、資金回収が始まってから最初の警告まで約30時間かかったことへの批判は強い。Wizardsardineの研究者Kevin Loaec氏は、影響を受けたColdcard由来の鍵を含むマルチシグは"露出した前提"で扱うべきだと指摘しており、アドバイザリが十分に踏み込んでいないとの声もある。
■ 資金移行の要点:ファーム更新だけでは不十分、新シード作成と全額移転が必要
脆弱性は"過去に生成されたシード"に残るため、ファームウェアの更新だけで既存ウォレットは安全にならない。推奨される手順は以下。
1) 公式サイトから入手した最新の修正版ファームウェアを適用
2) 更新後の端末で新しいシードを新規生成(可能ならサイコロ50回以上で追加エントロピー)
3) 新シードのバックアップを正確に作成し、端末上で検証。受取アドレスを端末表示とウォレット表示で照合
4) 旧シード配下のBTCをすべて新アドレスへ送金(署名前に宛先・内容を端末で確認)
5) ブロックエクスプローラー等で送金の確定を確認し、旧アドレス残高がゼロであることを確認
6) すべて確認後、旧シードの紙・デジタルコピーを安全に破棄
移行にはオンチェーン手数料が発生するため、緊急時に極端に低い手数料設定を避ける必要がある。マルチシグ利用者は影響鍵のローテーションが必須で、署名閾値の見直し、新構成の検証を行った上で資金を移すべきだ。
■ 自己保管への示唆:"鍵を持つ"だけでなく"鍵がどう作られたか"が重要
自己保管は、秘密鍵を自分で管理することに加え、鍵生成が高品質な乱数に基づくことが前提となる。今回の件は、デバイスがオンライン攻撃から隔離されていても、乱数が弱ければ資金が失われ得ることを示した。Milk Sad(2023年)やIll Bloom(2026年)に続くPRNG由来の大きな失敗例としても位置づけられる。
また、Coldcardはソース公開を行っているにもかかわらず、脆弱性が長期にわたり見落とされた。公開そのものが安全性を保証しない一方、監査可能性の前提であることも変わらない。
CoinDeskは、この種の運用リスクが一部投資家をビットコインETFに向かわせる可能性にも触れている。ETFは秘密鍵運用の負担を取り除くが、リスクは規制下のカストディアンと金融機関への依存に置き換わる。
■ Q&A(要点)
- 自分のColdcardは危険か:Mk2/Mk3でv4.0.0〜v4.1.9の期間にシードを作成し、十分なサイコロロールを加えていない場合は高リスク。Mk4/Mk5/Qも修正前に生成したシードは約72ビット程度で、128ビット水準を下回る。
- ファーム更新で直るか:直らない。将来のシード生成は改善されるが、既存シードは弱いまま。新シードを作って全額移す必要がある。
- LedgerやTrezorは影響するか:影響しない。Ledger、Trezor、Bitkey(Block)は別のエントロピー生成方式を採用していると説明している。
- 被害額:2026年8月2日時点で約1,367BTC(約8,900万ドル)。3回の波状攻撃で4,585アドレスが影響。
- 犯人は特定されたか:未特定。Galaxy ResearchはWave 1とWave 2が同一の可能性を示しつつ、Wave 3は別の挙動としている。疑わしい約600アドレスが当局等に共有された。
- サイコロロールは有効か:セットアップ時に50回以上の独立した私的ロールを行っていれば、この脆弱性に対するリスクは小さいとされる。
本稿は情報提供および教育目的であり、投資・法務・セキュリティ助言を目的とするものではない。暗号資産に関する判断は自己調査の上で行う必要がある。