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

具体来说,用户可以在链上部署的补给市场执行借贷相关操作。市场的创建和行为由 DAO 管理。每个市场指定一个 ERC-4626 Vault 作为抵押资产(抵押品),并使用该 Vault 对应的资产作为标的。用户将抵押品(Vault 或 Vault 的资产)存入 Market 以借入 reUSD。
以本次攻击涉及的 Market 0x6e90
和 Vault 0x0114
为例,相关资产(代币)如下:
-
市场
0x6e90
**- 基础货币:crvUSD
- 抵押物:cvcrvUSD(即 Vault `0x0114)
- 借入:reUSD
-
保险库
0x0114
***- 资产:crvUSD(实际上存储在 Curve LlamaLend 控制器中,它也是一个市场)
- 抵押品: wstUSR
- 借入:crvUSD
- 份额:cvcrvUSD(由 Vault 发行的 ERC-4626 代币)
换句话说,用户可以在该 Market 上抵押一定数量的 cvcrvUSD(或 crvUSD,实际上将通过 Vault 转换为 cvcrvUSD),以借入 reUSD。

1.2 系统如何确定用户是否有资格借用资产?
与一般借贷协议类似,补给品市场也会对用户的仓位进行资产健康检查(通过修改器 "isSolvent")。

isSolvent "最终会调用"_isSolvent "函数,该函数会检查 LTV(贷款价值比),要求借款资产与抵押资产之间的比率不得超过系统设定的最大值(_ltv <= maxLTV)。
可以看出,LTV 的计算依赖于汇率(_exchangeRate
),即借款资产相对于抵押资产的价格(兑换率)。
2.攻击分析
2.1 根源分析
从合同代码的角度来看,攻击的关键原因是补给市场的价格甲骨文执行出现了问题。对于新创建的低流动性市场,攻击者可以通过捐赠攻击操纵汇率,从而绕过健康检查,借用大量 reUSD 盈利。
**如何计算汇率?

计算公式如下

显然,如果 getPrices
返回的价格大于 1e36
,整数除法的向下舍入将导致 _exchangeRate = 0
。
**如何操纵价格?
根据代码,价格可按以下方式计算:


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

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

可以看出,要放大 "价格 "的值,关键在于拉大 "总资产 "和 "总供应量 "之间的差距,使 "总资产 "变得非常大,而 "总供应量 "仍然非常小。在 Resupply 协议的实际执行中,公式中的 "total_assets "取决于基础货币 (crvUSD),而 "totalSupply "则取决于与市场整体流动性相对应的份额 (cvcrvUSD)。这正是典型的捐赠攻击场景。
2.2 攻击交易分析
根据攻击交易[4],可以分析出攻击者执行了以下核心步骤:
1.通过闪贷借入 4,000 USDC 并兑换成 3,999 crvUSD。
2.向控制器 0x8970
捐赠 2,000 crvUSD。捐赠前,控制员 0x8970
持有 0 克鲁塞罗美元。捐赠后,记录的 crvUSD 数额变为 2000000000000000000000
(18 位小数)。
3.向保险库 0x0114
存入约 2 crvUSD 并收到 1 份(cvcrvUSD)。此时,crvUSD 的记录金额为 2002000000000000000001
(小数点后 18 位)。
4.向市场 0x6e90
添加 1 个单位(即 1 份 Vault 0x0114
)的抵押品。
5.从市场 0x6e90
借入 10,000,000 雷亚尔美元。此时,_exchangeRate = 0
,导致_ltv = 0
,因此_isSolvent
检查通过。

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

回顾一下汇率的计算方法:

由于 price > 1e36
,所以 _exchangeRate = 0
。
6.将借入的 reUSD 兑换为利润。
3.经验教训
再补给中的受攻击市场使用了价格甲骨文实施方法类似于 Curve 的模板合同。

然而,Curve 的官方文档已经指出了这种实现的适用范围--不幸的是,Resupply 在部署时似乎没有考虑到这种适用性警告。
4.关系和社区争议
4.1 曲线生态系统中五个主要项目的复杂关系网
要了解 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 没有任何一个人参与该项目......请不要以偏概全。

这种脱离关系的说法反映了 DeFi 生态系统中错综复杂的合作关系在危机时刻是多么脆弱。
这些相互关联的项目共同构成了一个高度耦合的生态系统--在这样一个系统中,任何一个环节出现问题都可能引发连锁反应。因此,Resupply 攻击事件引发了社区对协议相互依存性和安全性的广泛讨论也就不足为奇了。
5.进一步思考
5.1 时间表
-
2025年5月17日:**补给官方地址
0x1f84
通过Curve的单向借贷工厂部署了一个新的LlamaLend市场。- 该市场使用 crvUSD 作为借贷资产,使用 wstUSR 作为抵押代币。
- ERC-4626 Vault 合约为
0x0114
,相应的控制器为0x8970
。
-
2025年5月31日:** 在Resupply的治理页面上发布了一项新提案wstUSR-long LlamaLend Market。该提案旨在允许用户通过 LlamaLend 市场铸造 reUSD。
-
2025 年 6 月 11 日:** 该提案已在链上发布。
-
2025年6月26日 00:18:47(世界协调时):** 提案通过,Resupply 的官方地址
0x0417
部署了新的 ResupplyPair(即 Resupply crvUSD/wstUSR 市场)0x6e90
,绑定了 Vault0x0114
和 Controller0x8970
。- 绑定 Vault 0x0114 和控制器 0x8970。
- 使用 Vault 的抵押债务头寸(即 cvcrvUSD,以 crvUSD 为标的)作为抵押。
-
2025年6月26日01:53:59(世界协调时):** Market
0x6e90
部署约1.5小时后,攻击者成功执行了漏洞利用。与此同时,BlockSec 检测到该攻击,并尝试联系项目团队。 -
2025年6月26日02:26(世界协调时): 在未能联系到团队并确认没有进一步损失后,BlockSec发布了公开警告。
-
2025年6月26日02:53:23(世界协调时):** 项目组暂停协议。
5.2 如果有 Phalcon,悲剧本可避免

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