2025年6月26日,部署在以太坊主网上的Resupply稳定币协议遭到攻击,导致约1000万美元资产损失。由于相关合约的价格预言机实现存在问题,对于新创建的低流动性市场,攻击者通过捐赠攻击(donation attack)操纵了借入资产(Resupply发行的reUSD)的相对价格(即借入资产与抵押资产之间的汇率),使其变为0。这使得攻击者能够绕过资产健康检查,并大量借入reUSD以获利。
在BlockSec率先在网络上公开预警并提供初步分析(Tweet1, Tweet2)后,Resupply随后也发布了官方公告,但并未详细阐述太多技术细节。本文将提供更深入的分析。另一方面,攻击发生后,项目方及其利益相关者之间也出现了激烈的社区争议。本文将深入探讨协议背后复杂的生态关系,供读者参考。
1. 背景
1.1 关于Resupply协议
Resupply是一个去中心化稳定币协议,属于Curve生态系统。Resupply发行的稳定币名为reUSD。这是一种由抵押债务头寸(CDPs)支持的去中心化稳定币,由在外部平台贷款市场赚取利息的其他稳定币(包括crvUSD和frxUSD)提供支持。用户可以提供crvUSD和frxUSD来借入reUSD,从而实现稳定币资产的再融资。

具体来说,用户可以在链上部署的Resupply市场执行与借贷相关的操作。市场的创建和行为通过DAO进行管理。每个市场指定一个ERC-4626 Vault作为抵押品资产(collateral),并使用该Vault对应的资产作为底层资产。用户将抵押品(Vault或Vault的资产)存入市场以借入reUSD。
以本次攻击涉及的市场 0x6e90 和Vault 0x0114 为例,相关资产(代币)如下:
-
市场
0x6e90- 底层资产(underlying):crvUSD
- 抵押品(collateral):cvcrvUSD(即Vault
0x0114) - 借款(borrowed):reUSD
-
Vault
0x0114- 资产(asset):crvUSD(实际上存储在Curve LlamaLend Controller中,这也是一个市场)
- 抵押品(collateral):wstUSR
- 借款(borrowed):crvUSD
- 份额(share):cvcrvUSD(Vault发行的ERC-4626代币)
换句话说,用户可以在该市场质押一定数量的cvcrvUSD(或crvUSD,这在实践中会通过Vault转换为cvcrvUSD)来借入reUSD。

1.2 系统如何确定用户是否有资格借入资产?
与一般的借贷协议类似,Resupply市场也会对用户的头寸进行资产健康检查(通过修饰符isSolvent)。

isSolvent最终调用_isSolvent函数,该函数检查LTV(贷款价值比),要求借入资产与抵押资产的比率不得超过系统设定的最大值(_ltv <= maxLTV)。
可以看到,LTV的计算依赖于汇率(_exchangeRate),即借入资产相对于抵押资产的价格(兑换比率)。
2. 攻击分析
2.1 根本原因分析
从合约代码的角度来看,攻击的关键原因在于Resupply市场的价格预言机实现存在问题。对于新创建的低流动性市场,攻击者可以通过捐赠攻击操纵汇率,从而绕过健康检查并大量借入reUSD获利。
如何计算汇率?

公式如下:

显然,如果getPrices返回的价格大于1e36,则整数除法的向下取整将导致_exchangeRate = 0。
如何操纵价格?

根据代码,价格计算如下:


由于代码中设置了precision = 1、DEAD_SHARES = 1000和shares = 1e18。

最后,代入变量后,价格计算公式如下:

可以看出,要放大price的值,关键在于拉大total_assets和totalSupply之间的差距,使得total_assets极其庞大,而totalSupply保持非常小。在Resupply协议的实际实现中,公式中的total_assets依赖于底层资产(crvUSD),而totalSupply则依赖于市场整体流动性对应的份额(cvcrvUSD)。这正是经典的捐赠攻击场景。
2.2 攻击交易分析
根据攻击交易[4],可以分析出攻击者执行的核心步骤如下:
-
通过闪电贷借入4000 USDC,并兑换为3999 crvUSD。
-
向Controller
0x8970捐赠了2000 crvUSD。捐赠前,Controller0x8970持有0 crvUSD。捐赠后,记录的crvUSD金额变为2000000000000000000000(含18位小数)。 -
将约2 crvUSD存入Vault
0x0114,获得1个份额(cvcrvUSD)。此时,记录的crvUSD金额变为2002000000000000000001(含18位小数)。 -
向市场
0x6e90添加了1个单位(即Vault0x0114的1个份额)的抵押品。 -
从市场
0x6e90借入了10,000,000 reUSD。此时,_exchangeRate = 0,导致_ltv = 0,因此_isSolvent检查通过。

为什么_exchangeRate等于0?因为通过之前的步骤,攻击者操纵合约达到了以下状态:

回顾汇率的计算方法:

由于price > 1e36,所以_exchangeRate = 0。
- 将借入的reUSD兑换为利润。
3. 吸取的教训
被攻击的Resupply市场使用了与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 时间线
-
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的抵押债务头寸(即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安全防护的最新突破。通过在内存池阶段监控交易,Phalcon能够在攻击交易进入内存池的瞬间识别异常模式。
该系统由智能分析引擎驱动,集成了200多种典型攻击签名。在过去六个月中,它保持了低于0.0001%的极低误报率,实现了真正精确的威胁检测。
该系统利用专有的Gas竞价策略,确保防御交易能够超越攻击交易,同时自动触发协议的紧急暂停功能。
整个响应过程支持多种权限控制模式——包括EOA和多签钱包——为不同类型的协议提供灵活的安全解决方案。
如果Resupply在部署市场时集成了Phalcon系统,攻击本可以完全避免
在市场0x6e90部署后的1.5小时内,Phalcon系统将自动检测到新部署的市场,智能分析其配置参数,并识别出捐赠攻击的潜在风险。
系统将立即向项目团队发出风险警报,建议增加初始流动性保护或调整相关参数。
即使攻击已经发生,部署Phalcon仍将为Resupply和整个Curve生态系统带来巨大价值
一个透明的实时监控系统向用户和社区展示了项目团队对安全的坚定承诺,而24/7的持续保护机制确保类似事件不再发生。公开的安全监控数据提高了项目的透明度,并成为重建社区信心的一项关键手段。对于受影响的项目,主动采用顶级安全解决方案证明了其对用户资金安全的责任感,并且与BlockSec这样的行业领导者合作,也为项目的安全声誉提供了强有力的背书。
目前,已有超过500亿美元的资产选择信赖Phalcon的保护。我们已成功阻止了20多次真实世界的黑客攻击,挽救了超过2000万美元的资产损失。在过去六个月中,该系统保持了完美的检测准确率,并实现了毫秒级的响应速度,始终领先于攻击者。Phalcon目前支持包括以太坊、BSC和Arbitrum在内的20多个主要区块链网络,为DeFi生态系统提供全面的跨链安全保护。
Resupply损失的1000万美元以及无数其他攻击事件告诉我们,在DeFi世界中,安全不是一种选择——它是生存的必需品。
不要等到下一次攻击发生时才后悔。立即为您的协议部署最强大的安全保护。
BlockSec的专家团队已准备好为您的项目进行全面的安全评估。
🔗 Phalcon Security APP:
https://blocksec.com/phalcon/security
🔗 预约演示:
https://blocksec.com/book-demo



