Morpho Labsのセキュリティ問題の詳細:何が起こったのか?
2025年4月11日、DeFiコミュニティは、Morpho Labsに関連するセキュリティ問題によって騒然となりました。Morpho Labsは、高品質なコードと、34件の公開された監査を含む厳格なセキュリティ対策 (Morpho Docs) で知られるプロジェクトです。 Greysign (@greysign1) がX(旧Twitter)でこの事件に関する詳細な調査を共有し、Morphoの当初の主張と矛盾する重大な脆弱性を明らかにしました。何が起こったのか、なぜ重要なのか、そしてどのように身を守ることができるのかを詳しく見ていきましょう。
分散型金融(DeFi)プロトコルであるMorpho Labsは、2025年4月10日にフロントエンドのアップデートを公開し、Morpho Appでのトランザクションフローの改善を目指しました。しかし、4月11日の午前3時54分(中央ヨーロッパ時間)までに、一部のトランザクションが誤って作成されているという報告があり、Morphoチームは迅速に対応しました。彼らは午前4時44分(中央ヨーロッパ時間)までに問題を修正し、午前5時23分(中央ヨーロッパ時間)にXでアップデートを伝えました (Morpho Labs Update)。当初、Morphoはこの問題をフロントエンドに限定し、Morphoプロトコル内の資金は安全であるとユーザーに保証しました。しかし、Greysignの調査により、より深刻な問題が明らかになりました。問題はフロントエンドだけではなく、Bundler3のコントラクトレベルの脆弱性だったのです。
真犯人:Bundler3コントラクトの脆弱性
Greysignは当初、ハッカーがMorpho Appに悪意のあるコードを注入して、トランザクションがブロックチェーンに送信される前にPermit2署名を盗んでいるのではないかと考え、フロントエンドのエクスプロイトを疑っていました。Permit2は、ユーザーが安全にトークン転送を承認できる標準であり、DeFiでインタラクションを効率化するためによく使用されます。しかし、攻撃トランザクションを分析した結果、Greysignはこの問題がフロントエンドではなく、Bundler3コントラクト自体にあると結論付けました。
Morphoのドキュメント (Introducing Bundler3) で説明されているように、Bundler3は、単一のトランザクションで複数のコントラクト呼び出しを処理するように設計された、不変のオープンソースコントラクトです。これはマルチコールと呼ばれる機能です。これは、外部所有アカウント(EOA)(一般的なEthereumウォレットなど)が複数のアクションを同時に実行できないため、DeFiで役立ちます。Bundler3は、トークン転送の承認や取引の実行などの呼び出しを一度にまとめて処理することで、この問題を解決することを目的としていました。SpearbitとOpenZeppelinによって監査され、Certoraによって正式に検証され、ImmunefiとCantinaで150万ドルのバグ報奨金プログラムが設定されていました。では、何が問題だったのでしょうか?
脆弱性は、Bundler3のマルチコール機能の実装方法にあります。単に呼び出しをまとめる基本的なマルチコールとは異なり、Bundler3ではユーザーが任意の呼び出しを渡して、自身に代わって実行させることができました。しかし、適切な制限が欠けていたため、攻撃者は呼び出しを操作できました。エクスプロイトの仕組みは次のとおりです。
- ユーザーはBundler3とやり取りし、Permit2署を介してトークンを管理することを承認します。
- Permit2署名を含むユーザーのトランザクションは、Ethereumトランザクションの待機エリアであるmempoolに入ります。
- MEV(Maximum Extractable Value)ボットは、mempoolをスキャンして有利な機会を探し、トランザクションを見つけます。MEVボットは、フロントランニングやサンドイッチングなどの戦術を通じて、利益のためにトランザクションの順序を悪用する自動化されたシステムです (Blocknative on MEV)。
- ボットは、より高いガス料金で独自のトランザクションを送信することにより、ユーザーのトランザクションをフロントランニングし、同じPermit2署名を使用してBundler3のマルチコールを介して
TransferFrom
呼び出しを実行します。これにより、ユーザーのトークンが攻撃者のアドレスにリダイレクトされます。
Greysignは、攻撃トランザクションのスクリーンショットを共有し、悪意のあるTransferFrom
呼び出しを赤で強調表示しました。
根本的な問題は?Bundler3のマルチコールは、アトミックな実行を保証していませんでした。つまり、バッチ処理された呼び出しが単一の中断されないユニットとして実行されることが保証されていませんでした。攻撃者は呼び出しを改ざんし、制限の欠如を悪用してトークンを盗むことができました。
Morphoの対応と修正:Bundler2への後退
Morpho Labsは、問題を特定した後、Morpho Appのフロントエンドを迅速に一時停止し、その後、フロントエンドは安全であり、ユーザーからの追加のアクションは必要ないと主張しました。しかし、Greysignの調査結果は、Morphoがフロントエンドの問題として問題を矮小化していることを示唆しています。実際には、修正にはBundler3の完全な放棄が含まれていました。
Greysignは、Morphoがコントラクトの古いバージョンであるBundler2(アドレス:0x4095f064b8d3c3548a3bebfd0bbfd04750e30077)の使用に戻ったと指摘しました。Bundler3とは異なり、Bundler2にはより厳格な制御があり、関数をラップし、実行できる呼び出しの種類を制限します。これにより、攻撃者が任意の呼び出しを渡すことができなくなり、脆弱性が効果的に閉じられます。Greysignは、Bundler2を呼び出すように更新されたMorpho Appをテストすることで、これを確認しました。
興味深いことに、Bundler3は74日前にデプロイされましたが、約10時間しかアクティブにならず、ほとんどのトランザクションは事件の18時間前に発生しました。Greysignは、Morphoの2024年のレポートでBundler3のマルチコール実装を具体的に扱った監査レポートを見つけることができなかったため、MorphoがそもそもBundler3に切り替えた理由は不明なままです。
なぜ重要なのか:DeFiにおけるパターンの脆弱性
これは、Morphoのビジネスロジックに固有の一回限りのバグではありませんでした。同様のマルチコール実装を使用する他のDeFiプロトコルに影響を与える可能性のあるパターンの脆弱性です。Bundler3のマルチコールにおけるアトミックな実行の欠如により、攻撃者はEthereumのトランザクションライフサイクルにおける一般的な攻撃ベクターであるmempoolを悪用することができました。Greysignは、Bundler3を含む他のトランザクションも脆弱であり、トークンがまだ盗まれる可能性があることを確認するために攻撃をシミュレートしました。
この事件は、DeFiにおけるトークン承認のリスクを浮き彫りにしています。Bundler3のようなコントラクトにトークンを管理することを承認すると、その承認は取り消されるまで永続します。コントラクトに脆弱性がある場合、攻撃者はそれを悪用して、最初のインタラクションからかなり時間が経過した後でも資金を流出させることができます (Dexola on Token Approvals)。
安全を保つ方法:承認を取り消し、Bundler3を避ける
Greysignの最後の警告は重要です。Bundler3(アドレス:0x6566194141eefa99Af43Bb5Aa71460Ca2Dc90245)とやり取りし、Permit2承認に署名した場合、トークンは危険にさらされています。MEVボットは、mempoolでトランザクションをフロントランニングし、資金を盗む可能性があります。すべきことは次のとおりです。
- トークン承認の取り消し: Revoke.cashなどのサービスを使用して、Bundler3に付与した承認を確認して取り消します。これにより、攻撃者が既存の承認を使用してトークンを盗むことを防ぎます。
- Bundler3とのやり取りを避ける: Morphoが永続的な修正を確認するか、完全に非推奨にするまで、Bundler3コントラクトとやり取りしないでください。
- トランザクション履歴の確認: 特に2025年4月10〜11日頃にMorpho Appを使用した場合は、ウォレットのトランザクション履歴でBundler3とのやり取りがないか確認してください。
幸いなことに、脆弱性はBundler3とのやり取りにのみ影響し、コアプロトコルには影響しないため、すでにMorphoプロトコルに預けられている資金は安全です。
より大きな視点:DeFiにおける透明性と信頼
Greysignは、コードの品質とセキュリティへの注力で以前から賞賛していたMorpho Labsのチームに失望感を表明しました。透明性の欠如(コントラクトの脆弱性である問題をフロントエンドの問題として説明すること)は、信頼を損ないました。Morphoが翌週に詳細な投稿をリリースするという約束 (Morpho Labs Update) は、0xSimonのようなユーザーが遅延に疑問を呈し (0xSimon’s Reply)、懐疑的に受け止められました。
この事件は、DeFiにおける透明性の重要性を強調しています。セキュリティ上の問題が発生した場合、ユーザーの信頼を維持するには、明確で正直なコミュニケーションが不可欠です。また、コントラクトのアップグレード、特に安全な実装(Bundler2)を予期せぬリスクをもたらす新しい実装(Bundler3)に置き換える場合は、厳格なテストが必要であることも強調しています。
最後に
2025年4月のMorpho Labsのセキュリティ事件は、DeFiの複雑さとリスクを痛烈に思い出させるものです。Morphoは迅速に対応して問題を軽減しましたが、最初の誤解と脆弱性の性質は、コントラクトの設計とユーザーの安全に関する重要な疑問を投げかけています。Greysignの徹底的な調査のおかげで、コミュニティは今、何がうまくいかなかったのか、そしてどのように身を守るかをより明確に把握しています。
Morphoユーザーの方は、今すぐBundler3の承認を取り消し、警戒してください。DeFiスペース全体にとって、この事件はマルチコール実装におけるアトミックな実行を優先し、危機時には透明性のあるコミュニケーションを心がけるよう求めるものです。安全を確保し、やり取りするコントラクトを常に再確認してください!