ワームホール攻撃の再訪

ワームホール攻撃の再訪

1. 背景

ワームホール(Einstein-Rosen bridgeとしても知られる)は、時空の離れた点を結ぶ理論上の構造です。ブロックチェーンの世界では、ワームホールは異なるチェーン(例:SolanaEthereum)間のブリッジとして使用されます。ユーザーはワームホールを介してトークン化された資産をブロックチェーン間で転送できます。

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

2. ワームホールはどのように機能するか

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

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

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

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

要約すると、ガーディアンは転送されるメッセージの整合性を担当します。

3. トークンブリッジ

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

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

4. Solanaの説明

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

5. ワームホール攻撃

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

したがって、問題は攻撃者がSolanaで120,000 ETHをミントできた方法です。ステップを詳しく見ていきましょう。トークンをミントするために、命令complete_wrappedが呼び出されます。この命令はいくつかのリソース(アドレス)を受け取り、3番目のリソースは署名済みメッセージが保存されているアドレスです。120,000 ETHをミントする前に、チェーンB(つまりSolana)は、チェーンA(つまりEthereum)で120,000 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です。この場合、攻撃者は署名検証プロセスを正常にバイパスしました。ワームホールは検証がパスしたと判断し、メッセージはチェーンに投稿され、結果として何もロックせずに120K ETHがミントされました!

合法的な検証命令を見てみましょう。このトランザクションは2つの命令で構成されています。最初の命令はSecp256k1検証関数を呼び出し、2番目の命令はverify_signatures命令を呼び出します。ここの4番目のリソースがSysvar:Instructionsであることに注意してください。

120K 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
Weekly Web3 Security Incident Roundup | Feb 9 – Feb 15, 2026

Weekly Web3 Security Incident Roundup | Feb 9 – Feb 15, 2026

During the week of February 9 to February 15, 2026, three blockchain security incidents were reported with total losses of ~$657K. All incidents occurred on the BNB Smart Chain and involved flawed business logic in DeFi token contracts. The primary causes included an unchecked balance withdrawal from an intermediary contract that allowed donation-based inflation of a liquidity addition targeted by a sandwich attack, a post-swap deflationary clawback that returned sold tokens to the caller while draining pool reserves to create a repeatable price-manipulation primitive, and a token transfer override that burned tokens directly from a Uniswap V2 pair's balance and force-synced reserves within the same transaction to artificially inflate the token price.

Top 10 "Awesome" Security Incidents in 2025

Top 10 "Awesome" Security Incidents in 2025

To help the community learn from what happened, BlockSec selected ten incidents that stood out most this year. These cases were chosen not only for the scale of loss, but also for the distinct techniques involved, the unexpected twists in execution, and the new or underexplored attack surfaces they revealed.

#10 Panoptic Incident: XOR Linearity Breaks the Position Fingerprint Scheme

#10 Panoptic Incident: XOR Linearity Breaks the Position Fingerprint Scheme

On August 29, 2025, Panoptic disclosed a Cantina bounty finding and confirmed that, with support from Cantina and Seal911, it executed a rescue operation on August 25 to secure roughly $400K in funds. The issue stemmed from a flaw in Panoptic’s position fingerprint calculation algorithm, which could have enabled incorrect position identification and downstream fund risk.