Coldcardのハックは、評判がセキュリティモデルではないことを示した
重要ポイント
- •攻撃者は、Coldcardのファームウェア欠陥を悪用し、十分なランダム性を持たないウォレットシードを生成させることで、709以上のアドレスから約1億1400万ドル相当のbitcoinを盗み、最初の一斉移動では約500のウォレットが25分で空になった。
- •欠陥のあるシード生成コードは、最後のGPLライセンスコードを削除したのと同じ2021年3月のコミットで導入され、その後5年以上、誰にも発見されないまま公開されていた。
- •Coldcardは2020年後半にGPLからCommons Clauseライセンスへ移行しており、そのきっかけには競合他社が同コードを基に製品を発表したことがあった。Commons ClauseのFAQでは、その結果生じるソフトウェアはもはやオープンソースではないと説明されている。
- •Shift Crypto、Nunchuk、WalletScrutinyの研究者たちは、過去にColdcardの欠陥を指摘した後、Coinkite CEOのRodolfo Novak氏から公然と嘲笑され、能力を疑われ、訴訟の脅しまで受けたとされ、著者はそれが独立検証を妨げたと主張している。
- •著者は、ファームウェア更新では脆弱な版で生成されたシードを修復できないと警告し、この悪用はbitcoinの自主管理資産における信認危機をさらに深めたとしている。

Coldcardのハックは、評判がセキュリティモデルではないことを示した
検証を基盤にしたコミュニティは5年間にわたり、自らの判断を1人の人物に委ねていたとFoundation CEOのZach Herbert氏は書いている。
攻撃者は現在までに、709以上のアドレスから合計で約1億1400万ドル相当のbitcoinを流出させた。これは、Coldcardのファームウェアにあった欠陥を悪用したもので、ウォレットのシードを約束された乱数性のごく一部しか持たない形で生成していた。最初の一斉移動では、約500のウォレットが25分で空になった。このバグは2021年3月にコードベースへ入り、その後5年以上にわたり公開されたオープンソースの状態で残っていた。コードが見えることと、コードがレビューされることは同じではないということを思い起こさせる事例だ。
何が起きたのかを説明する人は多い。しかし、より難しいのは、なぜ誰もそれを見つけられなかったのかという点であり、その答えは1行のコードだけにとどまらない。
バグは5年間、公開されたままだった
Coldcardのソースコードは、常に検査可能だった。「Don't trust, verify」は、資格のある人が実際に見ればこそ機能するのであり、5年間、事実上誰も見なかった。
このバグが導入された経緯には注意が必要だ。2020年当時、ColdcardのファームウェアにはGPLのオープンソース・ライセンスが付いていた。競合他社がそのGPLコードを基にしたデバイスを発表した2日後、CoinkiteのCEOでNVKとして知られるRodolfo Novak氏は、(後に削除されたツイートで)GPLを選んだことを後悔していると公に述べた。その年の11月、ColdcardはCommons Clauseを含む新しいライセンスに移行した。Commons ClauseのFAQ自体が、そこから生まれるソフトウェアはもはやオープンソースではないと明言している。
その後、全面的な書き換えが行われ、2021年3月の、最後のGPLコードを削除したコミットは、同時にシード生成を壊したコミットでもあった。ライセンス面の圧力が、その書き換えの範囲や速度にどれほど影響したかは誰にも測れないし、この全面刷新には正当な技術的目的もあった。記録されている事実は、しかしより狭く、それでも十分に重い。競合を制限するためのライセンス変更が、実戦で鍛えられた暗号コードの急ごしらえの置き換えに先行し、その置き換え版に現在ウォレットを流出させている欠陥が含まれていたということだ。セキュリティが重要なソフトウェアでは、ライセンス、コードの所有権、リリース手順を変えることは、コードパスそのものと同じくらい重要になりうる。なぜなら、それによって最終成果物を何人が見るかが左右されるからだ。
自由でオープンソースなソフトウェアの原則は、まさにセキュリティがどの1社の選択にも依存しないようにするために存在する。その原則に、特定の人物だけを例外として認めることはできない。
Zach Herbert氏はFoundationの共同創業者兼CEOである。
調査者たちは、見るべきではないと学んだ
より深刻な失敗は、実際に見ようとした人々に何が起きたかにある。2020年8月、Shift CryptoとNunchukの研究者たちは、Coldcardのマルチシグ検証の欠陥を開示した。Coinkiteはバグを認めて修正を配布したが、NVK氏はCitadel Dispatchのポッドキャストで、その開示を同時に「PR terrorism」と呼び、CVEを持たない研究者を専門家とみなせるのか疑問を呈した。2023年には、WalletScrutinyプロジェクトが古いColdcardビルドの再現に問題があると報告した際、対応は同プロジェクトを無能または悪意があると位置づけ、訴訟の可能性まで示唆した(続報)。その後の独立した追試では、古いリリースに実際の再現性の問題が見つかり、誰も悪意を持って行動していなかったと結論づけられた。
研究者に対する公的な攻撃は、その次の研究者にとっての計算を変える。独立したレビューは遅く、難しく、通常は無報酬だ。何か月もかかる作業に対し、嘲笑、ブロックリスト、法的脅しの可能性があるなら、多くの研究者は別のことに時間を使うだろう。この文化が、エントロピーのバグを見逃させたと証明することはできない。しかし、確信を持って言えるのは、セキュリティは人々が見ようとすることに依存しており、Coldcardを取り巻く環境は「見ること」を罰していたということだ。
評判が証拠になった
「Don't trust, verify」を掲げるコミュニティは、なぜこのような状態に至ったのか。心理学にはそれぞれ名前がある。錯誤真実効果は、同じ主張を繰り返し聞くことで、単一の情報源に由来するにもかかわらず独立に裏付けられたように感じさせる。ハロー効果は、地位、自信、人気製品を、技術的権威があるはずだという思い込みに変える。年々、同じ主張が同じポッドキャストやフィードを通じて流れ続けた。批判者は雇われた宣伝役、研究者はテロリスト、競合はコピー品だとされた。証拠が果たすべき役割を反復が担い、自信が証明の代わりになった。
その結果は、認識的不正確性の取り込み、つまり epistemic capture と表現するのが最も適切だ。コミュニティが徐々に、自らの判断を信頼する権威に委ね、その権威そのものが証拠になっていく状態である。BTC SessionsのホストであるBen Perrin氏は、最近のライブ配信でこの仕組みを珍しく率直に説明し、その傲慢さには創造と保護の能力が優れているという前提が付いていると思っていたので見逃していたと認めた。業界の多くが同じ計算をした。今、自主管理資産に広がっている信認の危機は、その請求書が回ってきたということだ。利用者も開発者も、長年のブランド忠誠と実際の検証を区別しなければならなくなっている。
すべての相手を検証せよ
この悪用事件の後、業界全体が最優先で取り組むべきは利用者だ。移行手順を周知し、脆弱な版で生成されたシードはファームウェア更新では修復できないことを明確にする必要がある。その後、裏方での作業が続く。古い推奨ページ、番組ノート、製品ガイドには、確認されることなく繰り返された何年分もの主張が残っており、一次ソースを添えた訂正が必要だ。攻撃を受けた開発者や研究者には、自分たちの仕事を説明する機会が与えられるべきだ。Bitcoinメディアは、友人、スポンサー、広告主に対しても見知らぬ相手に対するのと同じ厳しさで検証を行い、再び対抗的であるべきだ。
Bitcoinは、専門家や制度はやがて失敗するという前提のもとで設計され、その答えは検証によって信頼を不要にすることだった。その原則を体現するツールを作ったコミュニティは、自らの最も声の大きい人物をその原則から免除してしまった。修正策は、創設時の指示を今度はえこひいきなく適用することだ。ベンダーを信頼するな。ベンダーの批判者も信頼するな。検証せよ。
注: このコラムで示される見解は著者個人のものであり、必ずしもCoinDesk, Inc.またはその所有者・関連会社の見解を反映するものではありません。