2026年3月22日、Resolvプロトコルは秘密鍵の漏洩に遭い、攻撃者は何の担保もないまま8千万枚のUSRを鋳造し、USRの価格は$1から$0.025へと暴落しました。**この災害の余波はUSRの保有者だけにとどまらず、より賢明な一部の人々がMorpho上で精密な金庫NAV操作攻撃を仕掛けました。**この記事では、この攻撃の根底にある仕組みを段階的に解説します。一、Morphoの二層構造を理解しよう----------------攻撃を語る前に、まずMorphoの設計構造を理解しなければなりません。さもないと後の内容が全く理解できなくなります。**Morphoの世界は二層に分かれています:****底層:**Morpho Blue(別名:Morpho Core)。これは非常にシンプルでアップグレード不可の借入プロトコルです。設計哲学は「無許可」—誰でも借入市場を作成でき、誰でも資金を預けて借り、清算できる仕組みです。各市場は以下の五つのパラメータで唯一識別されます:**貸出資産、担保資産、清算ライン(LLTV)、オラクルアドレス、金利モデル。****市場間は完全に隔離されており、一つの市場の問題が他に波及しません。****上層:**MetaMorpho Vault(金庫)。これはERC-4626規格の金庫で、いわば「ファンド商品」に相当します。ユーザーはUSDCを金庫に預け、金庫管理者(Curator)がこれらの資金を異なるMorpho Blue市場に振り分けて貸出し、利息を得ます。**ユーザーは金庫のシェア(shares)を保有し、その価値は利息の累積とともに増加します。******基本式——一株純資産価値(NAV / 1株あたり価格):**一株純資産価値 = totalAssets / totalSupply**totalAssetsは、金庫が全市場で保有する総資産(既に貸し出された部分も含む、これらは「未収金」)の合計です。totalSupplyは金庫が発行した総シェア数です。利息が累積すると、totalAssetsは増加しますが、totalSupplyは変わらないため、一株あたりの純資産価値は上昇します—これが利益を得る仕組みです。二、supply(onBehalf) —— 誰でも金庫の資金を預けられる--------------------------------**これが攻撃の最初の重要ポイントです。**Morpho Blueでは、supply()関数にonBehalfパラメータがあります。この設計は第三者による代理預け入れを容易にするためです—例えば自動化戦略コントラクトがユーザーに代わって資金を預けることが可能です。しかし、これは完全に無許可です:**誰でも任意のアドレスをonBehalfに指定でき、その中には金庫のアドレスも含まれます。**Morpho公式ドキュメントには明記されています:「Warning: Anyone can supply on behalf of the vault so the call to updateWithdrawQueue that expects a market to be empty can be griefed by a front-run.」あなたが金庫に10,000 USDCを供給(supply)すると、その市場における供給ポジションは10,000増え、totalAssetsも同じく増えます。しかし、金庫の総シェア(totalSupply)は変わりません—これは、金庫のdeposit()関数を通じて新たに資金を預け入れたわけではないからです。**結果:一株あたりの純資産価値(NAV)が上昇します。**通常、これは金庫に「寄付」しているのと同じで、全ての株主の利益を増やすために自腹を切る行為です—普通の人はやりませんが、特定の条件下ではこれを悪用できます。三、Supply Cap = 0は安全ではない---------------------USRの価格が外部市場から切り離された後、一部の金庫管理者は緊急にUSR/USDC市場のSupply Capを0に設定しました。これにより、その市場に資金を投入できなくなったわけです。問題は解決したと思いますか?実は問題はそこにありません:**Supply Capは金庫レベルの制限であり、Morpho Blueのレベルの制限ではないのです。******金庫管理者が制御できるのは、金庫内部の_supplyMorpho()関数だけです。しかし、supply(onBehalf=vault)は直接Morpho Blue Coreコントラクトとやり取りしており、金庫レベルのロジック(供給キュー、供給キャップ、アロケータの権限チェック)を完全に迂回しています。例えるなら、**金庫管理者が前扉(Cap=0)を閉めても、攻撃者はMorpho Coreの裏口から資金を直接投入できるのです。**四、固定されたオラクル—隠れた不良債権----------------これも重要なポイントです。USR/USDC市場のオラクルは固定1:1に設定されています。つまり、USRの価格が外部市場でどれだけ下落しても、Morphoの世界では1 USRは常に1 USDCです。なぜ金庫管理者は固定オラクルを使ったのか?それはUSRが「ステーブルコイン」だからです。通常、価格変動は小さく抑えられています。固定オラクルは短期的な流動性不足による「誤った清算」を防ぐためです。しかし、USRが実際に価格切り離しを起こした場合、固定オラクルは大惨事をもたらします—借り手は価値のないUSRを担保にして大量のUSDCを借り出し、プロトコルはそれに気づきません。Morphoの不良債権処理メカニズムはここで完全に機能しなくなります—V1.0のリアルタイム反映やV1.1の均等分配メカニズムは、前提としてプロトコルが不良債権を識別できることに依存しています。**オラクルが固定されていると、何も識別できなくなるのです。**五、攻撃の全流れ—五段階の閉ループ-------------すべての条件が揃いました。以下は一つの取引内で完結する原子操作です。六、なぜフラッシュローンが必要なのか?-------------これが最も見落とされがちなポイントです。攻撃の利益は、「totalAssetsを虚偽に増やし、その後シェア比率で増加分を分配する」ことにあります。もし攻撃者がフラッシュローンを使わなければ、彼は0%のシェアしか持っていません—totalAssetsを増やしても、その増加分は他の株主に帰属し、彼は一銭も得られません。七、誰が損をしたのか?-------攻撃者が多く奪った12,300 USDCは、空から出てきたわけではありません。この資金は、金庫の他の健全な市場からの実流動性から引き出されたものです。金庫が資金を引き出す際は、withdrawキューの順に各市場からUSDCを取り出します。USR市場のUSDCはすでに借り尽くされており、資金を引き出せません。したがって、資金は他の市場—例えばwETH/USDCやcbBTC/USDCなどの正常に運用されている市場から引き出されるのです。八、三層の脆弱性の重なり-----------今回の攻撃は単一の脆弱性ではなく、三つの設計問題の重なり合いによるものです。結語Morphoの極めてシンプルな設計哲学—無許可、アップグレード不可、最小限のガバナンス—は、多くの場合で有利に働きます。しかし、今回の事件は、シンプルさの代償として、上層の参加者により大きな責任を負わせることになったことを示しています。プロトコルはオラクルの検証を行わず、管理者も自己責任で行う必要があります。供給(onBehalf)の制限も設けていないため、金庫層での追加防御策が必要です。預金者にとっては、「正しいCuratorを選ぶ」ことが「Morphoを選ぶ」ことよりも重要です。プロトコルはツールであり、その安全性は使い手次第です。
深層分析:USRのアンカー解除後のMorpho金庫のライトニングローンNAV操作による操縦攻撃
2026年3月22日、Resolvプロトコルは秘密鍵の漏洩に遭い、攻撃者は何の担保もないまま8千万枚のUSRを鋳造し、USRの価格は$1から$0.025へと暴落しました。
この災害の余波はUSRの保有者だけにとどまらず、より賢明な一部の人々がMorpho上で精密な金庫NAV操作攻撃を仕掛けました。
この記事では、この攻撃の根底にある仕組みを段階的に解説します。
一、Morphoの二層構造を理解しよう
攻撃を語る前に、まずMorphoの設計構造を理解しなければなりません。さもないと後の内容が全く理解できなくなります。
Morphoの世界は二層に分かれています:
底層:
Morpho Blue(別名:Morpho Core)。これは非常にシンプルでアップグレード不可の借入プロトコルです。設計哲学は「無許可」—誰でも借入市場を作成でき、誰でも資金を預けて借り、清算できる仕組みです。
各市場は以下の五つのパラメータで唯一識別されます:貸出資産、担保資産、清算ライン(LLTV)、オラクルアドレス、金利モデル。
市場間は完全に隔離されており、一つの市場の問題が他に波及しません。
上層:
MetaMorpho Vault(金庫)。これはERC-4626規格の金庫で、いわば「ファンド商品」に相当します。
ユーザーはUSDCを金庫に預け、金庫管理者(Curator)がこれらの資金を異なるMorpho Blue市場に振り分けて貸出し、利息を得ます。
ユーザーは金庫のシェア(shares)を保有し、その価値は利息の累積とともに増加します。
基本式——一株純資産価値(NAV / 1株あたり価格):一株純資産価値 = totalAssets / totalSupply
totalAssetsは、金庫が全市場で保有する総資産(既に貸し出された部分も含む、これらは「未収金」)の合計です。totalSupplyは金庫が発行した総シェア数です。利息が累積すると、totalAssetsは増加しますが、totalSupplyは変わらないため、一株あたりの純資産価値は上昇します—これが利益を得る仕組みです。
二、supply(onBehalf) —— 誰でも金庫の資金を預けられる
これが攻撃の最初の重要ポイントです。
Morpho Blueでは、supply()関数にonBehalfパラメータがあります。この設計は第三者による代理預け入れを容易にするためです—例えば自動化戦略コントラクトがユーザーに代わって資金を預けることが可能です。
しかし、これは完全に無許可です:誰でも任意のアドレスをonBehalfに指定でき、その中には金庫のアドレスも含まれます。
Morpho公式ドキュメントには明記されています:「Warning: Anyone can supply on behalf of the vault so the call to updateWithdrawQueue that expects a market to be empty can be griefed by a front-run.」
あなたが金庫に10,000 USDCを供給(supply)すると、その市場における供給ポジションは10,000増え、totalAssetsも同じく増えます。しかし、金庫の総シェア(totalSupply)は変わりません—これは、金庫のdeposit()関数を通じて新たに資金を預け入れたわけではないからです。
結果:一株あたりの純資産価値(NAV)が上昇します。
通常、これは金庫に「寄付」しているのと同じで、全ての株主の利益を増やすために自腹を切る行為です—普通の人はやりませんが、特定の条件下ではこれを悪用できます。
三、Supply Cap = 0は安全ではない
USRの価格が外部市場から切り離された後、一部の金庫管理者は緊急にUSR/USDC市場のSupply Capを0に設定しました。これにより、その市場に資金を投入できなくなったわけです。問題は解決したと思いますか?
実は問題はそこにありません:Supply Capは金庫レベルの制限であり、Morpho Blueのレベルの制限ではないのです。
金庫管理者が制御できるのは、金庫内部の_supplyMorpho()関数だけです。
しかし、supply(onBehalf=vault)は直接Morpho Blue Coreコントラクトとやり取りしており、金庫レベルのロジック(供給キュー、供給キャップ、アロケータの権限チェック)を完全に迂回しています。
例えるなら、金庫管理者が前扉(Cap=0)を閉めても、攻撃者はMorpho Coreの裏口から資金を直接投入できるのです。
四、固定されたオラクル—隠れた不良債権
これも重要なポイントです。
USR/USDC市場のオラクルは固定1:1に設定されています。つまり、USRの価格が外部市場でどれだけ下落しても、Morphoの世界では1 USRは常に1 USDCです。
なぜ金庫管理者は固定オラクルを使ったのか?それはUSRが「ステーブルコイン」だからです。通常、価格変動は小さく抑えられています。固定オラクルは短期的な流動性不足による「誤った清算」を防ぐためです。
しかし、USRが実際に価格切り離しを起こした場合、固定オラクルは大惨事をもたらします—借り手は価値のないUSRを担保にして大量のUSDCを借り出し、プロトコルはそれに気づきません。
Morphoの不良債権処理メカニズムはここで完全に機能しなくなります—V1.0のリアルタイム反映やV1.1の均等分配メカニズムは、前提としてプロトコルが不良債権を識別できることに依存しています。
オラクルが固定されていると、何も識別できなくなるのです。
五、攻撃の全流れ—五段階の閉ループ
すべての条件が揃いました。以下は一つの取引内で完結する原子操作です。
六、なぜフラッシュローンが必要なのか?
これが最も見落とされがちなポイントです。攻撃の利益は、「totalAssetsを虚偽に増やし、その後シェア比率で増加分を分配する」ことにあります。もし攻撃者がフラッシュローンを使わなければ、彼は0%のシェアしか持っていません—totalAssetsを増やしても、その増加分は他の株主に帰属し、彼は一銭も得られません。
七、誰が損をしたのか?
攻撃者が多く奪った12,300 USDCは、空から出てきたわけではありません。この資金は、金庫の他の健全な市場からの実流動性から引き出されたものです。
金庫が資金を引き出す際は、withdrawキューの順に各市場からUSDCを取り出します。USR市場のUSDCはすでに借り尽くされており、資金を引き出せません。したがって、資金は他の市場—例えばwETH/USDCやcbBTC/USDCなどの正常に運用されている市場から引き出されるのです。
八、三層の脆弱性の重なり
今回の攻撃は単一の脆弱性ではなく、三つの設計問題の重なり合いによるものです。
結語
Morphoの極めてシンプルな設計哲学—無許可、アップグレード不可、最小限のガバナンス—は、多くの場合で有利に働きます。しかし、今回の事件は、シンプルさの代償として、上層の参加者により大きな責任を負わせることになったことを示しています。
プロトコルはオラクルの検証を行わず、管理者も自己責任で行う必要があります。供給(onBehalf)の制限も設けていないため、金庫層での追加防御策が必要です。
預金者にとっては、「正しいCuratorを選ぶ」ことが「Morphoを選ぶ」ことよりも重要です。プロトコルはツールであり、その安全性は使い手次第です。