本文深入探讨了在DeFi协议中集成ERC-4626代币时存在的风险,特别是通过捐赠方式操纵汇率导致的通货膨胀攻击。文章分析了包括Venus协议事件在内的真实案例,阐述了这些风险。并通过介绍相关资产价格预言机(CAPO)和快速响应终止开关等防御措施,为协议提供安全集成策略,以降低操纵风险并提高DeFi生态系统的安全性和稳定性。
目录
随着 ERC-4626 标准的出现,自 2022 年年中以来,其日益增长的应用对 DeFi 协议中代币化 vault 的使用产生了积极影响。然而,其独特的特性和汇率功能为那些没有充分准备好处理能够有机增长的代币的协议带来了内在风险。
本文解释了将 ERC-4626 代币集成到各种协议中涉及的风险,并展示了它们内置的功能(本身不是漏洞)如果管理不当,仍然会导致关键漏洞。
在深入研究 ERC-4626 之前,必须了解生息 vault 的工作原理。
生息 vault 是智能合约,旨在优化和最大化已存入代币的回报。这些 vault 具有基础资产,例如 USDT,用户可以存入这些资产以开始赚取收益。
产生的收益来自跨各种 DeFi 协议执行的多种策略,包括借贷、流动性提供、质押和套利。
每个 vault 的盈利策略取决于其特定的智能合约实现。通常,生息 vault 会根据盈利能力对不同的协议进行排名,将部分池化资产分配给最赚钱的协议,同时保留提款准备金。
将资产存入 vault 的用户会收到份额(share)——代表他们按比例拥有 vault 的代币。这些份额稍后可以兑换为初始存款 + 任何已赚取的回报。
生息 vault 的简化表示如下所示:
ERC-4626 是 ERC-20 标准的扩展,引入该标准是为了标准化代币化 vault 的创建,例如,可以使用它来创建上面解释的生息 vault。但是,它的效用不仅限于生息 vault,它还支持其他代币结构,例如流动性质押代币 (LST) 或 rebasing 代币,以便于与其他 DeFi 协议集成。该标准建立了一个通用接口,促进了存款和取款的一致方法,并附带累积的利息或收益。
但是,必须强调的是,ERC-4626 vault 本身不执行收益策略。它们的功能仅侧重于管理存款和赎回,允许用户以相同数量的份额检索更多的代币,因为 vault 的基础资产余额会增加。
创建 ERC-4626 vault 时,开发人员必须定义一个基础资产代币地址(例如,USDT)。然后,用户将此资产存入 ERC-4626 vault 合约,并收到份额作为回报。收到的份额数量代表用户在 vault 中的比例权益。
随着 vault 积累更多资产(无论是来自 yield farming、投资还是捐赠),份额也会按比例升值。用户赎回他们的份额以接收他们的原始代币以及他们在 vault 积累的任何额外收益中所占的份额。
在 ERC-4626 中,用于存入资产 (deposit/mint) 和赎回资产 (withdraw/redeem) 的函数使用内部转换函数 (convertToShares 和 convertToAssets)。这些函数处理基础资产和份额之间的转换,确保准确的比例分配。
尽管乍一看可能很复杂,但资产和份额之间的兑换计算相对简单,类似于基本三的规则:
换句话说,用户从份额中获得的盈利能力与 vault 总资产的有机增长严格相关,而不是来自其他用户的后续存款。
注意:在转换计算中,_decimalsOffset() 函数用于确定虚拟份额费率,作为一种安全措施,以减轻 vault 通胀攻击的影响和盈利能力。有关此特定攻击类型的更多详细信息,请参阅我们的博客文章:针对 ERC-4626 通胀攻击的新型防御。
由于 ERC-4626 vault 的固有功能,集成这些代币的协议通常使用 vault 的内部汇率(每股资产)作为代币定价的参考。
例如,考虑一个集成代币化 vault(例如 wUSDM(ERC-4626 代币))的协议。为了以美元定价 wUSDM,该协议:
但是,依赖内部汇率会使协议面临一种特定形式的价格操纵,称为“直接捐赠攻击”。在这种情况下,恶意行为者通过直接捐赠资产来增加 vault 的 totalAssets。这与典型的存款从根本上不同,因为在此直接捐赠过程中不会创建新的份额。
因此,虽然常规存款会按比例增加 totalAssets 和 totalSupply(份额数量),从而保持份额的价值,但直接捐赠仅增加 totalAssets。这导致每个现有份额所代表的价值立即增加,从而给未为这种快速且不可预测的价格波动做好准备的协议带来重大风险。
在借贷协议的上下文中,当汇率直接从 vault 合约确定,并且 ERC-4626 代币用作基础资产(可用于借贷的资产)时,通过捐赠攻击进行的通胀会带来两个主要风险:
考虑一个使用 wUSDM 作为其基础资产的借贷协议,并观察以下场景:
接下来,利用 vault 相对较低的流动性:
由于流动性低,这种适度的捐赠会显着提高每股资产价值,从而将 wUSDM 的价格提高正好 50%。
结果是:
这清楚地说明了如果借贷协议未能充分处理 ERC-4626 代币通胀风险,它们会如何遭受不良债务的困扰。
先前描述的与操纵 ERC-4626 代币估值相关的问题在使用来自自动化做市商 (AMM) 的时间加权平均价格 (TWAP) 预言机的协议中尤为突出。通常,TWAP 预言机通过在较长时间内平均代币价格来帮助防止突然的价格操纵。
但是,ERC-4626 代币从根本上是不同的。当攻击者增加 ERC-4626 vault 的总资产数量时,这种增加是永久性的。这种永久性意味着通常会通过纠正标准 ERC-20 资产的代币价格来恢复平衡的套利者无法纠正 ERC-4626 代币价格通胀。相反,攻击者自己会立即捕获套利,从而将 AMM 价格锁定为与 vault 的通胀价格对齐。
这导致 TWAP 在其平均周期(通常为 30 分钟)内不可避免地逐渐增加。预计这种可预测的价格上涨的攻击者可以利用最初记录较低代币估值的依赖 AMM TWAP 预言机的协议。
由于这种价格通胀是有机且不可逆转地发生的,因此用户采取的额外铸造或赎回等常见的市场纠正措施不起作用。因此,停止攻击需要不切实际的措施,例如:
因此,将 ERC-4626 代币与 AMM TWAP 预言机集成的协议必须认识到这种任意操纵的独特风险。
从历史上看,已经发生过多次涉及 ERC-4626 代币价格操纵的关键漏洞利用,最著名的是 2021 年针对 CREAM Finance 的攻击。最近,在 2025 年 2 月,Venus 协议在 zkSync 网络上遭受了类似的攻击,导致攻击者获利约 86 WETH,同时给协议留下了大量不良债务。可以在此处找到攻击者的交易。
以下几个因素促成了此次漏洞利用:
为了清楚地说明此漏洞利用是如何展开的,我们将把它分解为四个关键阶段。
最初,攻击者通过 AAVE 的闪电贷借入了 2100 WETH,随后将这些代币存入 Venus 协议以增强借款能力。
攻击者利用两个单独的帐户(帐户 A 和帐户 B)执行了多次借入和重新存入 wUSDM 的循环:
通过重复进行这些借入和重新存入循环,帐户 A 达到了其最大借款限额(抵押系数),而帐户 B 则积累了相当大的供应记录。
在最终的杠杆循环中,帐户 B 铸造了 303,000 wUSDM,将 107,000 wUSDM 转回帐户 A,保留了 55,000 wUSDM。
然后,帐户 A 又借入了 303,000 wUSDM,总计 411,000 wUSDM,并将这些兑换为 439,000 USDM。
由于 vault 流动性低,这些 USDM 代币被直接捐赠给 vault,使 wUSDM 价格上涨了约 1.7 倍。
在通胀之后,帐户 A 的贷款严重低于抵押,允许帐户 B 发起清算:
在清算结束时,帐户 B 取回了约 1498 WETH,并且由于存款价值膨胀,仍然保持着额外的借款能力。这允许帐户 B 从协议中再借入 162 WETH。所有 WETH 随后都被转移回帐户 A。
最终,攻击者获得了约 2186 WETH(清算获得 1498 WETH,初始抵押品中未使用 526 WETH,清算后借出 162 WETH),导致 Venus 协议获利约 86 WETH,并造成大量不良债务。
为了有效缓解上述风险,与 ERC-4626 代币集成的协议必须实施强大的安全措施。这些措施可能包括采用相关资产价格预言机 (CAPO) 来防止快速和过度的价格上涨,以及快速反应熔断机制,以迅速解决严重的波动和操纵尝试。
CAPO 通过限制资产的汇率在指定的时间范围内可以增加的速度来帮助防止突然和激进的资产价格上涨。CAPO 设置了预定义的约束,包括:
CAPO 逻辑很简单:
此策略可确保通过捐赠或其他激进的通胀策略进行的价格操纵得到有效控制。
熔断机制功能类似于 AAVE 采用的机制,提供了一种快速反应的安全措施,以应对极端的市场波动或操纵。与可能缓慢且效率低下的手动或基于 governance 的紧急措施不同,当检测到严重异常时,熔断机制可以立即暂停市场活动,从而显着降低灾难性结果的风险。
可以通过以下方式实施此快速反应机制:
本文探讨了将 ERC-4626 代币集成到 DeFi 协议中相关的固有风险,强调了与通过基于捐赠的通胀进行汇率操纵相关的关键漏洞。分析了现实世界的案例,包括最近涉及 Venus 协议的事件,以清楚地说明这些风险。还讨论了战略防御措施,例如实施相关资产价格预言机 (CAPO) 和快速反应熔断机制。通过主动实施强大的保护措施,协议可以显着降低其面临的操纵风险,并为所有参与者创建一个更安全和更稳定的 DeFi 生态系统。
- 原文链接: blog.openzeppelin.com/er...
- 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!