補給プロトコル攻撃事件の詳細分析と考察

本稿では、リサプライ・ステーブルコインのセキュリティインシデントについて、より詳細な分析を行います。

補給プロトコル攻撃事件の詳細分析と考察

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

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


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 (すなわち、Vault 0x0114)
    • 借入資産: reUSD
  • Vault 0x0114

    • 資産: 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単位(すなわちVault 0x0114の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、およびLlamaLendプロトコルを提供しており、これらはResupply、Prisma、Convex、Yearnの運用を支えています。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日: 新しい提案wstUSR-long LlamaLend MarketがResupplyのガバナンスページに公開されました。この提案は、ユーザーが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セキュリティ保護における最新のブレークスルーを表します。Phalconは、Mempool段階でトランザクションを監視することにより、攻撃トランザクションが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


Sign up for the latest updates