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
安全な保管を超えて、第2部:ウォレットの暗号技術を安全に実装する
Security Insights

安全な保管を超えて、第2部:ウォレットの暗号技術を安全に実装する

攻撃者は、保護された秘密鍵のコピーを読み取らずに、その秘密鍵を復元できるのでしょうか。『Beyond Secure Storage』の第2部では、乱数の品質不足、エントロピーの損失、署名用ノンスの不備によって鍵の予測や復元が可能になった6件の事例を検証します。そこから鍵生成と署名に関する実装要件を導き出し、決済機関がコードレビューと導入済みシステムのテストを通じて、それらをどう評価できるかを説明します。

安全な保管を超えて、第1部:安全な決済・署名ワークフローの設計
Security Insights

安全な保管を超えて、第1部:安全な決済・署名ワークフローの設計

攻撃者が秘密鍵を盗まずに、認可されていない操作が有効な署名を得ることは、なぜ可能なのでしょうか。「安全な保管の先へ」第1回では、Bitget、Bybit、Binanceなどの事例を通じて、支払い要求、トランザクションの構築、署名、実行、決済の各段階における認可の不備を検討します。そのうえで、認可されていない操作を防ぎ、損失を抑えるための設計原則を導き出し、レビュー、監査、ペネトレーションテスト、演習によって、それらの防御策をどう検証できるかを説明します。

NEAR Intentsの悪用:返金処理の欠陥とセキュリティ上の教訓
Security Insights

NEAR Intentsの悪用:返金処理の欠陥とセキュリティ上の教訓

NEAR Intentsへの攻撃では、過大な払い戻しイベントを利用し、預け入れた資産が返還された後も内部残高を維持しました。本分析では、レシートの処理の流れと、合計3,865,021 USDTに上るBNB Chainでの7件の出金を再構成します。また、これらの資金流出とプロジェクトが報告した全額回収を区別し、NEARスマートコントラクトの開発と監査におけるセキュリティ上の考慮事項を示します。

Best Security Auditor for Web3

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

BlockSec Audit