要点
- Coinkiteは、Coldcardハードウェアウォレットのシードがハードウェア生成器ではなく、ソフトウェアのフォールバックから取得された原因はビルドエラーだったと述べています。
- 同社は攻撃者がオープンソースコードにAIを使ったと考えており、自社で数週間前に実施したAIレビューでは問題が見つからなかったと述べています。
- 現在販売されている全モデルが何らかの形で影響を受けており、ファームウェアの更新では既存のシードは修復されません。
Coinkiteは、攻撃者がAIを利用してColdcardハードウェアウォレットの重大な脆弱性を発見し、所有者たちが数千万ドル相当のBitcoinを失ったと考えています。同社は同じコードに対し数週間前に自社でAIレビューを行ったものの、問題は検出されなかったと述べています。
ハードウェアウォレットメーカーは、Mk3に向けた アドバイザリーと 技術的分析を木曜日に公開しました。これは、デバイスで生成されたシードが意図したよりはるかに推測されやすいことが判明したことを受けたものです。
この脆弱性の被害は金曜日の早朝に悪用され、被害額は推定594 BTC、約3,800万ドルです。25分間で約500個のウォレットから資金が抜き取られ、その後562 BTCがひとつのアドレスに統合されました。
Coinkiteは、「誰かがAIを使って以前のファームウェアのバージョンをレビューした」と仮定するしかないと述べています。同社は、数週間前に入手可能な最良のAIモデルを自社コードに適用したにもかかわらず、「このバグや深刻な問題は発見されなかった」としています。攻撃者も防御側も同じツールを持っているが、今回は「我々には役立たず、悪人だけが恩恵を受けた」と書かれています。
何が問題だったのか
Coldcardのファームウェアはランダム値を取得する関数を呼び出しますが、そのコードベースには同じシグネチャを持つ2つの実装が存在していました。一つはCoinkiteが書いたハードウェア生成器、もう一つはMicroPython由来のソフトウェアフォールバックです。前処理ガードは設定の存在しかチェックせず、値を検証していなかったため、ビルドは問題なくフォールバックで完了してしまいました。2021年3月の移行以来、このフォールバックでシード生成が行われていました。
現行のすべてのモデルが何らかの影響を受けています。Coinkiteによると、Mk3のシードの実質的な探索空間は約40ビットで、本来持つべき128ビットより大幅に低くなっています。Mk4、Q、Mk5の安全素子による追加エントロピーで探索空間は約72ビットまで拡大し、改善はされているものの本来の目標には達していません。Tapsigner、Opendime、Satscardは異なるコードを使用しており影響はありません。
オーナーがすべきこと
CoinkiteはMk4、Mk5向けにバージョン5.6.0、Q向けに1.5.0Qの緊急ホットフィックスをリリースしました。更新しても、影響を受けるファームウェアで既に作成されたシードは修復されません。新たなシードを修正済みハードウェア上で生成する必要があり、同社は強力なBIP-39パスフレーズや少なくとも99回のダイスロール、もしくは両方の利用を推奨しています。Mk3オーナー(サポート終了モデル)には、別途移行方法が案内されています。
