Back to Blog

ワームホール攻撃の再検討

Code Auditing
2022年3月22日
5 min read

1. 背景

イーサリアム・ローゼン橋としても知られるワームホールは、時空間の離れた点を結びつける推測的な構造です。ブロックチェーンの世界では、ワームホールは、異なるチェーン(例:SolanaとEthereum)間のブリッジとして使用されています。ユーザーはワームホールを通じてトークン化された資産をブロックチェーン間で転送できます。

2022年2月2日、ワームホールがハッキングされ、攻撃者は3億2000万ドル相当の12万ETH(ラップドイーサ)を鋳造することに成功しました。これは、DeFi史上Poly Networkに次ぐ2番目に大きな損失です。

2. ワームホールの仕組み

ワームホールは、各チェーンで発行されるメッセージを監視することによって機能します。監視されたメッセージはターゲットチェーンに転送され、クロスチェーン通信プロトコルを構築できます。

直感的な疑問は、監視されたメッセージの信頼性をどのように保証するかということです。この問題に対処するため、ワームホールはガーディアンと呼ばれる19の追加ノードを導入しました。現在のガーディアンセットはワームホールエクスプローラーで確認できます。各ガーディアンは、監視されたメッセージを独立して検証し、メッセージに署名できます。

ワームホールでは、メッセージはVAA形式で整理されます。VAAは2つの部分から構成されます。1つはヘッダーで、ガーディアンからの署名が収集されます。もう1つはボディで、ターゲットチェーンの情報、メッセージペイロードなどが含まれます。

ガーディアンからの署名がコンセンサスしきい値に達すると、VAAはチェーンに投稿できます。

要約すると、ガーディアンは転送されたメッセージの整合性に責任を負います。

3. トークンブリッジ

異なるチェーン間でメッセージがどのように転送されるかを説明した後、ワームホールの主要なアプリケーションであるトークンブリッジの仕組みを理解するのは難しくありません。

トークンをチェーンAからチェーンBに転送するには、ワームホールはチェーンAでトークンをロックし、チェーンBで鋳造します。これが大まかなアイデアです。実際には、これは3つのステップに分けることができます。まず、チェーンAのトークンがロックされます。次に、チェーンAのトークンをチェーンBに転送すべきというメッセージがブロードキャストされます。第三に、チェーンBがメッセージを受信し、対応するトークンが鋳造されます。これで完了です。

4. Solanaの手順

Solanaでは、トランザクションは複数の手順で構成されます。各手順は、プログラムID、アカウント、およびデータを含みます。プログラムIDは、手順を処理するプログラム(スマートコントラクト)を表します。プログラムはデータを解釈し、提供されたアカウントを操作します。

5. ワームホール攻撃

要するに、攻撃者はEthereumで資産をロックすることなく、Solanaで12万ETHを鋳造しました。トランザクションはこちらにあります。

したがって、問題は攻撃者がSolanaで12万ETHを鋳造できた方法です。ステップを詳しく見てみましょう。トークンを鋳造するために、手順complete_wrappedが呼び出されます。この手順はいくつかのアドレスを受け取り、3番目は署名されたメッセージを格納するアドレスです。12万ETHを鋳造する前に、チェーンB(つまりSolana)は、チェーンA(つまりEthereum)で12万ETHがロックされたことを示す署名済みメッセージ(つまりVAA)を受信する必要があります。

メッセージを投稿するために、post_vaa.rsで定義されているpost_vaaが呼び出されます。その結果、メッセージを格納するための中央アカウントが作成されます。しかし、post_vaaはガーディアンからの署名をチェックしません。代わりに、verify_signatures.rsで定義されているverify_signauresが署名を検証します。

verify_signaturesに渡される4番目のアカウントはシステム手順アカウントです。ここでverify_signaturesがどのように機能するかを調べましょう。

103行目では、関数load_instruction_atが呼び出され、以前に実行された手順secp_ixがロードされます。secp_ixはSecp256k1署名検証関数を呼び出します。したがって、verify_signaturesは、以前に実行された手順secp_ixをチェックすることによって署名を検証します。さて、すべて理解できましたか?関数load_instruction_atは、どこから手順をロードするかをチェックしません!!!手順はSysvar:Instructionsからロードすることが期待されています。

しかし、攻撃トランザクションの4番目アカウントは、Sysvar:Instructionsではなく[2tHS1cXX2h1KBEaadprqELJ6sV9wLoaSdX68FqsrrZRd]です。この場合、攻撃者は署名検証プロセスを正常にバイパスしました。ワームホールは検証がパスしたと考え、メッセージがチェーンに投稿され、結果として何もロックせずに12万ETHが鋳造されました!

正規の検証手順を見てみましょう。このトランザクションは2つの手順で構成されています。最初のものはSecp256k1検証関数を呼び出し、2番目のものはverify_signatures手順を呼び出します。ここでの4番目アカウントはSysvar:Instructionsです。

12万ETHを鋳造した後、攻撃者はそれをEthereumに戻し、他のトークンに交換して利益を得ることができました。

6. パッチ

リポジトリで述べられているように、バージョン1.8.0以降、load_instruction_atは安全ではなく、Sysvarアカウントのアドレスはチェックされません。代わりに、load_instruction_at_checkedが推奨されます。

7. 私たちの考え

  • 開発者は、使用する外部関数に精通している必要があります。
  • 使用するライブラリの重要な変更に常に注意を払ってください。ライブラリが変更された場合、ライブラリを使用するコードも変更が必要になる場合があります。
  • ライブラリのメンテナーは、指定された変更による潜在的なリスクを認識し、コミュニティ全体にタイムリーに通知する必要があります。単に注釈を追加するだけでは機能せず、十分ではありません。
  • ライブラリとコードのバージョンが変更された場合は、コントラクトコードを監査する必要があります。

BlockSecについて

BlockSecは、2021年に世界的に著名なセキュリティ専門家グループによって設立された先駆的なブロックチェーンセキュリティ企業です。同社は、新興のWeb3の世界のセキュリティとユーザビリティを向上させ、その大規模な採用を促進することにコミットしています。この目的を達成するために、BlockSecはスマートコントラクトとEVMチェーンのセキュリティ監査サービス、セキュリティ開発と脅威のプロアクティブなブロックのためのPhalconプラットフォーム、資金追跡と調査のためのMetaSleuthプラットフォーム、そしてWeb3開発者が仮想通貨の世界で効率的にサーフィンするためのMetaSuites拡張機能を提供しています。

現在までに、同社はMetaMask、Uniswap Foundation、Compound、Forta、PancakeSwapなど300を超える著名なクライアントにサービスを提供し、Matrix Partners、Vitalbridge Capital、Fenbushi Capitalなどの著名な投資家から2回の資金調達で数千万米ドルを受け取っています。

公式ウェブサイト:https://blocksec.com/ 公式Twitterアカウント:https://twitter.com/BlockSecTeam

Sign up for the latest updates
約387万 USDの損失:Autheo NetworkとUNCXへのハッキング | BlockSecウィークリー
Security Insights

約387万 USDの損失:Autheo NetworkとUNCXへのハッキング | BlockSecウィークリー

この週次レポートでは、2026年10月12日–2026年10月18日に発生した3件のセキュリティインシデントを取り上げます。推定損失額の合計は約387万 USDです。Autheo Networkでは秘密鍵の侵害により約176万 USD、Qubic Walletでは脆弱なシード生成により約130万 USDの損失が発生しました。また、Ethereum、BNB Chain、Base、Robinhood Chain上のUNCX NetworkのSmart Token Vesting V2コントラクトでは、会計処理上の誤りにより約80.7万 USDの損失が発生しました。重点的に取り上げるUNCXの分析では、シェア総数の計算に欠陥があり、異なるトークン対シェア比率で作成されたベスティングのトランシェが混同された結果、共通プールからの過剰な引き出しが可能になった仕組みを説明します。

約54万2,000ドルの損失:MakerDaoBotへの攻撃 | BlockSec週間ニュース
Security Insights

約54万2,000ドルの損失:MakerDaoBotへの攻撃 | BlockSec週間ニュース

本レポートは2026/10/05~10/11にEthereumで発生したセキュリティ事故1件を扱う。推定損失は約54.2万ドル。攻撃コントラクトは悪意あるアダプターを展開し、アクセス制御のないMakerDaoBot関数に渡して、ボット内部のMakerDAO残高への操作権限を付与させた。アダプターは旧ETH-Aオークション4件を決済し、ETH-A担保200単位をWETHに変換。攻撃コントラクトがWETHをETHに戻し、攻撃者へ200 ETHを送金した。

約4.18億ドル損失:Bitget、NEAR Intentsのエクスプロイト | BlockSec Weekly
Security Insights

約4.18億ドル損失:Bitget、NEAR Intentsのエクスプロイト | BlockSec Weekly

本隔週セキュリティレポートは、2026年9月21日から10月4日までの8件のインシデントを記録し、Ethereum、BNB Chain、Solana、Bitcoin、TRON、XRP Ledger、Zcash、Avalanche、NEARなどで約4億1840万ドルの損失が発生。詳細分析では、Bitgetの3.875億ドルのサードパーティ製品脆弱性と、NEAR Intentsの387万ドルの返金検証欠陥および状態ロールバック欠落を取り上げる。

Best Security Auditor for Web3

Validate design, code, and business logic before launch. Aligned with the highest industry security standards.

BlockSec Audit