Term Labs在遭受850万美元治理攻击后恢复固定利率头寸
Term Labs 恢复所有受治理漏洞影响的固定利率贷款头寸,Meta Vaults 仍保持关闭状态
截至 8 月 25 日,Term Labs 已完全收回了在 Meta Vaults 及其相关策略中受影响的所有固定利率贷款头寸。目前,Meta Vaults 及相关策略仍处于关闭状态。
攻击者通过恶意治理提案移除了执行延迟机制,随后从 Vault 策略中抽走了流动性 ETH 和 USDC。攻击者利用与每个策略实际流动性 USDC 余额挂钩的虚假回购代币(repo token),成功扫空了可用资金。Term Labs 确认其 V1 和 V2 合约未受到损害,直接借贷市场依然正常运营。
Term Labs 在最新的事件报告中指出,最后一笔固定利率头寸于协调世界时(UTC)8 月 25 日 14:52 完成回收。调查结果显示,此次攻击仅限于 Term Vault 内持有的流动性余额,未波及底层资产。
借贷合约未受 Vault 漏洞影响
新的技术账户披露了 8 月 23 日攻击事件的更多细节。此前,安全公司估计该事件从 Term Finance Vault 中盗取了约 850 万美元。Term Labs 最初仅披露了影响 Vault 的治理漏洞,未提供完整的攻击序列。安全公司 CertiK 和 PeckShield 估计损失接近 850 万美元,其中包括约 2,843 枚 ETH 和 168 万枚 USDC。PeckShield 表示,这些 USDC 随后被兑换为约 168 万枚 DAI。
协议方随后关闭了其 Meta Vaults,并撤销了其 DAO 治理权限。新存款功能被永久禁用,但提款功能仍然开放。当时 Yearn 表示,受影响的合约使用了 Yearn V3 基础设施,但攻击涉及的是为 Term 开发的治理包装器,而非标准的 Yearn V3 Vault。
Term Labs 现在表示,其底层的固定利率借贷系统并未受到攻击者的触及。在其直接借贷市场中,供应、还款和清算功能在整个事件期间均 uninterrupted 地继续运行。
攻击路径详解:利用 Tornado Cash 和治理提案
攻击主要通过两个由 Tornado Cash 资助的操作员钱包以及一系列改变 Term Vault 策略控制权的治理提案展开。
第一个操作员钱包于 8 月 17 日通过 Tornado Cash 接收资金。约 24 分钟后,该钱包提交了一项名为“投票赞成否决策展人提出的 Vault 参数更改”的 ETH 提案。提案中包含的一项关键更改是将受影响堆栈的治理延迟(Delay)降至零。Term Labs 指出,这一更改取消了原本为期七天又一小时的时间窗口,在此期间流动性提供者本可以阻止该提案的执行。
第二个操作员钱包于 8 月 18 日接收 Tornado Cash 资金,并于当天下午部署了一个单例合约(singleton contract)。据 Term Labs 称,该合约在一个部署中结合了三个功能:控制器、价格适配器和虚假回购代币。随后初始化了一个辅助合约。
三天后的 8 月 21 日,辅助合约提交了七项治理提案,并对这些提案投出了唯一的一票。其中两项针对 ETH 策略 DAO 的提案从未被执行,而另外五项则成为了 USDC 攻击的一部分。这五份提案同样将相关治理延迟降至零,移除了原本为期三天又一小时的时间窗口,防止 LP 在执行前进行干预。
早期的事件分析发现,攻击者以极低的成本获得了治理影响力。对治理接管过程的审查显示,攻击者花费约 951 美元购买了足够的治理代币,从而控制了与持有数百万美元存款的 Vault 相关的投票权。交易并未要求攻击者破坏 Term 的核心固定利率借贷合约,而是通过治理合约执行了经过提案和投票流程的指令。
今年早些时候,StrongBlock 也曾遭遇类似攻击路径,攻击者接管了其治理系统并盗取了约 72,000 美元的 STRONG 和 STRNGR 代币。攻击者获得了足够的投票权以通过一项最终赋予其对项目 Governor 合约管理控制的提案。
ETH 流向固定接收者策略
首个成功的 Term 提案于 UTC 时间 8 月 23 日 06:25 执行。四个活跃的 ETH 策略——Shorewoods、August Digital、Parity Prime 和 Parity Core——通过 update_debt() 函数被召回至 Meta Vault,并被引导至一个新添加的策略 frWETH-EXIT。
Term Labs 将该策略命名为“Fixed Recipient WETH Exit Strategy”。一旦 WETH 进入新策略,frWETH-EXIT 便在同一个调用中将全部金额转发给第一个操作员。该交易导致 Meta Vault 持有一个不包含任何已转入 WETH 的策略中的 2,841.74 个份额。这一数字与 PeckShield 在事件初期分析中追踪到的约 2,843 枚 ETH 非常吻合。
在 ETH 交易发生 22 分钟后,第二波针对五个 USDC 策略 DAO 的行动随之执行。Parity Prime、Parity Core、Parity HY、Parity HY v2 和 RockawayX Tori 于 UTC 时间 06:47 成为目标。
Term Labs 表示,每项提案都导致其 DAO 以等于策略全部流动性 USDC 余额的价值,向关联策略出售一个单位的虚假回购代币。在提案安装了名为 fmTERT 的合约后,攻击者得以执行此销售操作。Term Labs 指出,fmTERT 冒充了用于确定代币是否为合法 Term 工具的控制器,以及负责确定工具价值多少的价格适配器。
提案将每个策略的准备金比率设为零,并将其集中度限制提高到允许的最大值,从而防止这些控制措施限制假代币交易。随后,使用动态 redemptionValue() 函数对该虚假代币进行定价。在执行时,该函数返回策略中可用的精确流动性 USDC 金额,使得单个单位的假回购代币能够以几乎等同于策略整个可用余额的价格售出。
销售完成后,提案批准了 USDC 收益,并将其从每个 DAO 扫入第二个操作员的钱包。
固定利率头寸在赎回前被转移
Term Labs 表示,受影响的 Vault 持有的固定利率贷款无法通过攻击本身直接触及。然而,当这些头寸到期时会出现另一个问题,因为其收益计划赎回到已在治理攻击中被捕获的同一 Vault 中。作为回应,协议升级了受影响的合约,并在到期前移动了固定利率头寸。
此后,所有受影响的固定利率贷款头寸均已收回,最后一笔头寸于 UTC 时间 8 月 25 日 14:52 完成转移。
该事件说明了执行延迟在治理安全中的作用。在 Term Finance 攻击发生前几天,币安表示其阻止了一项威胁到某个 unnamed 项目约 120 万美元资产的恶意 DAO 提案。在该提案可执行仅剩不到 48 小时时,交易所联系了该项目,最终该项目拒绝了该提案,未造成报告损失。而在 Term 的案例中,恶意提案本身在资产被取走前移除了额外的延迟期。ETH 提案取消了七天又一小时的窗口,而五份 USDC 提案分别从其各自的治理堆栈中移除了三天又一小时的周期。
Term Labs 表示,其 Meta Vaults 和相关策略仍保持关闭状态,涉及剩余低活跃度 Vault 的关闭工作仍在进行中。该协议正在与执法机构和网络安全公司合作,以确定攻击者的身份,并表示已提供相关信息以协助调查。
一分钟读懂:Term Labs 恢复所有受治理漏洞影响的固定利率贷款头寸,Meta Vaults 仍保持关闭状态截至 8 月 25 日,Term Labs 已完全收回了在 Meta Vaults 及其相关策略中受影响的所有固定利率贷款头寸。目前,Meta Vaults 及相关策略仍处于关闭状态。攻击者通过恶意治理提案移除了执行延迟
