Coldcardハッカーを追う。Wave 1の犯人はFBIに知られている可能性
重要ポイント
- •Coldcard流出の最初の波では2026年7月30日に1,082.65 BTCが移動され、そのコインはまだ攻撃者のアドレスから動いていない。
- •Blockは、スイープがブロックチェーンサービス提供会社の有料アカウントに結び付けられ、そのログがリクエストパターンと並外れた精度で一致したと述べた。
- •8月上旬までに、複数の波にわたる確定・推定損失は5,000以上のアドレスにわたって1,800 BTC超に達し、約$118 millionの盗難が確認された。
- •脆弱性はColdcard firmwareのシード生成エントロピー不具合に起因し、firmware 4.0.1以降を搭載したMK2など古いデバイスに影響した。
- •研究者らは、後続の一部の波で異なる運用行動が見られるとし、公開後に同じ弱いシード空間を別の人物が悪用した可能性があると指摘している。

法執行機関は、2026年7月の流出の最初で最大の波でColdcardウォレットから1,000 bitcoin超を流出させた人物を、すでに把握している可能性がある。Blockの調査によると、攻撃者のオンチェーン上のスイープは大手ブロックチェーンデータ提供会社の有料アカウントに結び付けられ、同社の内部ログは盗難のパターンと「extraordinary specificity(並外れた特異性)」で一致した。
PSA: 攻撃は継続中で、firmware 4.0.1以降を搭載したMK2など古いデバイスで生成された脆弱な秘密鍵を標的にしている。心当たりがある場合は、必ず再確認し、できるだけ早く資金を移動させてほしい。Coinkite advisory と status page を参照。
その最初の波で移動したコイン — 1,082.65 BTC — は、現在も攻撃者のアドレスにそのまま残っている。これにより、被害者が盗まれた資金の少なくとも一部を取り戻せる可能性が残されている。今の焦点は、犯人が誰なのか、そしてこの痕跡が洗練された外部犯人を示すのか、それともCoinkite自身がかつて警告していた内部の「retirement attack」に近いものなのか、という点だ。
Coldcardのユーザーだけでなく、より広い影響もある。Coinkite製のColdcardデバイスは、インターネット接続サーバーではなくオフラインで秘密鍵を生成・保管する自己管理型保管のためのハードウェアウォレットとしてよく知られている。その鍵を生成する際の乱数に欠陥があれば、そのモデルの根幹を揺るがす。
私たちが把握していること
2026年7月30日、攻撃者は脆弱なfirmware下でシードを生成していたColdcardハードウェアウォレットから、bitcoinを体系的に流出させ始めた。この不具合は何年も見逃されていた。最初で最大の波だけで1,082.65 BTCが移動された。その後も波状の流出が続き、推定では2,000 BTC超に達している。Galaxy ResearchのAlex Thornは、オンチェーンのパターン分析と被害者からの自主報告を組み合わせて活動を追跡してきた。8月上旬の時点で、複数の波にわたる確定および推定損失は5,000以上のアドレスから1,800 BTC超に達しており、最終的な総額は新たな報告に応じてなお精査されている。金額ベースでは、約1億1,800万ドルの盗難が確認されている。
Thornは、最大の流出分の背後にいる運用者について、法執行機関がすでに具体的な手がかりを持っている可能性を公に示唆している。Bitcoin MagazineのYouTubeチャンネルで配信されたBitcoin Policy Instituteのセグメントで、Thornは「Wave one’s identity, attacker identity, may be known to law enforcement.」と述べた。さらに、Wave 1はこれまで特定された中で最大の単一区分であり、コインはなお攻撃者のアドレスに残っているとし、Wave 2のパターンも同じ人物が関与している可能性を示すほど似ていると述べた。Wave 2は合計にさらに約76 bitcoinを加える。
ハッカーの身元が知られている可能性があるという主張の主な出所は、Bitkeyに取り組むBlockのエンジニアリングリード、Clay Garrettだ。2026年7月31日、GarrettはBlockの調査結果を投稿した。
「During our investigation of the Coldcard drain yesterday, we identified an unusual pattern in the sweeps. That pattern led us to a hypothesis that has since been confirmed: the operator used a paid account at a well-known blockchain-services provider to query the source addresses and perform other related activity during the sweeps.」
「We contacted the provider directly. Their internal logs matched the suspected workflow with extraordinary specificity, including the number, timing and sequence of requests. The provider was supplying its standard services in response to requests that did not reveal their broader purpose. We have seen no evidence that the provider knowingly participated in or facilitated the suspected theft.」Garrettはそう述べ、さらに「We are sharing the relevant information with the appropriate authorities. We will provide further updates when doing so will not interfere with the investigation.」と付け加えた。
調査担当者にとって、この発見は、通常はオンチェーンの盗難と現実世界の身元の間にある隔たりを埋めるものだ。スイープは、有料アカウントに紐づくリクエストログ — クエリの数、タイミング、順序 — が提供会社に保持されていたため、オフチェーンの証跡を生み出した。Garrettによれば、Blockは現在その情報を適切な当局と共有している。
Thornらは、その後のより小規模な波では、迅速で機会主義的な流出の後に素早いマネーロンダリングが続くなど、異なる運用パターンが見られると指摘している。これは、最初の公開後に追加の人物が同じ弱いシード空間を逆解析した可能性を示唆する。自己申告ベースで確認された流出は8月6日以降に急減したように見えるが、影響を受けたfirmwareで2021年から2026年7月のパッチまでの間に生成された、依然として脆弱なシードの多くは、利用者が移行するまでリスクが残る。
retirement attack なのか?
この不具合の性質は、Coinkite自身がかつて公に議論した内部攻撃に関する陰謀論を呼び起こした。2021年10月、公式COLDCARDアカウントは「retirement attack」を「プロジェクトの作成者が後で回収するために、エントロピー生成に ‘bug’ を仕込める状況」と定義した。その投稿はここで今も閲覧できる。
2026年の脆弱性はまさにその結果を生んだ。つまり、意図されたよりはるかに少ないエントロピーでシードが生成され、数年後に検索可能な状態になった。Bitcoin界隈の一部では、今回のハックはCoinkite内部の犯行だったと考える向きもあるが、異論もある。公開記録にある証拠はなお薄く、決定的な結論を下せる段階にはない。さらなる証拠は、訴訟を通じて明るみに出るまで何年も出てこない可能性が高い。
重要な変更は2021年3月1日、“First pass w/ libNgU” と題されたコミット(b18723dd)でコードベースに入った。このコミットは、Trezor由来の暗号化およびBIP-39コードの残りを新しいライブラリlibnguに置き換え、シード生成を再配線した。意図された結果は、乱数呼び出しがSTM32ハードウェアの真の乱数生成器に解決されることだった。しかし、この不具合により呼び出し先はMicroPythonのソフトウェアYasmarang PRNGに向かい、結果として旧モデルでは実質的なエントロピーが約40ビット、新しいモデルでも約72ビットまで低下した。つまり、生成されたbitcoin秘密鍵は、現代の計算機ハードウェアで実質的に推測可能だったことになる。規模感として、適切に生成されたBitcoinシードには通常128〜256ビットのエントロピーがあると期待されるため、約40ビットまでの低下は、攻撃者が探索すべき空間を桁違いに縮小し、事実上推測不能な鍵と、単純に列挙できる鍵の差を生む。
この暗号ライブラリの置き換えをコードベースへ押し込んだのは、CoinkiteのChief Technical OfficerであるDoc-Hex、別名Peter Grayだ。
Foundation DevicesのCEO兼創業者Zach Herbertによれば、この移行はライセンス上の圧力によって動機づけられた可能性がある。ただしCoinkiteは、ライセンスがコード変更の主要動機だったことを否定し、「COLDCARD had to make this change to move to libsecp256k1; the license change is irrelevant to this. libsecp256k1 is the standard library used by Bitcoin Core.」と述べている。
ColdcardはGPLv3のオープンソースライセンスの下でTrezor由来のコードを使用していた。Foundation Devicesが関連コードをフォークした後、Coinkiteは残りのコンポーネントを、商用再利用を制限するより制約の強いMIT + Commons Clause構成へ移そうとした。この大規模な書き換えには複雑なエンジニアリング目標があり、その統合が結果としてエントロピー経路の静かな失敗を残したとみられる。
Trezorの暗号ライブラリからの移行に対する懐疑論は、早くも2021年4月7日にCoinkiteのTelegramグループのメンバーが「do we really want to replace the many-years-old TrezorCrypto code that has been heavily scrutinized by white hatters like Johoe and penetration tested by wallet.fail」と書き、「switch may be a talented pseudonymous coder, but their commit history sucks.」と続けたことで表面化していた。しかしこの懸念は、NVKがTrezorライブラリを「shitcoin shitshow」と呼んだことで、すぐに退けられた。皮肉なことに、そのオープンなコードベースが広く利用されていたため、Libnguよりもはるかに深いレビューを受けていた可能性が高い。
Switch と Peter Gray、別名 Doc-Hex
不具合を導入した暗号ライブラリの置き換えをコードベースに押し込んだのは、CoinkiteのCTOであるPeter D. Gray、別名Doc-Hexだった。彼はGPLv3のTrezor暗号ライブラリを、Libngu以前には目立った経歴のない仮名「Switch」が作成した、あまり知られていないコードベースLibnguに置き換えた。
Switchアカウントは2019年8月3日にX上で初登場し、国際ハッカー会議DEFCONに触れていた。これは通常、あらゆる種類のサイバーセキュリティ技術者が参加するイベントだ。2020年10月16日、SwitchはX上でDoc-Hexに対し、自身のコードをマージしてくれたことへの謝意を示した。「Thanks for merge @DocHex … I’m making yet another bitcoin library. Could be useful on @COLDCARDwallet someday.」数日後、SwitchはLibnguへのリンクを投稿し、自分が「useful thing」を作ったと誇った。
しかし、ここから様子が少し奇妙になる。Bitcoin CoreのコントリビューターJames O’Beirneの調査によると、SwitchとPeter D. Grayは同じGPGキーでコードコミットに署名していた。O’BeirneはGPGのコミット署名を通じて、switckとして書かれた多数のコミットが、Coinkiteの共同創業者兼CTOでありDocHexとしても活動するPeter D. Grayの個人キーで署名されていたことを示した。Zach Herbertも、同じ下2桁で終わる電話番号がDocHexとswitckの両方のXアカウントに結び付いていると主張した(post)。別の研究者たちは、DNS登録パターンの一致も指摘している。
本稿執筆時点で、GrayもCoinkiteもGPG署名に関する発見について公にコメントしておらず、問い合わせにも応じていない。Switchアカウントは今も活動しており、2026年8月17日にもLibnguへのコード変更をマージしていた。
Bitcoin業界の一部では、これを不正の状況証拠と受け止めている。しかし、その結び付きだけでは決定打にならない。もしGrayが本当にこのRNG不具合を利用してColdcardユーザーをだまし取るつもりだったなら、なぜ自分の個人GPGキーでコミット署名をしていたのかは不明だ。何年も潜伏していた隠れた不具合と、追跡可能な形で使われる使い捨てニムの併用も、整合的には見えない。仮名アイデンティティはBitcoin開発者コミュニティでは珍しくなく、Satoshiが最も有名な例だ。したがって、GrayとSwitchの結び付きだけでは、Coldcardハッカー捜索の決定打にはなりそうにない。
MicroPythonのコントリビューター
ColdcardのRNG不具合に関与したコードに触れた、あるいは影響を与えたとして、他のいくつかのオープンソース開発者も最近特定されている。
データアナリストLaurentMTは、RNG経路のMicroPython側を調査した。MicroPythonは、マイクロコントローラや資源制約のあるコンピュータ向けに設計された、軽量なPython 3のオープンソース実装だ。不具合の結果、Coldcardのfirmwareは最終的にMicroPythonのYasmarang疑似乱数生成器(PRNG)のフォールバックを呼び出し、それが低エントロピー生成につながった。
MicroPythonのPRNGロジックに関する作業は、2020年8月20日に始まった。GitHub issue #6347 が、「mirko」というユーザーによって開かれたのだ。彼は、自分のESP32ハードウェアがある方法でrandom.choice()を呼ぶと常に同じ結果を返すと述べ、本来はランダムな結果を期待していた。このissueをきっかけに、関連ロジックと期待される挙動の適切な扱い方について数か月にわたる議論が続いた。Mirkoは、その設計が直感に反すると明らかにした。
Laurentは、「robert-hh initialized a [Pull Request] implementing the PRNG seeding change」が2020年8月22日に作成されたと指摘している。その後2020年10月29日、MicroPythonのメンテナーであるdpgeorgeが、そのPull Requestをやや修正した版をmasterリポジトリにマージし、「the (UID+SysTick+RTC) to address some limitations in robert-hh’s solution.」を実装した。つまり、ColdcardがLibngu用にそれをフォークした時点で、関連するRNGコードはMicroPythonのmasterリポジトリ上にあり、しかもMicroPythonが正式な新バージョンをリリースする前だった。
これは重要だ。というのも、リポジトリのmasterブランチの上に構築するのはリスクがあるからだ。公式の安定版リリースとは異なり、コードはなお進化中である可能性がある。MicroPythonの次のリリースは、2021年2月3日のv1.14まで待たねばならなかった。それでもRNG変更の説明はリリース告知で短く触れられただけで、「the urandom module will randomize its seed on import on stm32, esp8266, esp32 and rp2 ports.」と記されていた。
Bitcoin Magazineのインタビューで、Laurentは「without this modification the bug in Coldcard code would have been immediately detected.」と明言した。さらに、この不具合につながった一連の出来事について「there are a lot of ‘coincidences’ in this timeline」と述べ、「while they don’t prove anything, I don’t see how an official investigation may completely ignore them.」と付け加えた。
ここで重要なのは、上記のいずれの開発者にも、こうした変更によってColdcardのRNG不具合を意図的に導入しようとした証拠はないという点だ。最終的には、重要なコードを実装したハードウェアウォレット企業であるCoinkiteに責任がある。MicroPythonも大規模で広く使われているオープンソースプロジェクトだ。それでも、この一連の出来事は、当面は「悲劇的なエラーの喜劇」とでも呼ぶほかないものに見える。
なぜ内部犯行の可能性は低いのか
いくつかの要素は、計画的で長期にわたる内部の retirement attack に反している。「switck」のアイデンティティは区画分けが不十分で、共有されたGPGキーやその他の重複により、研究者が調べればDoc-Hex、別名Peter Grayへの帰属は比較的容易だった。このアカウントは長年ほぼ放置されていた。一方、MicroPythonのコントリビューターたちは、注目度の高いプロジェクトを公に進めていた。
HodlonautによるCitadel21の調査や他の技術レビューでも、エントロピー失敗が意図的だったという明確な証拠は見つかっていない。エンジニアAlekos Filiniの技術レポートは、明示的に「My goal is to purely present facts and NOT make any conclusions.」と述べている。WizardsardineのTechnical autopsyは複数の保護策の失敗を詳述し、失敗が「across a submodule boundary, which is precisely where reviewers stop looking.」にあったと説明している。Steven Gellerの技術的深掘りも、どちらか一方に強い主張をしていない。DK27ssの概念実証による再構築は、この問題を「a chain of four flaws, each harmless in appearance.」と表現した。
もし流出が典型的な内部犯行の retirement attack、あるいは長期的な騙し討ちだったなら、今日の議論はかなり違っていたはずだ。Bitcoin業界で最後に見られた大規模な長期詐欺ハックは、おそらくQuadrigaCXだろう。これはカナダの中央集権型取引所で、創業者Gerald Cottenが2018年に不可解な状況のもと「インドで死亡した」と報じられ、資金不足が発覚したのはその直後だった。Ontario Securities Commissionは、創業者らが数年にわたり、利用者の預託金ほぼ170 million CADを流用したと非難している。
それに対して、Coinkiteの経営陣は今も公の場に出ている。彼らは事件に対応し、修正済みfirmwareを配布し、ユーザーの移行を支援し、技術的な論点にも関与している。創業者や運営者は、資金が失われた時点でも会社を運営し続けており、姿を消してはいない。
一方、Wave 1の資金 — 1,000 BTC超 — は今も3つのアドレスにまとめられたままで、数百人のエンジニア、そしてFBIを含むとみられる法執行機関に監視されている。もしCoinkiteが「5D chess」式のretirement attackを仕掛けていたのなら、盗んだコインの扱いはもっと慎重だったはずだ。追跡しやすい少数のアドレスにまとめることはなかっただろうし、創業者たちもおそらくこの件について語れる立場にはなかったはずだ。
今後の焦点となるいくつかの未解決点がある。Wave 1のコインが監視対象の3アドレスから動くのか、GrayまたはCoinkiteがGPG署名の件について公に説明するのか(本稿執筆時点では未対応)、そして2021年から2026年7月のパッチまでの間に生成された依然として脆弱なシードの所有者が、後続の波の機会主義者に先んじて資金を移すのか、という点だ。
最終結論はまだなく、調査は今後何年も続く可能性が高い。現時点では、この証拠は、Bitcoin最大主義と自己管理保管のコミュニティにおける文化的な失敗、オープンソースでの適切な衛生管理に関する広範な教育の欠如、そして振り返ればCoinkite初期経営陣の過信を示している。
この記事は最初にBitcoin Magazineに掲載され、Juan Galtによって執筆された。