Bitcoin開発者であるLuke Dashjrは11月9日、CoinkiteのColdcardハードウェアウォレットの乱数生成コードについて9つの懸念を公にリストアップし、以前にそれらを同社に非公開で報告していたと述べた。
「これらすべてが兵器化できるとは言っておらず、すべてがバグであるとも断言していません」とDashjrは彼の開示で書きました。彼はCoinkiteがこれらを修正したかどうかを知らないと述べ、自分のレビューを完全な監査ではなく、簡易な確認であると説明しました。
彼のスレッドは7月のファームウェア改訂版にリンクしています。Coinkiteの後のリリースノートと公開されたソースには、彼が指摘した複数の分野に対する変更が含まれており、チップシードエラーのチェックやハードウェアRNGパスの起動テストが含まれています。
https://x.com/i/status/2119836060306018364
この開示は、Coldcardの7月のシード生成イベントに続くものです。Coinkiteは、攻撃者が弱体化したウォレットのシードを悪用して、オフラインでプライベートキーを再生成し、デバイスにリモートでアクセスすることなく資金を盗んだと述べています。
Dashjrの番号付き投稿は、以前の修正後に使用されたコードについて懸念を提起しました:
彼は、起動時に初期のランダムサンプルを破棄すべきかどうか疑問を呈し、チップのシードおよびクロックエラーのチェックが欠落していることを指摘し、チップのマニュアルには暗号アプリケーション向けに後処理が求められていると述べた。
彼は、バッファ化された読み取りには繰り返し出力チェックが適用されるが、直接呼び出しには適用されないと述べ、低レベルのエラー検出ルーチンだけでは十分であることが示されていないと主張した。
彼は、セキュアエレメントのランダム性が期待される強度を維持できなかった理由を疑問に思い、新たに有効化されたRNGパスの完全なテストを促し、ビルド時の対策にのみ頼るのではなく、デバイス上でチェックを行うよう呼びかけました。
彼は、Pythonの例外を安全に処理できないコンテキストでタイムアウトが処理されると、未定義の動作を引き起こし、デバイスがクラッシュしたり使用不能になったりする可能性があると警告しました。
Dashjrは、NVKが人間にはColdcardの欠陥を見つけることができないと主張したことを聞いて、公にしたと述べた。その当日早朝、CoinkiteのCEOであるRodolfo Novak(通称NVK)は、「人間が見つけられなかったものを発見するには新しいAIモデルが必要だった」と記していた。Novakの投稿は、以前のシード生成の欠陥の発見に関するものであり、Dashjrの技術的なスレッドはその修正後のコードについて扱っていた。
後続のファームウェアでRNGチェックが追加されました
Coinkiteのダウンロードページでは、Mk4/Mk5用の現在の標準ファームウェアが5.6.3、Q用が1.5.3Qであると示されています。リリース履歴によると、シードエラー検出とハードウェアRNGの起動自己診断は、8月20日にリリースされたバージョン5.6.1で追加されました。
5.6.3の公開されたMk4ソースはウォームアップサンプルを無視し、シードエラーフラグをチェックし、失敗時に再試行し、呼び出しがハードウェア乱数生成器に到達するかをテストします。リリースノートには、セキュア要素の両方が、新しいマスターシードごとに直接サンプリングされるようになったとあり、以前はブート時のRNGシーディングを通じてのみ寄与していました。
現在のソースでは、繰り返し出力のチェックをバッファ化された読み込みルーチン内に置いたままであり、すべての直接呼び出しには含まれていません。そのコメントでは、チップのドキュメントに基づき、クロックエラーのフラグは意図的に無視されていると述べており、これらのエラーは生成された数値を無効にはしないとしています。
7月の事象の影響を受けたユーザーに対して、Coinkiteのスタンディングガイドラインは、ファームウェアの更新では既に弱化したシードを修復できないことを維持しています。これらのユーザーは、アドバイザリーの独立したダイス例外が適用されない限り、その移行ガイドラインに従う必要があります。



