Coldcardのシード生成に関する脆弱性をめぐる資金流出は、発生から3日が経っても止まっていない。Galaxy Researchは8月1日、第3波にあたる引き出しを確認したと明らかにした。同社の観測範囲では、3つの波を合わせて1,367BTCが4,585アドレスから引き出されている。直近の価格でおよそ8,860万ドルにあたる。
起点は2021年3月のファームウェアだ。シード生成の処理がチップ側の乱数生成器ではなく、予測可能なソフトウェアの乱数生成器へ回されていた。鍵の候補範囲が有限に絞られ、開示された情報と十分な計算資源があれば、デバイスに一度も触れることなくオフラインで再現できる状態だった。技術的な経緯と対処法は既報のとおりだが、この3日間のオンチェーンの動きは、攻撃対象がどのように決まっていたのかを示している。
三つの波と、下がり続ける1件あたりの被害額
7月30日の第1波は、1,196のアドレスから1,083BTCを41分で引き出した。1件あたり1BTC近い。
第3波は、金曜昼から土曜朝(UTC)にかけて1,912のアドレスから約208BTCだった。1件あたりに直すと0.1BTC強にとどまる。件数は増え、1件あたりの金額は下がっている。
残高の大きいウォレットから順に狙ったのであれば、この順序にはならない。CoinDeskは、平均取得額の低下について、鍵空間のうち採算の合う領域がすでに掘り尽くされつつあることを示すと伝えている。攻撃は保有額を基準に対象を選んだというより、再現可能な鍵を探索する過程で、結果として残高の大きいアドレスが先に影響を受けたとみられる。
少なくとも、残高の大きさが対象を決めていたとは読めない。
鍵が作られた時点で決まっていた
Galaxyのリサーチ責任者アレックス・ソーン氏によると、引き出されたコインの平均休眠期間は3.18年だった。被害を受けたのは、長期にわたって動かしていなかった残高である。
一般的なセキュリティ事故では、被害の有無は侵入の時点で決まる。フィッシングに応じたか、鍵を晒したか、不用意な操作をしたか。だが今回、3.18年という数字が示しているのは、被害者の多くがその期間に何もしていなかったという事実だ。運用の巧拙が結果を分けたわけではない。該当するファームウェアでシードを生成したかどうかが、それより前の時点で結果を決めていた。
時間が経つことも防御にならなかった。鍵空間が有限であるという性質は、生成された瞬間から変わらず、脆弱性が公開されるまでの5年間そのまま持ち越された。
第3波では手口も変わっている。第1波と第2波が少数の集約アドレスへ資金を集めていたのに対し、第3波は被害者ごとに別の宛先へ送り、マルチシグやタイムロックの条件を持たせられるP2WSH形式の出力に置いた。1回の引き出しに平均6件をまとめ、走査するのは既定の導出パスのみに絞られている。追跡は難しくなった。
ただしGalaxyは、各波の内部については単一の実行者によるものと判断できるとする一方、3つの波が同一の攻撃者によるものかどうかは判断しないとしている。同社は、公開された情報をもとに態勢を立て直した同一の実行者である可能性と、同じ鍵空間を独立に探索している別の実行者である可能性の両方を挙げ、チェーン上のデータからは区別できないと説明している。
一部で「取引所へ戻す」動きも観測
オンチェーン分析企業CryptoQuantのリサーチ責任者フリオ・モレノ氏によると、7月31日、10BTC未満の取引所入金が7,300BTCへ増加した。2月6日以来の水準だという。1BTC未満の送金の合計は39,600BTCに達し、FTXが破産を申請した翌日にあたる2022年11月16日の39,900BTCに迫った。
FTXの破綻時、リスクの所在は取引所にあった。破綻と出金停止に対して、保有者は自己保管へコインを引き揚げ、取引所残高は減った。今回は逆方向に動いている。取引所関連ウォレットのBTC残高は、流出発生前の270万3,837BTCから271万5,000BTCへ増えたとCoinDeskは伝えている。
ただしモレノ氏は、この増加がColdcardの問題と「関連する可能性がある」と述べるにとどめており、因果を特定してはいない。月末や週末の要因を排除できる材料はない。
観察できるのは、リスクの所在が変わったときに、一部の保有者がまず保管場所を変えたということだ。今回のリスクは保管場所ではなく生成過程に由来していたが、取れる対処のうち最も速いのは、資金を別の管理下へ移すことだった。
どこまでがColdcard固有の話か
対象は、該当する期間のファームウェアで生成されたシードに限られる。ハードウェアウォレットという保管方式そのものの問題ではなく、大半のハードウェアウォレットと、適切に生成されたシードは影響を受けないとCoinDeskは整理している。
Coinkiteはすでに修正版ファームウェアを公開しているが、更新しても既存のシードは修復されない。生成し直したうえで資金を新しいアドレスへ移す必要がある点は、既報のとおりだ。
サイコロによるエントロピーの追加や、独立したパスフレーズが対策として挙がる理由も、今回の被害構造から説明できる。これらは攻撃を検知したり遮断したりするものではない。ユーザー自身が外部から乱数を持ち込むことで、機器の実装に何があっても鍵空間が有限にならないようにする。防いでいるのは侵入ではなく、鍵が再現可能になることそのものだ。
日本の読者にとっての接点
Coinkiteのアドバイザリーは英語で提供されており、対象機種とファームウェアのバージョンは複数回にわたって更新されている。日本語圏では一次情報に届きにくく、既報の内容が現時点で最新かどうかを個別に確認しにくい状態が続いている。
該当するかどうかの判定も、機器を見れば分かるものではない。いつ、どの機種で、どのようにシードを作ったか。その記録が本人の手元にあるかどうかに依存する。購入時期や利用歴の記録を残していない場合、判定そのものが難しくなる。
自己保管は、機器を選んだ時点で完了する作業ではない。今回の流出が示したのは、鍵の由来をたどれるかどうかが、保管方法と同じ層の問題として存在していたという事実だった。
Galaxyはこれまでにおよそ600の攻撃者アドレスを、連邦捜査当局とコンプライアンス企業に共有したとしている。3つの波で引き出された資金は、いずれも攻撃者のアドレスに置かれたまま動いていない。
