Back to Blog

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

Code Auditing
March 22, 2022
5 min read

1. 背景

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

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
The Decentralization Dilemma: Cascading Risk and Emergency Power in the KelpDAO Crisis
Security Insights

The Decentralization Dilemma: Cascading Risk and Emergency Power in the KelpDAO Crisis

This BlockSec deep-dive analyzes the KelpDAO $290M rsETH cross-chain bridge exploit (April 18, 2026), attributed to the Lazarus Group, tracing a causal chain across three layers: how a single-point DVN dependency enabled the attack, how DeFi composability cascaded the damage through Aave V3 lending markets to freeze WETH liquidity exceeding $6.7B across Ethereum, Arbitrum, Base, Mantle, and Linea, and how the crisis forced decentralized governance to exercise centralized emergency powers. The article examines three parameters that shaped the cascade's severity (LTV, pool depth, and cross-chain deployment count) and provides an exclusive technical breakdown of Arbitrum Security Council's forced state transition, an atomic contract upgrade that moved 30,766 ETH without the holder's signature.

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026

This BlockSec weekly security report covers four attack incidents detected between April 13 and April 19, 2026, across multiple chains such as Ethereum, Unichain, Arbitrum, and NEAR, with total estimated losses of approximately $310M. The highlighted incident is the $290M KelpDAO rsETH bridge exploit, where an attacker poisoned the RPC infrastructure of the sole LayerZero DVN to fabricate a cross-chain message, triggering a cascading WETH freeze across five chains and an Arbitrum Security Council forced state transition that raises questions about the actual trust boundaries of decentralized systems. Other incidents include a $242K MMR proof forgery on Hyperbridge, a $1.5M signed integer abuse on Dango, and an $18.4M circular swap path exploit on Rhea Finance's Burrowland protocol.

Weekly Web3 Security Incident Roundup | Apr 6 – Apr 12, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 6 – Apr 12, 2026

This BlockSec weekly security report covers four DeFi attack incidents detected between April 6 and April 12, 2026, across Linea, BNB Chain, Arbitrum, Optimism, Avalanche, and Base, with total estimated losses of approximately $928.6K. Notable incidents include a $517K approval-related exploit where a user mistakenly approved a permissionless SquidMulticall contract enabling arbitrary external calls, a $193K business logic flaw in the HB token's reward-settlement logic that allowed direct AMM reserve manipulation, a $165.6K exploit in Denaria's perpetual DEX caused by a rounding asymmetry compounded with an unsafe cast, and a $53K access control issue in XBITVault caused by an initialization-dependent check that failed open. The report provides detailed vulnerability analysis and attack transaction breakdowns for each incident.

Best Security Auditor for Web3

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

BlockSec Audit