2026年8月8日 ・ 自己管理と鍵の安全性をめぐる観察
7月30日の未明、攻撃者は Coldcard のハードウェアウォレットからビットコインの移動を開始しました。最初の波では、25分以内に約500のウォレットから594 BTCが持ち出されました。当時の価値は約3,800万ドルです。[1] Galaxy Research は、この一斉クリアの動きを UTC 時刻 1:10 から 1:51 の41分間という窓の中で起きており、9つのブロックに分散していたと位置付けています。[5]
それは始まりにすぎません。8月5日までに、TRM Labs が Galaxy の追跡データを引用したところ、4波の攻撃で合計約1,816 BTC が送金され、5,200以上のアドレスが関係しており、当時の価格で約1.16億ドルに相当します。[1] これは2026年の第3位となる大規模な暗号資産攻撃事案で、さらに今年の被害総額が12億ドルを超え、276件の事案に及びました。[1]
攻撃者は一度も、どの端末にも触れていませんでした。[5]
## 問題は「端末」ではなく「乱数」
ハードウェアウォレットの中核となる約束は、秘密鍵が決して端末の外に出ないことです。今回の脆弱性はこの約束を回避しています——鍵の「保管」を攻撃したのではなく、鍵の「生成」を攻撃したからです。
2021年3月1日のあるコード変更によって、ファームウェアがシード生成時に静かにソフトウェアの乱数生成器へフォールバックし、端末のハードウェア由来のエントロピーソースではなくなってしまいました。[6] Coinkite の公式告知は、影響を受けるのは Mk2/Mk3 の 4.0.1〜4.1.9 のバージョン・ファームウェアであることを確認しています。[4]
Block エンジニアリングチームの技術分析では、根本原因がさらに具体化されています。コンパイル設定で `MICROPY_HW_ENABLE_RNG` が 0 に設定されていたのです。Coldcard 側が自前でハードウェア RNG のラッパーを実装しているためです。しかし依存ライブラリの libngu は `#ifndef` でこのマクロの有無を確認するだけで、実際に「有効化されているか」までは検証していません。[6] その結果、コンパイルは通ってしまいますが、実際に紐づいているのは MicroPython の Yasmarang ソフトウェア生成器でした。初期化の入力はチップの UID とタイマレジスタであり、固定されたデバイス識別子と観測可能なタイミング状態であって、暗号学的エントロピーソースではありません。[6] libngu は、この出力を公開定数で初期化した別の Yasmarang 生成器の出力と XOR していました。しかし Block の報告が述べる通り、XOR はエントロピーを生み出しません。再現可能な2つの入力があれば、XOR 結果もまた再現可能です。[6]
Mk3 における「有効強度」については、両者の見解が異なります。セカンドハンド報道では、有効な探索空間が約 40 ビットまで縮んだとされています。[5] 一方で Block の分析は、Mk2/Mk3 の v4 パスには暗号学的なエントロピーが一切追加されておらず、UID、タイマ状態、呼び出し履歴が既知であれば、ウォレット生成は決定論的だと指摘しています。[6] Mk4/Q/Mk5 について Coinkite は、実際のエントロピーは設計の 128 ビットではなく約 72 ビットだとしています。[4] Block の説明では、リプレイ種(再播種)では 32 ビットの状態語を1つだけ置き換えるにすぎず、候補となる出力ストリームの上限は 2^32 です。[6] この2つの記述は互いに置き換え可能ではありません。本記事では双方を併記します。
どの見解を取っても結論は同じです。これは「程度の違い」ではありません。128ビットは計算できず、数十ビットならクラウドの計算力を借りれば全探索できます。攻撃者は何かを突破する必要がありません——オフラインで再生成したシードからアドレスを導出し、どのアドレスに資金があるかを確認するだけです。[5] Block も、一定の節度が必要だと注意しています。これは、どんな遠隔の攻撃者でもすぐに任意のシードを復元できるという意味ではありません。実際のコストは UID 情報、起動タイミング、導出(派生)のオーバーヘッドに左右され、レポート自体は端から端までの全探索のベンチマークを示していません。[6]
Coinkite の告知で最も重要な一文があります。ファームウェアを更新しても、すでに生成されたシードは変更も修復もしない。[4] つまり、パッチは「将来に作られるウォレット」を守るだけです。2021年3月以降に、影響を受けるファームウェア上でシードを生成した人は、その助記フレーズが生成された瞬間から弱くなっており、ずっと弱いままなのです。
## 損失面より露出面のほうが広い
確認されている攻撃は Mk2 と Mk3 に集中しています。しかし Coinkite の告知では範囲がより広く切られています。Mk4、Mk5、そして Q デバイスで、修正版リリース前に生成されたシードの実際のエントロピーは約 72 ビットであり、設計の 128 ビットではありません。[4] これは 40 ビットよりはるかにましで、今回も悪用はされていないものの、それでも標準未満です。
リスクの対象ではないのは2種類の人です。1つ目は、シード作成時に少なくとも50回以上、独立したサイコロ(ダイス)を追加で投げた人です。これは、その部分の外部エントロピーがファームウェアの欠陥によって消されないためです。2つ目は、ウォレットに強力でかつ一意な BIP-39 パスフレーズを設定している人。[4] Coinkite は同時に、パスフレーズは即時の露出を下げるが、影響を受けたシードは修復しない、とも注意しています。このタイプのユーザーも、可能な限り早く移行すべきです。[4]
## 記録しておくべき2つのこと
1つ目、監査では見つかっていません。Coinkite によれば、会社は攻撃の前の数週間に1回、ファームウェアの AI 審査を実施していたとのことですが、その審査ではこのバグも、他の重大な問題も検出されませんでした。このバグはコードの中に5年以上も眠っていたのです。TRM のコメントはかなり率直です。オープンソースや監査はセキュリティを改善するが、それが保証にはならない。[1]
2つ目、お金はまだ動いていない。TRM の追跡によると、盗まれた資金の大半は少数の攻撃者アドレスに集約されており、マネーロンダリングの動きは 8月4日までに1件の 64.9 BTC のみが Wasabi に入金され、200 ETH が Tornado Cash に入金された程度です。[1] 北朝鮮の TraderTraitor のような専門集団が数時間以内に積極的にマネーロンダリングを開始するのとは対照的で、これは「この目立つ資金をどう処理するか考えがまとまっていない」ように見えます。[1] TRM も、波ごとに取引の構成方法が異なるため、複数の攻撃者がいる可能性があると判断しており、現時点では特定の組織に帰属させていません。[1]
## この件が示している問題
TRM のレポートには、ここだけはそのまま引用しておきたい要約があります。「自己管理とはリスクを移すことであって、リスクを消すことではない」。ウォレットの信頼性の上限は、それを支える鍵生成プロセスの信頼性に等しい。[1]
この一文は Coldcard よりもずっと広い範囲に当てはまります。資産の安全を単一の鍵保持(キャリア)に押し込むあらゆる方式——そのキャリアがネットワークから切り離された端末であれ、紙であれ、暗号化ファイルであれ——は同じ構造的な問題を共有しています。鍵の生成、保管、バックアップのいずれかの段階でチェーンのどこかでミスが起きれば、第二の防衛線はありません。今回ミスが起きたのは、ちょうど最も検査されにくい段階でした。エントロピーの品質は、ファームウェアのバージョン番号のようにパッと見て確認できないからです。
TRM が示す方向性は、独立した設計のデバイスと、独立生成されたエントロピーを組み合わせることです。互いに依存しない実装で「多層防御」を構成すること。[1]
ただし、ここには限定条件があります。Block のレポートにかなり明確に書かれている通りです。マルチシグ構成で、すべてのデバイスが影響を受ける型である場合、脆弱性の影響は依然として残ります。この問題を防ぐには、「安全なデバイスの集合が構成する法定人数(十分条件)」が必要です。[6]
この言葉は「份額(シェア)の数」から「份額の独立性」へと焦点を移します。分散した署名権それ自体は防御にはなりません。3つのシェアが同一の欠陥ある実装で生成されていれば、それらは一緒に弱くなるからです。本当に多層になるのは、各シェアの生成プロセスが互いに独立しているときです。異なる実装、異なるエントロピーソース、異なる信頼仮定。閾値署名(門限署名)と秘密分片の方式は、この点においてマルチシグと同じ検証基準で評価されます。「鍵を分割する」製品を名乗るなら、この基準で確認する価値があります。
## あなた、または身近な人が Coldcard を使っているなら
Coinkite は、影響を受けるすべての機種について修正版ファームウェアを公開済みです。Mk2/Mk3 は 4.2.0 以上、Mk4/Mk5 は標準版 5.6.0 以上、Q は標準版 1.5.0Q 以上、Edge 系統は別途対応バージョンがあります。[4] 注意:標準版と Edge は別々のリリースラインです。Edge のバージョン番号が大きいからといって、すでに修正済みだと決めつけないでください。[4]
移行手順は公式発表に従って行ってください。特に事故が起きやすい点が2つあります。1つ目は、旧シードの書面によるバックアップとウォレット指紋を確認してから着手すること。2つ目は、新しいウォレットが使えることを確かめるために少額のテスト送金を先に1回行い、その後で残りの資金を移すことです。[4] Coinkite も、慌ただしい移行によって生じるリスクは、元の問題よりも即時性が高くなり得ると注意しています。[4]
データの説明:本記事で言う被害規模は、8月5日までの追跡データに基づきます。TRM は、これを「暫定的な数値」として扱うべきだと明確にしています。資金はまだ移動中であり、第4波は TRM の評価時点でもメモリプール内にあり、被害者が被害に気づくのは数か月、あるいは数年後になることが多いのです。[1]
著者は記憶(リカバリ)フレーズ不要の MPC ウォレットを作っているため、この題材には立場があります。データは出典を提示してありますので、判断は各自で行ってください。
https://cowallet.ai/en?pid=jingle