WormholeはイーサリアムとSolana間で最も活発なブリッジの一つだった。片側でETHを預け、もう片側でラップドETH(wETH)を受け取る仕組みで、預けられたコインは1:1でエスクローとして保持されていた。2022年2月2日、攻撃者はブリッジが信頼するメッセージに対して有効な署名を偽造し、何も預けずに12万wETH——約3億2500万ドル——を鋳造し、その後ブリッジの担保から約2億5000万ドル相当の実イーサリアムを引き出した。

署名検証のバグはプロジェクト内部で知られており、修正も書かれていた。しかしその修正は、本番環境に到達する前に、攻撃当日にプロジェクトの公開GitHubリポジトリへプッシュされていた。コミットは定例のバージョン更新と説明されていたが、開発者のMatthew Garrettが指摘したように、差分はその説明にはあまりにも大きすぎた——そして、監視していた誰にでも弱点がどこにあるかを正確に示していた。数時間後、それは悪用された。

Wormholeはネットワークが「メンテナンスのため停止中」と発表し、盗難を確認し、オンチェーンメッセージに埋め込んだ1000万ドルの報奨金を攻撃者に提示した。窃盗犯はそれを受け取らなかった。翌日、Wormholeの開発者が所属するトレーディング会社Jump Cryptoが、ブリッジの支払能力を維持するために12万ETHを補充した。この救済はCoinDeskが報じ、Jump自身もTwitterで確認した。

何もないところから鋳造されたwETHで3億2500万ドル。ブリッジのイーサリアム担保から約2億5000万ドルが流出。Solanaは当日10%下落した。

修正済みコードは公開リポジトリに置かれていた一方、本番環境は依然として脆弱なバージョンを稼働させていた——修正そのものが悪用の手引書になった。

そのコミットは定例更新とラベル付けされていたが、その規模はラベルと矛盾し、セキュリティ修正が進行中であることを静かに知らせていた。

コードの公開とコードの実行は別の行為として扱われていたが、公開ブロックチェーン上では決して別ではあり得ない。

ブリッジの署名チェックは9桁の金額を守る単一の防衛点である。数か月前のNeodymeによる監査はこの欠陥を捉えていなかった。

公開リポジトリは、意図していなくても展開チャネルになる。修正が攻撃者の読める場所に存在するなら、コミットと出荷を同時に行うか、先に展開し、すべてのノードにパッチが適用されてから初めて公開すべきだ。

Jump Cryptoによる12万ETHの注入はwETHの1:1の裏付けを維持し、wETHを担保として利用していたSolanaのDeFi融資市場全体への連鎖を食い止めた。窃盗犯は特定されず、報奨金への応答もなかった。この侵害は、クロスチェーンブリッジがセキュリティ上の「根本的な限界」に直面するというVitalik Buterinの警告の決定的な証拠となり、ブリッジチームに展開完了まで修正を伏せること、そして監査を上限ではなく下限として扱うことへと向かわせた。

出典をたどる

出典

  1. Wormhole cryptocurrency platform hacked for $325 million after error on GitHub The Verge · theverge.com ·
  2. $320 million stolen from Wormhole, bridge linking solana and ethereum CNBC · cnbc.com ·
  3. Jump Trading Backstops Wormhole's $320M Exploit Loss CoinDesk · coindesk.com ·