Back to Blog

補給プロトコル攻撃事件に関する詳細分析と考察

Phalcon
July 6, 2025
11 min read

2025年6月26日、EthereumメインネットにデプロイされたResupplyステーブルコインプロトコルが攻撃を受け、約1000万ドルの資産が失われました。関連コントラクトの価格オラクルの実装に問題があったため、新規に作成された流動性の低いマーケットにおいて、攻撃者は寄付攻撃(donation attack)により借入資産(Resupply発行のreUSD)の相対価格(つまり、借入資産と担保資産の交換レート)を操作して0にすることができました。これにより、攻撃者は資産健全性チェックを回避し、利益を得るために大量のreUSDを借り入れることが可能になりました。

BlockSecがネットワーク上で最初に早期警告を発し、予備分析を提供した後(Tweet1Tweet2)、Resupplyもその後、公式発表を行いましたが、多くの技術的な詳細は説明されませんでした。本稿では、より詳細な分析を提供します。一方、攻撃後、プロジェクト側とそのステークホルダーの間で激しいコミュニティ論争も発生しました。本稿では、プロトコル背後にある複雑なエコシステムの関係性を掘り下げて議論し、読者の参考とします。


1. 背景

1.1 Resupplyプロトコルについて

Resupplyは、Curveエコシステムに属する分散型ステーブルコインプロトコルです。Resupplyが発行するステーブルコインはreUSDと呼ばれます。これは、分散型ステーブルコインであり、外部プラットフォームのレンディング市場で利息を得るcrvUSDやfrxUSDなどの他のステーブルコインに裏付けられた担保付債務ポジション(CDP)です。ユーザーはcrvUSDとfrxUSDを提供してreUSDを借り入れ、ステーブルコイン資産の再融資を実現できます。

具体的には、ユーザーはオンチェーンにデプロイされたResupplyマーケットでレンディング関連の操作を実行できます。マーケットの作成と動作はDAOによって管理されます。各マーケットは、ERC-4626 Vaultを担保資産(collateral)として指定し、そのVaultに対応する資産を基盤資産として使用します。ユーザーはマーケットに担保(VaultまたはVaultの資産)を預け入れることでreUSDを借り入れます。

今回の攻撃に関与したマーケット0x6e90とVault0x0114を例にとると、関連資産(トークン)は以下の通りです。

  • マーケット0x6e90

    • 基盤資産:crvUSD
    • 担保:cvcrvUSD(つまり、Vault0x0114
    • 借入資産:reUSD
  • Vault0x0114

    • 資産:crvUSD(実際にはCurve LlamaLend Controllerに格納されており、これもマーケットです)
    • 担保:wstUSR
    • 借入資産:crvUSD
    • シェア:cvcrvUSD(Vaultが発行するERC-4626トークン)

つまり、ユーザーはこのマーケットで一定量のcvcrvUSD(または、実際にはVaultを介してcvcrvUSDに変換されるcrvUSD)を担保として提供することで、reUSDを借り入れることができます。


1.2 システムはどのようにユーザーが資産を借り入れる資格があるかを判断するのか?

一般的なレンディングプロトコルと同様に、Resupplyマーケットもユーザーのポジションに対して資産健全性チェック(isSolventモディファイア経由)を実行します。

isSolventは最終的に_isSolvent関数を呼び出し、LTV(Loan-to-Value比率)をチェックし、借入資産と担保資産の比率がシステムで設定された最大値(_ltv <= maxLTV)を超えてはならないことを要求します。

LTVの計算は、交換レート(_exchangeRate)、つまり借入資産と担保資産の価格(交換比率)に依存することがわかります。


2. 攻撃分析

2.1 原因分析

コントラクトコードの観点から、攻撃の主な原因は、Resupplyマーケットの価格オラクル実装に問題があったことです。新規に作成された流動性の低いマーケットでは、攻撃者は寄付攻撃によって交換レートを操作し、それによって健全性チェックを回避して大量のreUSDを利益のために借り入れることができました。

交換レートの計算方法

式は以下の通りです。

明らかに、getPrices1e36より大きい価格を返した場合、整数除算の下方丸めにより_exchangeRate = 0となります。

価格の操作方法

コードによると、価格は次のように計算できます。

コードはprecision = 1DEAD_SHARES = 1000shares = 1e18と設定しているため、

最終的に、変数を代入すると、価格計算式は以下のようになります。

priceの値を増幅させる鍵は、total_assetstotalSupplyの差を広げ、total_assetsを極めて大きくし、totalSupplyを非常に小さくすることであることがわかります。Resupplyプロトコルの実際の実装では、式中のtotal_assetsは基盤資産(crvUSD)に依存し、totalSupplyはマーケット全体の流動性に対応するシェア(cvcrvUSD)に依存します。これはまさに、典型的な寄付攻撃のシナリオです。

2.2 攻撃トランザクション分析

攻撃トランザクション[4]によると、攻撃者は以下の主要なステップを実行したと分析できます。

  1. フラッシュローンで4,000 USDCを借り入れ、3,999 crvUSDと交換しました。

  2. Controller 0x8970に2,000 crvUSDを寄付しました。寄付前、Controller 0x8970は0 crvUSDを保有していました。寄付後、記録されたcrvUSDの量は 2000000000000000000000(18桁)となりました。

  3. 約2 crvUSDをVault 0x0114に預け入れ、1シェア(cvcrvUSD)を受け取りました。この時点で、記録されたcrvUSDの量は 2002000000000000000001(18桁)となりました。

  4. マーケット0x6e90に1ユニット(つまり、Vault0x0114の1シェア)の担保を追加しました。

  5. マーケット0x6e90から10,000,000 reUSDを借りました。この時点で、_exchangeRate = 0となり、_ltv = 0になったため、_isSolventチェックは通過しました。

なぜ_exchangeRateが0になったのか?それは、前のステップを通じて、攻撃者がコントラクトを操作して以下の状態にしたためです。

交換レートの計算方法を思い出してください。

price > 1e36であるため、_exchangeRate = 0となります。

  1. 借り入れたreUSDを換金して利益を得ました。

3. 教訓

攻撃されたResupplyのマーケットは、Curveのテンプレートコントラクトに似た価格オラクルの実装を使用していました。

しかし、Curveの公式ドキュメントでは、この実装の適用範囲がすでに示されていました。残念ながら、Resupplyはデプロイ時にこの適用可能性の警告を考慮していなかったようです。

4. 関係性とコミュニティ論争

4.1 Curveエコシステムにおける5つの主要プロジェクトの複雑な関係ネットワーク

Resupplyインシデントのより深い影響を理解するためには、まずCurveエコシステム内の5つのコアプロトコルの複雑な関係に目を向ける必要があります。

Curve Financeはエコシステム全体の中心であり、流動性プール、crvUSD、およびResupply、Prisma、Convex、Yearnの運用を支えるLlamaLendプロトコルを提供しています。Convexはステーキングとガバナンスを通じてCurveの収益を最適化し、PrismaとResupplyに追加の報酬メカニズムを提供します。PrismaはCurveのLPトークンとConvexの収益向上機能に依存しており、ResupplyはCurveのLlamaLendに直接基づいてreUSDを発行し、ConvexとYearnによって共同開発されました。YearnはCurveのプール収益を最適化するだけでなく、Convexとの協力によりResupplyの開発を促進しました。

Curve Finance: コアプラットフォームとして、Curveの流動性プール(crvUSDプールなど)とLlamaLendプロトコルは、ResupplyがreUSDを発行するために直接使用され、PrismaがLPトークンをステーキングするために使用され、Yearnが収益を最適化するために使用され、Convexがガバナンス投票のために使用されます。

Convex: ConvexはCurveの収益向上プロトコルです。ユーザーはCurve LPトークンをステーキングすることで、より高いCRV報酬とConvexのCVXトークンを獲得できます。ConvexはCurveのガバナンス投票権の約50%を管理しており、PrismaとResupplyに収益ブースト機能を提供します。

Prisma: PrismaはCurveのLPトークンをステーキングし、ユーザーはConvexを介して強化された報酬(cvxPRISMA)を取得します。PrismaはCurveの流動性とConvexの収益メカニズムに依存しています。

Yearn: Yearnは、Convexによって強化されたCurveのLPトークンの収益を最適化することでユーザーに高利回りを提供するイールドアグリゲーターです。YearnはConvexと協力してResupplyを開発し、そのイールド戦略でCurveプールを幅広く使用しています。

Resupply: ConvexとYearnによって共同開発され、ユーザーはcrvUSDなどのステーブルコインを担保としてreUSDを借り入れることができ、自動的にConvexにトークンをステーキングしてCRVとCVX報酬を獲得し、イールド最適化ループを形成します。

4.2 論争と影響

しかし、Resupplyが攻撃された際、この複雑な関係網はすぐに論争の的となりました。Curveの創設者であるMichael Egorovは、Resupplyから迅速に距離を置き、次のように強調しました。

「Curveの誰もこのプロジェクトには関わっていません…Curveに一般化しないでください。」

この関係を断つ声明は、DeFiエコシステムにおける緊密な協力関係が危機時にはいかに脆くなりうるかを反映していました。

これらの相互に関連するプロジェクトは、高度に結合されたエコシステムを形成しています。このようなシステムでは、1つのリンクでの問題が連鎖反応を引き起こす可能性があります。したがって、Resupply攻撃インシデントがプロトコルの相互依存性とセキュリティに関する広範なコミュニティ議論を引き起こしたのも不思議ではありません。


5. さらなる考察

5.1 タイムライン

  • 2025年5月17日: Resupplyの公式アドレス0x1f84が、CurveのOneWay Lending Factoryを介して新しいLlamaLendマーケットをデプロイしました。

    • マーケットはcrvUSDを貸出資産、wstUSRを担保トークンとして使用しました。
    • ERC-4626 Vaultコントラクトは0x0114、対応するControllerは0x8970でした。
  • 2025年5月31日: Resupplyのガバナンスページに新しい提案「wstUSR-long LlamaLend Market」が公開されました。この提案は、ユーザーがLlamaLendマーケットを通じてreUSDをミントできるようにすることを目的としていました。

  • 2025年6月11日: 提案がオンチェーンで公開されました

  • 2025年6月26日、00:18:47 (UTC): 提案が可決され、Resupplyの公式アドレス0x0417が新しいResupplyPair(つまり、Resupply crvUSD/wstUSRマーケット)0x6e90をデプロイし、Vault0x0114とController0x8970をバインドしました。

    • Vault 0x0114とController 0x8970をバインドしました。
    • Vaultの担保付債務ポジション(つまり、crvUSDを基盤とするcvcrvUSD)を担保として使用しました。
  • 2025年6月26日、01:53:59 (UTC): マーケット0x6e90がデプロイされてから約1.5時間後、攻撃者はエクスプロイトを成功させました。同時に、BlockSecは攻撃を検知し、プロジェクトチームに連絡を試みました。

  • 2025年6月26日、02:26 (UTC): チームとの連絡に失敗し、さらなる損失がないことを確認した後、BlockSecは公開警告を発しました

  • 2025年6月26日、02:53:23 (UTC): プロジェクトチームはプロトコルを一時停止しました。

5.2 Phalconがあれば、悲劇は防げたかもしれない

BlockSec Phalcon Securityは、DeFiセキュリティ保護における最新のブレークスルーです。Mempool段階でトランザクションを監視することにより、Phalconは攻撃トランザクションがMempoolに入った瞬間に異常なパターンを識別できます。

インテリジェント分析エンジンを搭載したこのシステムは、200を超える典型的な攻撃シグネチャを統合しています。過去6ヶ月間、0.0001%未満という超低誤検率を維持し、真に正確な脅威検出を実現しています。

このシステムは、独自のガス入札戦略を活用して、防御トランザクションが攻撃トランザクションを追い抜くことを保証し、同時にプロトコルの緊急一時停止機能を自動的にトリガーします。

応答プロセス全体が、EOAやマルチシグウォレットを含む複数の権限制御モードをサポートしており、さまざまな種類のプロトコルに柔軟なセキュリティソリューションを提供します。

Resupplyがマーケットをデプロイする際にPhalconシステムを統合していれば、攻撃は完全に回避できたでしょう。

マーケット0x6e90がデプロイされてから1.5時間以内に、Phalconシステムは新しいマーケットのデプロイを自動的に検知し、その設定パラメータをインテリジェントに分析し、寄付攻撃の潜在的なリスクを特定したでしょう。

システムは直ちにリスクアラートをプロジェクトチームに送信し、初期流動性保護の追加や関連パラメータの調整を提案したでしょう。

攻撃が発生した後でも、Phalconをデプロイすることは、ResupplyとCurveエコシステム全体に多大な価値をもたらすでしょう。

透明性の高いリアルタイム監視システムは、プロジェクトチームのセキュリティへの揺るぎないコミットメントをユーザーとコミュニティに示し、24時間年中無休の継続的な保護メカニズムにより、同様のインシデントが二度と発生しないことを保証します。公開されたセキュリティ監視データは、プロジェクトの透明性を高め、コミュニティの信頼を再構築するための重要な手段となります。影響を受けたプロジェクトにとって、一流のセキュリティソリューションを積極的に採用することは、ユーザー資産の安全性に対する責任感を示すものであり、BlockSecのような業界リーダーとの提携は、セキュリティ分野におけるプロジェクトの評判を強く裏付けるものでもあります。

現在、500億ドル以上の資産がPhalconの保護を信頼することを選択しています。私たちは20件以上の実際のハッキング攻撃を阻止し、2000万ドル以上の資産損失を回避することに成功しました。過去6ヶ月間、システムは完璧な検出精度を維持し、ミリ秒レベルの応答速度を達成し、常に攻撃者の一歩先を行っています。Phalconは現在、Ethereum、BSC、Arbitrumなど20以上の主要なブロックチェーンネットワークをサポートし、DeFiエコシステムに包括的なクロスチェーンセキュリティ保護を提供しています。

Resupplyの1000万ドルの損失と数え切れないほどの他の攻撃インシデントは、DeFiの世界では、セキュリティはオプションではなく、生存に不可欠なものであることを私たちに示しています。

次の攻撃を後悔するのを待たないでください。今すぐあなたのプロトコルに最強のセキュリティ保護をデプロイしてください。

BlockSecの専門家チームは、あなたのプロジェクトの包括的なセキュリティ評価を実施する準備ができています。

🔗 Phalcon Security APP:

https://blocksec.com/phalcon/security

🔗 デモの予約:

https://blocksec.com/book-demo