攻撃者は、7月30日に特定のColdcardハードウェールウォレットで生成された弱いシードを悪用し、数百のアドレスから約数千万ドル相当のBitcoinを盗み取った。
主なポイント
- 7月30日、Coldcardとリンクした盗難により、数百のウォレットからBitcoinが引き出されました。
- Coinkiteは、Mk3シードが128ビットではなく約40ビットのエントロピーを持っていたと述べています。
- Coldcardユーザーは、資金を移動する前に、修正済みのファームウェアをインストールし、新しいシードを作成する必要があります。
5年間のバグが世界中のBitcoinウォレットに到達
影響を受けたウォレットは、2021年3月以降にリリースされた脆弱なファームウェアを搭載したColdcardデバイスを使用して回復シードを生成した長期保有者に主に属していました。ColdcardはカナダのメーカーCoinkiteが製造するエアギャップ型ハードウェアウォレットで、Bitcoin(BTC)の鍵をインターネットに接続されたデバイスから隔離することを目的としています。
空になったアドレスの多くは、数年間アクティブではなかった。攻撃者は迅速に行動し、高めの固定手数料を支払い、変動幅を残さなかったため、各アドレスの残高は完全に空にされた。このパターンは、顧客が自発的に資金を移動したのではなく、事前に準備された秘密鍵のリストを使用した自動化された操作を示唆している。
この盗難は、フィッシング、ユーザーのコンピューター上のマルウェア、物理的なデバイスの盗難、または従来のリモート侵入によって引き起こされたものではありません。代わりに、ファームウェアのエラーにより、一部のColdcardデバイスがウォレットシードを生成する際に使用されるランダム性が弱まりました。これらのシードは通常のように見えましたが、ユーザーに約束された可能性のある組み合わせの範囲よりもはるかに狭い範囲から生成されていました。
Coldcardのランダム数生成機能が静かに失敗
Bitcoinウォレットのシードは、ウォレットがアドレスと秘密鍵を生成するための秘密の情報で、通常12語または24語で表示されます。適切に生成された12語のシードは128ビットのエントロピーを含み、これは膨大な組み合わせ数を示す技術的な指標であり、シードを推測することは実質的に不可能です。
Coldcardデバイスは、デバイスのマイクロコントローラー内のハードウェア乱数発生器からそのランダム性を取得することになっていました。このコンポーネントは、外部の観測者が予測できない物理的な電気ノイズから抽出します。
しかし、2021年のソフトウェアライブラリの移行中に、Coinkiteはインターフェースが一致する2つの乱数関数が混同されたことを明かした。一方はデバイスの適切なハードウェアジェネレーターにアクセスし、もう一方は適切なハードウェアがないボード用に設計された弱いソフトウェアフォールバックだった。
Coinkiteが独自のハードウェアラッパーを提供したため、設定値によりデフォルトのMicroPythonハードウェアパスが無効化されました。ソフトウェアはその設定が存在するかどうかのみをチェックし、有効化されているかどうかは確認しませんでした。設定は存在していましたが、値が0に設定されていたため、ビルドは正常に完了しましたが、シード生成は静かに弱いソフトウェアジェネレーターに切り替わりました。
ファクトリーデータとタイミングが真のランダム性を置き換えました
そのフォールバックは、シリアル番号に似たチップ識別子や起動タイミングに関連する内部クロック値など、予測可能なデバイス情報に大きく依存していました。これらの入力を絞り込める攻撃者にとっては、安全に生成されたシードから期待される128ビット範囲よりもはるかに小さな探索範囲で済むことになります。
Coinkiteは、現在の仮定のもとで、脆弱なMk3シードの有効な検索空間を約40ビットと推定しています。これはまだ多くの可能性を含みますが、攻撃者が候補となるシードをブロックチェーン上に表示されているBitcoinアドレスと比較できる場合、専用のコンピューティング機器で検索が可能です。

Mk4、Q、Mk5を含む後期のColdcardモデルでは、セキュアエレメントから一部のランダム性が追加されました。ただし、影響を受けた生成器に到達したのは限られた部分にとどまり、修正済みファームウェアがインストールされる前に作成されたシードの有効エントロピーは約72ビットと推定されています。これはMk3のパスよりも強力でしたが、意図された128ビット基準にはまだ及んでいません。
その違いは、本当にランダムなロックの組み合わせを、ロックのシリアル番号と最初に電源を入れた時間から導かれた組み合わせに置き換えることと似ています。結果として得られる組み合わせはランダムに見えるかもしれませんが、その式を知り、初期情報を推定できる人物なら、それを再現できます。多くのユーザーが、Mk3デバイスだけでなく、Mk4、Q、Mk5からも移行しています。
Coinkiteはユーザーに完全に新しいシードを作成するよう指示
Coinkiteはセキュリティアドバイザリーを公開し、脅威を認識した後、ファームウェアを修正しました。同社は、影響を受けたファームウェアでシードを生成したユーザーは、修正済みバージョンを使用して完全に新しいシードを作成し、そのシードが管理するアドレスにBitcoinを振替えるよう呼びかけています。
更新をインストールするだけでは十分ではありません。不完全なシステムで作成されたシードは、ファームウェア更新では既存の単語にランダム性を追加できないため、永続的に弱いままです。
Coinkiteは、ユーザーにデバイスの更新、新しいシードの作成、バックアップとウォレットのフィンガープリントの確認、受信アドレスの確認、小額のテスト送金の実行、その後残高を移動するよう勧めました。ユーザーは、振替が確認されるまで古いバックアップを保持する必要がありますが、古いシードをもはや安全とは扱わないでください。
同社は、Mk3バージョン4.2.0以降、Mk4およびMk5バージョン5.6.0以降、Qバージョン1.5.0Q以降と、対応するEdgeバージョンを固定リリースとして特定しました。Tapsigner、Opendime、Satscard製品は異なるコードを使用しており、影響を受けなかったと報告されています。
セキュリティの追加により、一部のColdcard利用者が保護されました
シードを生成する際に十分な独立したダイスロールを追加したユーザーは、自身のランダム性が不完全なソフトウェア入力を上回ったため、大幅に保護されました。Coinkiteは、公正なダイスを少なくとも50回プライベートにロールすることで、この問題からの十分な保護が得られると述べていますが、さらに多くのロールを追加することでより広い証拠金マージンを確保できます。
強力なBIP-39パスフレーズは、シードワードのみでは復元できない別のウォレットも生成します。複数のデバイスまたは場所からの鍵が必要なマルチシグネチャウォレットは、脆弱なColdcardシードが署名プロセスの一部に過ぎなかった場合、大部分または完全に保護されていました。
しかし、これらのセキュリティ対策は任意でした。多くの被害者は、当時一般的に提供されていたセキュリティアドバイスに従ったようです:信頼できるハードウェアウォレットを購入し、オフラインでシードを生成し、バックアップを保護し、インターネットに接続されたデバイスに決して入力しないこと。
Coinkiteが責任を認め、議論はAIへと移る
CoinkiteのCEOであるロドルフォ・ノバク(通称NVK)は7月31日に公に謝罪し、同社がファームウェアの不具合について完全な責任を負うことを表明しました。「申し訳ありません。心が砕けそうです。昨日のニュースにチーム全体が深い悲しみに包まれています」とノバクは記しました。彼は、ホットフィックスにより新しく作成されたシードは保護されるが、脆弱なソフトウェアで生成されたシードを修復することはできないと認めました。

ノバックは、Coinkiteが詳細を確認した後、完全な技術的報告を公開し、警察への届出や保険請求、独立した調査を求める影響を受けたユーザーを支援すると説明しました。また、彼は開発者に、人工知能(AI)ツールが従来のレビュー手法よりも速く古い公開コードの隠された脆弱性をスキャンできる可能性があると警告しました。
Coinkiteは、攻撃者がオープンソースのファームウェアをAIを使って検査した可能性があると強調したが、この脆弱性がどのように発見されたかを示す証拠はまだ存在しない。同社は、最近実施された主要なAIモデルによるレビューでもこの問題は特定されなかったことを認めた。複数の競合ハードウェアウォレットメーカーが、自社製品は影響を受けないとソーシャルメディアで述べている。
「Ledgerは、最近発表されたColdcard Mk3の注意喚起の影響を受けません。」同社はColdcardの事象後にXユーザーに語りました。「Ledgerデバイスは、Secure Elementチップに直接組み込まれた認証済みTrue Random Number Generator(TRNG)を使用しており、24語のシークレットリカバリフレーズごとに完全な256ビットのエントロピーを生成します。」
「Trezorユーザーの皆様:お預けの資金は安全です。」ハードウェアウォレット製造元のTrezorは金曜日に説明した。「最近のColdcardの問題は、独自のファームウェアと一部のデバイスがランダム性を生成する方法に限定されています。Trezorはそのコードを共有していません。」
Trezor Xの口座が追加されました:
私たちは常に複数の独立したランダム性のソースを組み合わせてきました(デバイスのハードウェア+ホスト+新モデルのセキュアエレメント)。Bitcoinを失ったすべての方々に心よりお詫び申し上げます。
コールドカード利用者が次に注目すべき内容
攻撃者の身元はまだ不明であり、盗まれたBitcoinは統合アドレスからいつでも移動する可能性があります。調査官たちは、実際に生成された脆弱なシードがいくつあったか、どの程度のBitcoinが依然として露出しているか、さらに追加の高価値ウォレットがすでに攻撃者によって特定されているかどうかを特定するために作業を続けています。ただし、Coinkiteは長期間前のオーナーに関する情報がほとんどない可能性があります。
「面白い二重刃の剣です:Coinkiteはデータ漏洩から保護するために、顧客データを120日後にすべて削除しています」と、Casaの共同設立者であるジェイムソン・ロップはXで報告しました。「これは、過去5年間に脆弱なColdcardを購入した顧客に対して、この脆弱性を警告することができないことを意味します。」

この事件は、CoinkiteがColdcardへの信頼を回復できるかを試すだけでなく、ハードウェアウォレットメイカーがシード生成に対してより強力な独立したレビューを採用するかを試すものでもあります。ユーザーにとって、直近の優先事項はよりシンプルです:影響を受けたファームウェアで、強力な独立したダイスエントロピー、パスフレーズ、またはマルチシグ保護なしでシードを作成した場合は、それを侵害されたものとみなして、新たに生成したウォレットに慎重に資金を移動してください。
壊滅的な盗難を超えて、コミュニティ全体のビットコイン利用者が警鐘を鳴らし、さらに脆弱なウォレットが空になる前に情報を広めようとしています。
