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 Market中执行与借贷相关的操作。Markets的创建和行为由DAO管理。每个Market指定一个ERC-4626 Vault作为抵押资产(collateral),并使用该Vault对应的资产作为底层。用户将抵押品(Vault或Vault的资产)存入Market以借入reUSD。
以本次攻击中涉及的Market 0x6e90和Vault 0x0114为例,相关资产(tokens)如下:
-
Market
0x6e90- underlying: crvUSD
- collateral: cvcrvUSD (即Vault
0x0114) - borrowed: reUSD
-
Vault
0x0114- asset: crvUSD (实际上存储在Curve LlamaLend 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(Loan-to-Value ratio),要求借入资产与抵押资产的比例不得超过系统设定的最大值(_ltv <= maxLTV)。
可以看出,LTV的计算依赖于汇率(_exchangeRate),即借入资产相对于抵押资产的价格(兑换率)。
2. 攻击分析
2.1 根本原因分析
从合约代码的角度来看,攻击的关键原因是Resupply Market的价格预言机实现存在问题。对于新创建的低流动性Markets,攻击者可以通过捐赠攻击操纵汇率,从而绕过健康度检查并借入大量reUSD获利。
如何计算汇率?

公式如下:

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

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


由于代码设置了precision = 1,DEAD_SHARES = 1000,shares = 1e18。

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

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

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

回顾汇率的计算方法:

因为price > 1e36,所以_exchangeRate = 0。
- 将借入的reUSD兑换成利润。
3. 吸取的教训
被攻击的Resupply Market使用了类似于Curve的模板合约的价格预言机实现。

然而,Curve官方文档已经指出了该实现适用的范围——可惜的是,Resupply在部署时似乎没有考虑到这个适用性警告。
4. 关系与社区争议
4.1 Curve生态系统中五个主要项目的复杂关系网络
要理解Resupply事件的深层影响,我们首先必须审视Curve生态系统中五个核心协议之间复杂的相互关系。

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控制着近50%的Curve治理投票权,并为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 Market。- 该Market使用crvUSD作为借贷资产,wstUSR作为抵押代币。
- ERC-4626 Vault合约为
0x0114,对应的Controller为0x8970。
-
2025年5月31日: Resupply治理页面发布了新提案wstUSR-long LlamaLend Market。该提案旨在允许用户通过LlamaLend Market铸造reUSD。
-
2025年6月11日: 该提案在链上发布。
-
2025年6月26日, 00:18:47 (UTC): 提案通过,Resupply官方地址
0x0417部署了一个新的ResupplyPair(即Resupply crvUSD/wstUSR Market)0x6e90,绑定了Vault0x0114和Controller0x8970。- 绑定了Vault 0x0114和Controller 0x8970。
- 使用Vault的抵押债仓(即cvcrvUSD,以crvUSD为底层)作为抵押品。
-
2025年6月26日, 01:53:59 (UTC): 在Market
0x6e90部署约1.5小时后,攻击者成功执行了漏洞利用。同时,BlockSec探测到攻击并试图联系项目团队。 -
2025年6月26日, 02:26 (UTC): 在未能联系到团队并确认没有进一步损失后,BlockSec发布了公开警告。
-
2025年6月26日, 02:53:23 (UTC): 项目团队暂停了协议。
5.2 如果有Phalcon,悲剧本可避免

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



