Back to Blog

供給プロトコル攻撃事件の深掘り分析と考察

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-4626Vaultを担保資産(collateral)として指定し、そのVaultに対応する資産を原資産として使用します。ユーザーはマーケットに担保(VaultまたはVaultの資産)を預け入れることでreUSDを借り入れます。

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

  • マーケット0x6e90

    • 原資産(underlying):crvUSD
    • 担保(collateral):cvcrvUSD(すなわち、Vault 0x0114
    • 借入(borrowed):reUSD
  • Vault0x0114

    • 資産(asset):crvUSD(実際にはCurve LlamaLend Controllerに格納されており、これもマーケットです)
    • 担保(collateral):wstUSR
    • 借入(borrowed):crvUSD
    • シェア(share):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、および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は収益アグリゲーターであり、CurveのLPトークンの収益(Convexによって増強されたもの)を最適化することでユーザーに高いリターンを提供します。YearnはConvexと協力してResupplyを開発し、収益戦略でCurveプールを広く利用しています。

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

4.2 論争と影響

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

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

この関係断絶の声明は、DeFiエコシステム内の複雑な協力関係が危機時にはいかに脆いかを示しています。

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


5. さらなる考察

5.1 タイムライン

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

    • マーケットはcrvUSDを貸付資産、wstUSRを担保トークンとして使用しました。
    • ERC-4626Vaultコントラクトは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の担保付き債務ポジション(すなわち、cvcrvUSD、crvUSDを原資産とする)を担保として使用しました。
  • 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の保護を信頼することを選択しています。過去6ヶ月間で20件以上の実際のハッキング攻撃を阻止し、2,000万ドル以上の資産損失を回避しました。過去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
The Decentralization Dilemma: Cascading Risk and Emergency Power in the KelpDAO Crisis
Security Insights

The Decentralization Dilemma: Cascading Risk and Emergency Power in the KelpDAO Crisis

This BlockSec deep-dive analyzes the KelpDAO $290M rsETH cross-chain bridge exploit (April 18, 2026), attributed to the Lazarus Group, tracing a causal chain across three layers: how a single-point DVN dependency enabled the attack, how DeFi composability cascaded the damage through Aave V3 lending markets to freeze WETH liquidity exceeding $6.7B across Ethereum, Arbitrum, Base, Mantle, and Linea, and how the crisis forced decentralized governance to exercise centralized emergency powers. The article examines three parameters that shaped the cascade's severity (LTV, pool depth, and cross-chain deployment count) and provides an exclusive technical breakdown of Arbitrum Security Council's forced state transition, an atomic contract upgrade that moved 30,766 ETH without the holder's signature.

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 13 – Apr 19, 2026

This BlockSec weekly security report covers four attack incidents detected between April 13 and April 19, 2026, across multiple chains such as Ethereum, Unichain, Arbitrum, and NEAR, with total estimated losses of approximately $310M. The highlighted incident is the $290M KelpDAO rsETH bridge exploit, where an attacker poisoned the RPC infrastructure of the sole LayerZero DVN to fabricate a cross-chain message, triggering a cascading WETH freeze across five chains and an Arbitrum Security Council forced state transition that raises questions about the actual trust boundaries of decentralized systems. Other incidents include a $242K MMR proof forgery on Hyperbridge, a $1.5M signed integer abuse on Dango, and an $18.4M circular swap path exploit on Rhea Finance's Burrowland protocol.

Weekly Web3 Security Incident Roundup | Apr 6 – Apr 12, 2026
Security Insights

Weekly Web3 Security Incident Roundup | Apr 6 – Apr 12, 2026

This BlockSec weekly security report covers four DeFi attack incidents detected between April 6 and April 12, 2026, across Linea, BNB Chain, Arbitrum, Optimism, Avalanche, and Base, with total estimated losses of approximately $928.6K. Notable incidents include a $517K approval-related exploit where a user mistakenly approved a permissionless SquidMulticall contract enabling arbitrary external calls, a $193K business logic flaw in the HB token's reward-settlement logic that allowed direct AMM reserve manipulation, a $165.6K exploit in Denaria's perpetual DEX caused by a rounding asymmetry compounded with an unsafe cast, and a $53K access control issue in XBITVault caused by an initialization-dependent check that failed open. The report provides detailed vulnerability analysis and attack transaction breakdowns for each incident.