クローズドソース時代の終焉:隠蔽は決してセキュリティではなかった
重要ポイント
- •Coldcardハードウェアウォレットのプリプロセッサバグにより、シードエントロピーが約40ビットに低下し、攻撃者がコンシューマー向けハードウェアで可能なシードを列挙して、約4,585のアドレスにわたり約9,000万ドルを窃取することが可能になりました。
- •この脆弱性は2021年3月に導入され、人間のレビューによって発見されることなく、公開されて読取り可能なファームウェアに5年以上にわたって残存していました。
- •研究者らは、複数の最先端AIモデルが単一のプロンプトから数分以内に同じエントロピー欠陥を特定できることを実証し、コード脆弱性解析におけるAIの成長する能力を浮き彫りにしています。
- •筆者は、AI駆動のリバースエンジニアリングがより高速かつ身近になるにつれ、配布された製品におけるクローズドソースソフトウェアや営業秘密の保護効果が低下していると主張しています。
- •防御者は攻撃者に対して構造的な時間的優位性を保持しており、リリース前に最先端AIモデルを自身のコードに適用し、再現可能なビルドを実装し、鍵を独立した実装に分散すべきです。

過去数日間、推奨されるすべてのセキュリティ手法に従ったビットコイン保有者が、それでもなお資金を失いました。彼らは評価の高いハードウェア署名デバイスを購入し、そのデバイス上でオフラインでシードフレーズを生成しました。これはビットコインキーを作成するための標準的なBIP39方式であり、128〜256ビットのランダム性をエンコードするよう設計されています。そして、署名デバイスが存在する唯一の最も重要な機能——誰も推測できない数値を生成すること——を果たすことを信頼していました。
Coldcardハードウェア署名デバイスはそれを実行できませんでした。誤った条件をチェックするプリプロセッサガードが、シード生成をデバイスのハードウェアエントロピー源ではなく、MicroPythonのYasmarangという脆弱なソフトウェア疑似乱数生成器に静かに迂回させていました。特定のColdcardモデルにおいて、実効エントロピーは約40ビットにまで崩壊しました。これは約1兆通りのシードが可能であることを意味し、コンシューマー向けハードウェアで列挙可能な検索空間であり、本来のセキュリティレベルから200ビット以上の低下に相当します。この欠陥は2021年3月に導入され、公開されて読取り可能なファームウェアに5年以上にわたって存在し続けました。
根本原因が理解される前に、攻撃者は500のアドレスをスイープしました。数日のうちに、Galaxy Researchの集計は4,585のアドレスと約9,000万ドルの損失に達しました。本記事の執筆時点において、攻撃は進行中です。
ColdcardのメーカーであるCoinkiteは、X上で広く共有されている作業仮説として、攻撃者が公開されているファームウェアをAIで精査してバグを発見したと考えています。この特定の事例でAIが使用されたかどうかにかかわらず、次の攻撃者はほぼ確実にAIを活用するでしょう。注目すべきは、窃盗の数週間前に実施されたAI支援監査では何も検出されなかった点です。これはモデルの能力の限界、または検索の特定の構成による可能性があります。攻撃が開始されて以来、研究者らは複数の最先端AIモデルが単一のプロンプトから数分以内に同じ欠陥を特定できることを実証しています。
コードは人間のレビューに5年間公開されていましたが、誰一人として発見しませんでした。
何も変えなかったライセンス変更
Coinkiteは以前、Foundation Devicesが競合製品にコードを組み込んだ後、ファームウェアをフリーソフトウェアライセンスからソース公開条件——具体的にはCommons Clause付きMITライセンス——に移行していました。改定された条件の下では、ユーザーはソースコードを読むことはできましたが、ビジネスを構築することはできませんでした。
この変更はセキュリティに何ら影響を与えませんでした。バグは、ライセンス制限にかかわらず機械が読み取れるコードに存在していました。実際、GPLライセンスのコードの最後の痕跡を削除したまさにその書き換えにおいて、コードベースに侵入したのです。ライセンスの変更は保護を強化せず、単に脆弱性を発見する経済性を変えただけでした。
クローズドソースの幻想
AIの能力が日々増強する時代において、配布されるものはすべて読み取り可能です——あるいは間もなくそうなります。バイナリからシンボルを剥がし、デコンパイラにかけると、NSAが開発した広く使用されるリバースエンジニアリングスイートGhidraを開いたことのある誰もが見慣れている疑似C出力が現れます。名前のない変数、フラット化された制御フロー、FUN_00401a20とラベル付けされた関数。ほとんどの人にとって、この出力は読めません。その人間の理解に対する高い壁こそが、「クローズドソース」のセキュリティプレミアムのすべてでした。
しかし、コンパイルされたプログラムには真実を語る以外に選択肢はありません。暗号化されたままのコードは実行できません。実行の瞬間、プロセッサは実際の命令を受け取らなければならず、したがってプログラムが何を行うにせよ、その方法を完全かつ正確に機械に伝えます。情報はすべて機械コードの中に存在しています。難読化はそれを除去できず、也不可能です。
バイナリの読解が近い将来、機械にとっては困難すぎるように思えるなら、機械がすでにはるかに困難な問題で達成していることを考えてみてください。バイナリの読解は分析の一種であり、必要な事実はすべて目の前にあり、作業は抽出です。数学的発明は全く異なる次元の難しさであり、誰も見たことのない対象を創造することを要求するからです。
7月20日02:19 UTC、AnthropicのClaude Fable 5と協働していた数学者のLevent Alpögeが、Kellerのヤコビアン予想に対する反例を投稿しました。この予想は1939年から未解決であり、Stephen Smaleの21世紀への挑戦リストに掲載されるほど重要な問題でした。何世代もの数学者が挑戦してきました。その反証は3つの変数における3つの多項式で構成されています。Leanは数時間以内に検証し、コンピュータ代数システムで約1分で誰もが確認できるほど短いものです。
ヤコビアン予想は、質問者がどうやらFIFAワールドカップの決勝戦を観戦している間に、わずか一午後に崩壊しました。5月にはOpenAIのモデルが1946年以来未解決だったErdősの単位距離予想を打ち倒しました。7月下旬には、30年間未解決だったグラフ理論の予想がわずか4つのプロンプトで崩壊しました。これらの節目の間に、ヤコビアン予想の反証と、何十年にもわたって成立していた一連のその他の成果がもたらされました。
この進歩のペースを、すでにインターネット上に公開されているマシンコードを読むという比較的地味な作業と並べてみてください。今日のモデルは生のバイトよりもソースコードやデコンパイラ出力をより効果的に処理するため、完全にクローズされたバイナリはわずかな保護の余裕しか保持していません。その余裕はコストの速度制限として機能しますが、他のすべての領域で目の当たりにしているのと同じペースで浸食されています。それがいつまで続くかにセキュリティを賭けることは、加速し続ける時計に対して賭けることを意味します。
より静かな犠牲:営業秘密
エントロピーバグを見つけるのと同じAI能力が、独自の手法を読み取ることもできます。これがより静かな犠牲であり、オープンソースの動向にさらされているとは一度も考えたことのない企業に影響を与えます。出荷されたソフトウェアにおける営業秘密は、常に礼服を着た隠蔽にすぎませんでした。
法律は、営業秘密法が存在する限り長い間、これを認めてきました。合法的に所有する製品のリバースエンジニアリングは正当な行為であり、したがって秘密はそのリバースエンジニアリングが高価であり続ける間のみ生存します。抽出のコストがサブスクリプションとプロンプトの価格まで下がると、顧客に配布されるコードに体現された秘密はもはや秘密ではなくなります。独自のアルゴリズム、文書化されていないフォーマット、バイナリに組み込まれた競争優位性——これらはすべて、気に掛ける誰にとっても、ますます分単位で測られるタイムライン上で読み取り可能になります。
オープンソースも保証ではない
これらはすべて、必ずしもオープンソースを安全にするわけではありません。Heartbleedは、世界で最も広く配備されたTLSライブラリに2年間潜伏していました。資金提供された注目なしの可視性は何も見つけないからです。xzバックドアは、オープンなコントリビューションモデル自体が攻撃面であることを実証しました。忍耐強い敵対者が友好的なペルソナと2年間の正当に見えるコミットで通り抜けられる攻撃面です。
かつてオープンさは盾として機能していましたが、もはやそうではありません。オープンさがもたらすものは、コードを検査することが許可されたレビュアー、独立して再現・検証できるビルド、ベンダーが倒産または方針転換した際の出口戦略、そして好むと好まざるとにかかわらずこれらすべてが起こるという認識です。
防御者の堅固な利点
私たちは今、出荷されるすべてのコード行が悪意を持つ誰かによって読まれると想定しなければなりません。なぜなら、そうなるからです。防御者は、攻撃者が決して持てない一つの構造的利点を保持しています。それは時間です。開発者は、リリース前に、コミットから出荷までの間に、同じ最先端モデルを自身のコードに適用できます。一方、攻撃者はまだ存在しないバイナリを待っています。
ビルドは再現可能にすべきです。つまり、誰もが同じソースをコンパイルし、結果のバイナリが出荷されたものとバイト単位で一致することを検証できるようにし、各バイナリが独立に検証可能なソースコードに遡って紐付けられるようにすべきです。システムはフェイルクローズドで設計し、信頼されるコアは単一のバグがすべてを危険にさらさないよう十分に小さく保つべきです。
特にビットコインを保有する者にとって、Coldcardがリアルタイムで教えている教訓は明確です。推測されることを許容できないエントロピーを自ら所有し、セキュアエレメントを最小限に保ち公開されたインターフェースの背後に置き、鍵を独立した実装に分散してください。そうすることで、単一のデバイスや単一のベンダーの過誤が、あなたのエクスポージャーの全体を構成しないようにします。
永続的な結果
ビットコインの場合、他の領域とは異なり、利害は容赦がありません。プライベートキーの知識だけで資金の完全な所有権が付与されるからです。エントロピーバグは永続的な傷跡を残しました。ジェネレータの修正は、すでに生成されたシードに対しては何もしません。弱いキー空間は永遠にスイープ可能なままであり、情報開示は攻撃者に手法を手渡します。
このパターンは以前にも観察されています。libbitcoinのエクスプローラツールbxにおけるMilk Sad脆弱性は、32ビットの値からプライベートキーをシードしていました。攻撃者は欠陥が公開される前に、それが生成したウォレットをドレインしていました。攻撃者は招待されたかどうかにかかわらず、独自のスケジュールで動きます。一度使われたら回収できないお金にとって、「いつか見つかる」は「いつかなくなる」の同義語です。
ビットコインがすでに設定した標準
ビットコインは決して隠蔽に依存しませんでした。プロトコルはオープンであり、そのルールは誰でも検証可能であり、そのセキュリティは秘密ではなく、完全に公開された状態で成立する数学とインセンティブに基づいています。その周囲に構築されるハードウェアとソフトウェアは、同じ標準に値します。なぜなら、もはや代替案は成立しないからです。
選択は決してオープンかクローズドではありませんでした。規律あるか、晒されているかでした。
Coldcardの状況が示すより広範な教訓は、クローズドソースソフトウェアは壊れたColdcardが生成したシードのようなものだということです。一見すると健全に見えますが、根本的に砂の上に築かれています。誰もがコードを読むことができます。残された唯一の疑問は、開発者がその事実を自発的に認めるか、それともColdcardのユーザーがそうであったように、一度に1つのドレインされたアドレスずつ学ぶことになるかです。
*これはFediのコンテンツプロデューサーであるColin Crossmanによるゲスト投稿です。表明された意見は完全に筆者自身のものであり、BTC IncまたはBitcoin Magazineの見解を必ずしも反映するものではありません。この記事はBitcoin Magazineに最初に掲載されました。