返回部落格

Resupply協議攻擊事件的深度分析與思考

Phalcon Security
2025年7月6日
閱讀約 10 分鐘

On 2025年6月26日,部署在以太坊主網的Resupply 穩定幣協議遭到攻擊,導致約1,000萬美元的資產損失。由於相關合約的價格預言機實現存在問題,對於新創建的低流動性 Market,攻擊者能夠透過捐贈攻擊操縱借出資產(由 Resupply 發行的 reUSD)的相對價格(即借出資產與抵押資產之間的兌換比率),使其變為0。這使得攻擊者能夠繞過資產健康檢查,借出大量 reUSD 進行套利。

在 BlockSec 率先在全網公開發出預警並提供初步分析(推文1推文2)後,Resupply 隨後也發布了官方公告,但未詳細闡述許多技術細節。本文將提供更詳細的分析。另一方面,攻擊發生後,專案方與其利益相關者之間也出現了激烈的社群爭議。本文將深入探討並討論該協議背後複雜的生態關係,供讀者參考。


1. 背景

1.1 關於 Resupply 協議

Resupply 是一個去中心化的穩定幣協議,屬於 Curve 生態系統。Resupply 發行的穩定幣稱為 reUSD。這是一種由抵押債倉(CDP)支持的去中心化穩定幣,並由其他穩定幣支持——包括 crvUSD 和 frxUSD——這些穩定幣在外部平台的借貸市場中賺取利息。使用者可以提供 crvUSD 和 frxUSD 來借出 reUSD,實現穩定幣資產的再融資。

具體來說,使用者可以在鏈上部署的 Resupply Market 中執行借貸相關操作。Market 的創建與行為由 DAO 管理。每個 Market 都指定一個 ERC-4626 Vault 作為抵押資產(collateral),並使用該 Vault 對應的資產作為底層資產(underlying)。使用者在 Market 中存入抵押品(Vault 或 Vault 的資產)以借出 reUSD。

以本次攻擊涉及的 Market 0x6e90 和 Vault 0x0114 為例,相關資產(代幣)如下:

  • Market 0x6e90

    • underlying:crvUSD
    • collateral:cvcrvUSD(即 Vault 0x0114
    • borrowed:reUSD
  • Vault 0x0114

    • asset:crvUSD(實際存儲在 Curve LlamaLend Controller 中,該 Controller 也是一個 Market)
    • collateral:wstUSR
    • borrowed:crvUSD
    • share:cvcrvUSD(Vault 發行的 ERC-4626 代幣)

換句話說,使用者可以在此 Market 中質押一定數量的 cvcrvUSD(或 crvUSD,實際操作中會透過 Vault 轉換為 cvcrvUSD)以借出 reUSD。


1.2 系統如何判斷使用者是否有資格借出資產?

與一般借貸協議類似,Resupply Market 也會對使用者的倉位執行資產健康檢查(透過修飾符 isSolvent)。

isSolvent 最終呼叫 _isSolvent 函式,該函式檢查 LTV(貸款價值比),要求借出資產與抵押資產之間的比率不得超過系統設定的最大值(_ltv <= maxLTV)。

可以看出,LTV 的計算依賴於兌換率(_exchangeRate),即借出資產相對於抵押資產的價格(兌換比率)。


2. 攻擊分析

2.1 根本原因分析

從合約程式碼的角度來看,攻擊的關鍵原因是 Resupply Market 的價格預言機實現存在問題。對於新創建的低流動性 Market,攻擊者可以透過捐贈攻擊操縱兌換率,從而繞過健康檢查,借出大量 reUSD 進行套利。

如何計算兌換率?

計算公式如下:

顯然,如果 getPrices 返回的價格大於 1e36,整數除法的向下取整會導致 _exchangeRate = 0

如何操縱價格?

根據程式碼,價格可以按如下方式計算:

由於程式碼設定 precision = 1DEAD_SHARES = 1000shares = 1e18

最後,代入變數後,價格計算公式如下:

可以看出,要放大 price 的值,關鍵在於擴大 total_assetstotalSupply 之間的差距,使 total_assets 極大而 totalSupply 極小。在 Resupply 協議的實際實現中,公式中的 total_assets 取決於底層資產(crvUSD),而 totalSupply 取決於 Market 中整體流動性對應的份額(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. 向 Vault 0x0114 存入約2 crvUSD,並收到1個 share(cvcrvUSD)。此時,記錄的 crvUSD 金額為 2002000000000000000001(18位小數)。

  4. 向 Market 0x6e90 增加1個單位(即 Vault 0x0114 的1個 share)的抵押品。

  5. 從 Market 0x6e90 借出10,000,000 reUSD。此時,_exchangeRate = 0,導致 _ltv = 0,因此 _isSolvent 檢查通過。

為什麼 _exchangeRate 等於0?因為透過之前的步驟,攻擊者操縱合約達到了以下狀態:

回顧兌換率的計算方法:

由於 price > 1e36_exchangeRate = 0

  1. 將借出的 reUSD 兌換以獲利。

3. 經驗教訓

Resupply 中被攻擊的 Market 使用了與 Curve 範本合約類似的價格預言機實現。

然而,Curve 官方文件早已指出該實現的適用範圍——遺憾的是,Resupply 在部署時似乎並未考慮到這一適用性警告。

4. 關係與社群爭議

4.1 Curve 生態系統中五大專案的複雜關係網路

要理解 Resupply 事件的深層影響,我們首先需要了解 Curve 生態系統中五個核心協議之間的複雜關係。

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 攻擊事件引發了社群對協議相互依賴性與安全性的廣泛討論,也就不足為奇了。


5. 進一步的反思

5.1 時間線

5.2 如果有 Phalcon Security,悲劇本可以避免

BlockSec Phalcon Security 代表了 DeFi 安全防護領域的最新突破。透過在記憶體池(mempool)階段監控交易,Phalcon Security 能夠在攻擊交易進入記憶體池的瞬間識別出異常模式。

該系統由智慧分析引擎驅動,整合了超過200種典型攻擊特徵。在過去六個月中,該系統一直保持著低於0.0001%的超低誤報率,實現了真正精準的威脅檢測。

該系統利用專有的 gas 競價策略,確保防禦交易能夠搶先於攻擊交易,同時自動觸發協議的緊急暫停功能。

整個回應流程支援多種權限控制模式——包括 EOA 和多簽錢包——為不同類型的協議提供靈活的安全解決方案。

如果 Resupply 在部署 Market 時整合了 Phalcon Security 系統,這次攻擊本可以完全避免

在 Market 0x6e90 部署後的1.5小時內,Phalcon Security 系統本應自動偵測到新 Market 的部署,智慧分析其配置參數,並識別出捐贈攻擊的潛在風險。

系統本應立即向專案團隊發送風險警報,建議增加初始流動性保護或調整相關參數。

即使在攻擊發生之後,部署 Phalcon Security 仍能為 Resupply 及整個 Curve 生態系統帶來巨大的價值

一個透明的即時監控系統向使用者和社群展示了專案團隊對安全的堅定承諾,而全天候持續保護機制確保類似事件永不再發生。公開的安全監控數據增強了專案的透明度,並成為重建社群信心的關鍵手段。對於受影響的專案而言,主動採用頂級安全解決方案證明了其對使用者資金安全的責任感,而與 BlockSec 這樣的行業領導者合作,也為專案在安全領域的聲譽提供了有力的背書。

目前,已有超過500億美元的資產選擇信任 Phalcon Security 的保護。我們已成功阻止了超過20次真實世界的駭客攻擊,挽救了超過2,000萬美元的資產損失。在過去六個月中,該系統一直保持著完美的檢測準確率記錄,並實現了毫秒級的回應速度,始終領先攻擊者一步。Phalcon Security 目前支援超過20個主要區塊鏈網路,包括以太坊、BSC 和 Arbitrum,為 DeFi 生態系統提供全面的跨鏈安全防護。

Resupply 損失的1,000萬美元以及無數其他攻擊事件告訴我們,在 DeFi 世界中,安全並非選項——而是生存的必需品。

不要等到下一次攻擊發生才追悔莫及。現在就為您的協議部署最強的安全防護。

BlockSec 的專家團隊隨時準備為您的專案進行全面的安全評估。

🔗 Phalcon Security:

https://blocksec.com/phalcon/security

🔗 預約演示:

https://blocksec.com/expert-contact

用 Phalcon Security 獲得即時防護

光靠審計還不夠。Phalcon Security 即時發現攻擊,並在攻擊執行途中將其攔下。

Phalcon Security
Resupply協議攻擊事件的深度分析與思考