RedSonic Vault 漏洞暴露了双资产定价缺陷
RedSonic Vault 因攻击者利用双重资产定价漏洞,损失了 9.25 ETH。该漏洞的核心在于一个无权限限制的 `registerErc20` 函数,允许攻击者添加第二个冲突的 stETH 份额类别。攻击者通过 Balancer 借入 1,139 WETH 进行闪电贷操作,无需投入任何自有启动资金。安全公司 ExVulSec 追踪并公布了完整的漏洞利用过程,包括 Curve 上的兑换及最终的贷款偿还步骤。
一名闪电贷攻击者在单笔交易中从以太坊的 RedSonic Vault 中抽走了 9.25 ETH。区块链安全公司 ExVulSec 识别出此次漏洞利用,并发布了详细的技术分析。攻击者操纵了一个无权限限制的资产注册功能,导致同一底层抵押品被重复计算。链上记录显示,整个操作在一个自包含的交易中完成。
攻击者从 Balancer 闪电借入了 1,139 WETH 以资助整个操作,无需任何前期自有资本。RedSonic 的金库通过名为 `getTotalAssetBalance` 的函数为其 rsvETH 份额定价。对于 Lido 头寸,该函数直接读取金库原始的 stETH 余额。这一设计选择成为了漏洞利用的基础:当余额意外变化时,与原始余额挂钩的份额价格可能会发生变动,而无需铸造或销毁相应的份额。
据 ExVulSec 称,金库的 `registerErc20` 函数没有任何访问限制。任何人都可以在金库内注册全新的资产类别。攻击者将 stETH 注册为第二种资产,创建了一个名为 rsvstETH 的类别。这两种份额类型随后都从完全相同的底层 stETH 余额中获取价值。
执行完成后,漏洞合约自我销毁。安全研究人员指出,自我销毁的合约通常会增加后续链上追踪工作的复杂性。闪电贷允许借款人在不抵押任何资产的情况下获取大额资金,前提是在同一笔交易内偿还贷款。攻击者通常使用此机制来资助那些原本需要大量资本的漏洞利用行为。