Skip to content
Blockchain

Coldcardの脆弱性:決定論的PRNGにより8,800万ドル相当のBTCが流出

By Anurag Verma•August 5, 2026
Coldcardの脆弱性:決定論的PRNGにより8,800万ドル相当のBTCが流出

2026年8月1日、約1,196件のビットコインアドレスが組織的な一斉引き出しによって空にされた。フィッシングはなかった。悪意ある署名済みPSBTもなかった。従来の意味でのユーザーエラーもなかった。約8,800万ドル相当のBTCを流出させたColdcardのエクスプロイトは、盗難の瞬間に一台のデバイスにも触れていなかった。CoinDesk の報道がそう伝えている。

根本原因は、最初の24時間で見かけたどの見解よりも深刻だ。これは2021年に出荷されたハードウェアウォレットのファームウェアの欠陥で、ハードウェアの真性乱数生成器をソフトウェアの疑似乱数ルーチンに静かに置き換えていた。そのビルドで生成されたすべてのシードは決定論的だった。それらのシードから導出されたすべてのアドレスは、原理的には、このバグをリバースエンジニアリングした者なら誰でも事前に計算可能だった。

これはハックではない。コミットと結果の間に生じた5年間の遅れだ。

Coinkiteのファームウェアバグが実際に何をしたか

The Hacker News が詳述しているように、欠陥のあるビルドは、SEチップのハードウェアRNGの代わりに、小さく推測可能な状態からシードされるソフトウェアPRNGを通じてエントロピー呼び出しをルーティングしていた。ユーザーにはその差し替えを検知する手段がなかった。デバイスは起動し、期待どおりのセットアップ画面を表示し、24語のシードを生成し、正しく生成されたウォレットと見た目上まったく同じだった。

生成されたシードが収まる探索空間は、数十億程度にすぎなかった。これはウォレットではない。抽選券だ。

攻撃者(あるいはこれを発見して責任ある開示をしなかった研究者)が8月1日にUTXOセットに対してその空間の総当たりを開始したとき、流出は数ヶ月ではなく数時間で完了した。

1,196件のビットコインアドレス流出という数字が持つ意味

1,196件は絶対値としては小さいが、シグナルとしては巨大だ。この数は、まさにその問題のあるファームウェア期間中にシードを生成し、一度もローテーションしなかったユーザー集団の規模を示している。これは被害範囲に関する検証可能で反証可能な主張であり、TechSpotの記事は影響を受けたデバイスが特定の出荷期間に遡ることを確認している。

別のファームウェアでシードを生成した場合、またはファームウェアアップデート後にローテーションした場合、ほぼ確実に問題はない。そのビルドで生成して一度も移動させていなかった場合、コインはすでに使用済みだった。ただ気づいていなかっただけだ。

静かな細部がある。流出したUTXOの中には、2021年以来一度も動かされていなかったものもある。「自分の鍵、自分のコイン」という5年間の信念。しかし、その鍵は最初から本当に自分のものではなかった。

決定論的PRNGによるビットコイン問題は古くから繰り返されている

このクラスのバグには長く恥ずべき歴史がある。2013年のAndroidのSecureRandomも同じ手口でBTCを失わせた。2008年のDebian OpenSSLのPRNGバグは、誰かが気づくまでの2年間、SSHキーを危険にさらし続けた。世代を超えて、私たちはエントロピーだけは出力を眺めることで監査できないことを学び直す。

適切に形成された乱数の256ビット列と決定論的な256ビット列は、検査してもまったく同じに見える。監査すべきは「ソース」であり、「サンプル」ではない。それがこのゲームのすべてだ。

ハードウェアウォレットは、セキュアエレメントがこれを代わりに処理してくれるという前提を売りにしている。ファームウェアがSEをバイパスすれば、コールドストレージの摩擦だけを背負い、保証は何も得られない。最悪の組み合わせだ。

セルフカストディ対ETFは人々が思うような議論ではない

これは私の意見であり、責任を持って述べる。セルフカストディ対ETFの議論は、イデオロギーの問題として組み立てられてきたが、本質はサプライチェーンの問題だ。

スポットBTC ETFに関して私が気にする攻撃対象は一つだけだ。カストディアンの運用セキュリティ。その対象は規制当局によって監査可能で、保険をかけられ、コインを失わないことを本業とする人々によって管理されている。失敗したとき、誰かが小切手を切る。

セルフカストディのチェーンはより長い。チップベンダー、ファームウェアビルドパイプライン、リリース署名、供給ルート、エンドユーザーのOPSEC、バックアップ管理。いずれかのリンクが切れれば、小切手はない。Coldcardの流出は、そのテーゼにとってのTerraモーメントだ。セルフカストディが死んだからではなく、「とにかく自分で鍵を持て」という極大主義的なフレーミングが成熟しなければならないからだ。

どちらのモデルにも現実のリスクがある。そのどちらかがリスクフリーであるかのように装うことが、1,196件のアドレスを流出させた原因だ。

Coldcardエクスプロイト後に実際に変わること

シフトするだろう(そしてすべきだ)点をいくつか挙げる。

  • 再現可能なファームウェアビルドが最低条件になる。ソースからバイナリを再構築してバイト単位で一致確認できなければ、コードベースではなく署名を信頼していることになる。
  • 生成後のエントロピー証明。デバイスは、特定のシードがソフトウェアからではなくSEから生成されたことを証明する署名を出すべきだ。これは難しくない。Coinkiteなら四半期以内に出荷できる。
  • 独立したシードサニティチェック。シードを見ることなく、その導出パスが真の乱数性と整合する分布に収まっていることを検証できるサードパーティツール。
  • セルフカストディ向けの保険商品。パロディではなく、証明されたファームウェアを要件とし、ビルドが古くなるにつれてカバレッジをローテーションする本物の引き受け。

これらのいずれもハードウェアウォレットを時代遅れにするものではない。エンタープライズグレードにするのだ。それがハードウェアウォレットがずっと主張してきたことだ。

私たち自身への不都合な教訓

LCXでは、ユーザーには見えないものに不釣り合いなほど多くのエンジニアリング時間を費やしている。HSM鍵セレモニー、決定論的ビルドパイプライン、秘密鍵に触れるすべてのコードパスに対するエントロピー監査。これは地味な作業だ。しかし、ニュースの見出しになるか、何でもない火曜日を過ごすかの違いでもある。

Coldcardのインシデントは、今年初めのOpenZeppelinのCEOによるDeFi監査に関するコメントと同じ着地をする。私たちが受け継いだ監査スタックは、出荷したコードが実行するコードであるという前提のもとで設計されていた。もはやそういう世界ではない。かつてそうだったとしても。

コールドストレージは退屈で正しい答えであるはずだった。しかし、退屈には私たちが認めていた以上の足場が必要だということがわかった。

参照