提供
Featured

「Coldcard」の脆弱性について:ビットコインを失ったのは誰か、そして誰が危険にさらされているのか

7月30日、ある攻撃者は特定のColdcardハードウェアウォレットが生成した脆弱なシードを悪用し、数百のアドレスから総額数千万相当のビットコインを盗み出しました。

共有
「Coldcard」の脆弱性について:ビットコインを失ったのは誰か、そして誰が危険にさらされているのか

主なポイント:

  • 7月30日、Coldcardに関連する盗難事件により、数百のウォレットからビットコインが流出した。
  • Coinkiteによると、Mk3のシードのエントロピーは128ビットではなく、約40ビットだったという。
  • Coldcardユーザーは、資金を移動する前に修正済みのファームウェアをインストールし、新しいシードを生成する必要があります。

Galaxy Researchによる詳細な分析では、主な盗難はおよそ25分間にわたる綿密に調整された一連の攻撃として展開され、その後の広範な分析では約1,196のアドレスと最大1,083ビットコイン(価値は約7,000万ドル)が、約41分間の活動に関連付けられました。 調査チームがビットコインのパブリックブロックチェーン上の取引を追跡しているため、最終的な数値は変わる可能性があります。

5年前に発見されたバグが世界中のビットコインウォレットに影響

被害を受けたウォレットの多くは、2021年3月以降にリリースされた脆弱性のあるファームウェアを実行するColdcardデバイスでリカバリーシードを生成した長期保有者に属していました。Coldcardは、カナダのメーカーCoinkiteが製造するエアギャップ型ハードウェアウォレットであり、ビットコイン(BTC)の鍵をインターネットに接続されたデバイスから隔離するように設計されています。

資金が奪われたアドレスの多くは長年にわたり休眠状態にあった。攻撃者は迅速に動き、高額な固定取引手数料を支払い、残高出力(change outputs)を残さなかったため、各アドレスは完全に空になった。このパターンは、顧客が独自に資金を移動させたのではなく、あらかじめ用意された秘密鍵のリストを用いた自動化された操作であったことを示唆している。

この盗難は、フィッシング、ユーザーのコンピュータ上のマルウェア、物理的なデバイスの盗難、あるいは従来型のリモート侵入によって引き起こされたものではありませんでした。むしろ、一部のColdcardデバイスがウォレットシードを生成する際に使用される乱数生成のランダム性が、ファームウェアのエラーによって弱められていたことが原因でした。それらのシードは一見正常に見えましたが、ユーザーに約束されていたものよりもはるかに狭い組み合わせの範囲から生成されていました。

Coldcardの乱数生成機能が密かに機能不全に陥っていた

ビットコインウォレットのシードとは、通常12語または24語で表示される秘密の文字列であり、ウォレットはこのシードからアドレスや秘密鍵を生成します。適切に生成された12語のシードには128ビットのエントロピーが含まれており、これは膨大な数の組み合わせを記述する技術的な指標であり、シードを推測することを事実上不可能にします。

Coldcardデバイスは、デバイス内マイクロコントローラーに搭載されたハードウェア乱数生成器からランダム性を取得するはずでした。このコンポーネントは、外部の観察者が予測できないはずの物理的な電気ノイズを利用しています。

しかし、2021年のソフトウェアライブラリ移行時に、Coinkiteはインターフェースが同じ2つの乱数関数を混していたと説明しました。1つは本来のハードウェア乱数生成器にアクセスするもので、もう1つはハードウェアを持たないボード向けの信頼性の低いソフトウェア代替でした。

Coinkite社が独自のハードウェアラッパーを提供していたため、ある設定によりデフォルトのMicroPythonハードウェアパスが無効化されていました。ソフトウェアは、その設定が存在するかどうかの確認のみを行い、有効化されているかどうかは確認しませんでした。設定は存在していたものの値がゼロに設定されていたため、ビルドは正常に完了しましたが、シード生成は黙って性能の劣るソフトウェア生成器に切り替わってしまいました。

工場出荷時のデータとタイミングが真のランダム性を置き換えた

このフォールバックは、シリアル番号に似たチップ識別子や起動タイミングに関連する内部クロック値など、予測可能なデバイス情報に大きく依存していました。攻撃者がこれらの入力値を絞り込めれば、安全に生成されたシードで想定される128ビットの範囲よりもはるかに狭い範囲を探索すれば済むことになります。

Coinkite社は、現在の仮定の下で、脆弱性のあるMk3シードの実効的な探索空間を約40ビットと推定しました。これは依然として膨大な数の可能性を意味しますが、特に攻撃者が候補となるシードをブロックチェーン上で確認できるビットコインアドレスと照合できる場合、専用の計算機器を用いて探索することが可能となります。

Screenshot of the Coldcard Mk3 model.
Coldcard Mk3モデルの写真。

Mk4、Q、Mk5を含む後のColdcardモデルでは、セキュアエレメントからある程度のランダム性が追加されました。しかし、影響を受けるジェネレータに到達するのはその一部に過ぎず、修正ファームウェアがインストールされる前に生成されたシードには、推定72ビットの実効エントロピーしか残っていませんでした。 Mk3よりは強固でしたが、それでも意図された128ビット基準には達していませんでした。この違いは、真にランダムなロックの暗証番号を、ロックのシリアル番号と初めて電源を入れた時刻から導き出された暗証番号に置き換えるようなものです。 その結果得られる組み合わせはランダムに見えるかもしれませんが、その算出式を知っており、初期情報を推測できる者であれば、それを再現することが可能です。多くのユーザーが、Mk3デバイスだけでなく、Mk4、Q、Mk5からも移行を進めています。

Coinkiteはユーザーに対して完全に新しいシードを作成するよう指示しています。

Coinkiteは脅威を確認した後セキュリティ勧告を発表しファームウェアを修正しました。同社は影響を受けるファームウェアでシードを生成したユーザーに対し、修正済みのバージョンを使用して完全に新しいシードを作成し、そのシードで管理されるアドレスにビットコインを移すよう求めています。

アップデートをインストールするだけでは不十分です。欠陥のあるシステム下で生成されたシードは、ファームウェアのアップデートでは既存の単語にランダム性を追加できないため、恒久的に脆弱なままとなります。

Coinkiteは、ユーザーに対し、デバイスの更新、新しいシードの作成、バックアップとウォレットのフィンガープリントの検証、受取アドレスの確認、少額のテスト送金を行い、その後残りの残高を移すよう助言しました。ユーザーは、送金が確認されるまで古いバックアップを保持すべきですが、古いシードを安全なものとして扱うべきではありません。

同社は、Mk3バージョン4.2.0以降、Mk4およびMk5バージョン5.6.0以降、Qバージョン1.5.0Q以降、ならびに対応するEdgeバージョンを修正済みリリースとして特定しました。 Tapsigner、Opendime、Satscardの各製品は異なるコードを使用しているため、影響は受けていないと報告されています。

セキュリティ対策により一部のColdcard所有者は保護されていた

シード生成時に十分な数の独立したサイコロの目を追加したユーザーは、自身のランダム性が欠陥のあるソフトウェアの入力を上回ったため、実質的に保護されていました。Coinkite社によると、公正なサイコロによる少なくとも50回のプライベートなサイコロ振りが、この問題に対する十分な保護を提供しますが、さらに多くのサイコロを振ることで、より広い安全マージンを確保できるとのことです。

強力なBIP-39パスフレーズも、シードフレーズだけでは復元できない独立したウォレットを作成します。ビットコインを送金する前に複数のデバイスや場所からの鍵を必要とするマルチシグネチャウォレットは、脆弱なColdcardのシードが署名手順の一部に過ぎない場合、大部分または完全に保護されていました。

ただし、これらの対策は任意でした。多くの被害者は、当時提供されていた標準的なセキュリティアドバイスに従っていたようです。つまり、信頼できるハードウェアウォレットを購入し、オフラインでシードを生成し、バックアップを保護し、インターネットに接続されたデバイスには決して入力しない、というものです。

議論がAIへと移る中、Coinkiteが責任を認める

CoinkiteのCEOで、NVKとして広く知られるロドルフォ・ノヴァク氏は7月31日に公に謝罪し、同社はファームウェアの不具合について全責任を負うと述べました。「申し訳なく、打ちのめされています。 昨日のニュースに、私たちのチームは心を痛めています」とノヴァク氏は記した。同氏は、ホットフィックスによって新しく作成されたシードは保護されるものの、脆弱性のあるソフトウェアで生成されたシードを修復することはできないことを認めた。

Coinkite CEO Rodolfo Novak's article screenshot.
ノヴァク氏の謝罪記事。画像出典:X。

ノヴァク氏は、詳細が確認でき次第、技術報告書を公開し、警察への通報や保険金請求、独立調査を希望する被害者ユーザーを支援すると説明しました。また、開発者に対しては、人工知能(AI)ツールが従来のレビュープロセスより速く古い公開コードをスキャンし、隠れた脆弱性を発見できるようになったと警告しました。

同社は、この脆弱性がどのように発見されたかを裏付ける証拠はないものの、攻撃者がAIを使用して同社のオープンソースファームウェアを検査したと想定せざるを得ないと強調した。また、主要なAIモデルを用いて最近実施されたレビューでは、この問題が特定されなかったことも認めた。競合する複数のハードウェアウォレットメーカーは、ソーシャルメディアを通じて自社の製品は影響を受けていないと表明している。

「Ledgerは、先日公開されたColdcard Mk3に関するアドバイザリの影響を受けていません」と同社は、Coldcardのインシデントを受けてXのユーザーに伝えた。 「Ledgerのデバイスは、当社のセキュアエレメントチップに直接組み込まれた認定済みの真の乱数生成器(TRNG)を使用しており、24語の秘密回復フレーズごとに256ビットのエントロピーを生成しています。」

「Trezorユーザーの皆様:資産は安全です」とハードウェアウォレットメーカーのTrezorは金曜日に説明しました。「今回のColdcardの問題は、同社独自のカスタムファームウェアと一部のデバイスにおける乱数生成方法に限定されています。Trezorはそのコードを共有していません。」Trezor Xのアカウントは次のように付け加えました:

「当社は常に、複数の独立した乱数生成源(デバイスのハードウェア+ホスト+新型モデルのセキュアエレメント)を組み合わせてきました。ビットコインを失われたすべての方々に、心よりお詫び申し上げます。」

Coldcardユーザーが今後注意すべき点

攻撃者の正体は依然として不明であり、盗まれたビットコインはいつでも集約アドレスから移動する可能性があります。調査チームは現在も、実際に生成された脆弱なシードの数がどれほどか、どれだけのビットコインが依然として危険にさらされているか、そして攻撃者によってすでに他の高額なウォレットが特定されているかどうかを特定するために調査を続けています。 ただし、Coinkiteにはかなり以前の所有者に関する情報があまり残っていない可能性があります。「面白い両刃の剣ですね。Coinkiteはデータ漏洩を防ぐため、120日後にすべての顧客記録を削除しています」と、Casaの共同創業者であるジェイムソン・ロップ氏はXで報告しました。 つまり、過去5年間に脆弱なコールドカードを購入した顧客に連絡を取り、この脆弱性について警告することができないということです。」

X screenshot of the pseudonymous open-source bitcoin developer calle.
ハンドルネーム「calle」のオープンソース・ビットコイン開発者もこの件について見解を述べました。「影響を受けたすべての方々、特に生涯の貯蓄を失ってしまったかもしれない方々には、心から胸が痛みます。最も残念なのは、彼らがすべてを正しく行っていたという点です」と、calleはX上で語りました。

この事件は、CoinkiteがColdcardへの信頼を回復できるか、またハードウェアウォレットメーカーがシード生成に関してより厳格な独立審査を採用するかどうかを試すものとなるでしょう。 ユーザーにとっての当面の優先事項は単純明快です。強力な独立したダイスエントロピー、パスフレーズ、またはマルチシグネチャによる保護がない状態で、影響を受けたファームウェア上でシードを作成した人は、そのウォレットが侵害されたものと見なし、資金を慎重に新しく生成したウォレットに移すべきです。

この壊滅的な盗難事件を受け、コミュニティ全体のビットコイナーたちが警鐘を鳴らし、さらに脆弱なウォレットが空になる前に、この情報を広めるよう他の人々に呼びかけている。

この記事はAIを使用して英語から翻訳されました。英語の原文が正式な情報源であり、自動翻訳には、特に法律および規制に関する用語において不正確な部分が含まれる場合があります。