Resolv 攻击事件:一个 AWS 密钥如何铸造 2500 万美元并再次重创 DeFi
2026 年 3 月 22 日,一名攻击者带着 10 万美元 USDC 进入 Resolv Labs,带着价值 2500 万美元的 ETH 离开。智能合约没有任何漏洞。预言机没有报价错误。delta 中性对冲策略(delta-neutral hedging strategy)的表现完全符合设计。相反,仅仅是一个 AWS 密钥管理服务(KMS)凭证——一个存在于区块链之外的签名密钥——给了入侵者在 10 万美元存款的基础上铸造 8000 万枚无背书 USR 代币的权限。17 分钟后,USR 从 1.00 美元跌至 0.025 美元,跌幅达 97.5%,以太坊上的各借贷协议都在承受这一冲击。
Resolv 事件之所以引人注目,并非因为它有多高明。它引人注目是因为它一点也不高明。缺失最大铸造额度检查、云密钥管理中的单点故障,以及将脱锚稳定币定价为 1 美元的预言机——DeFi 以前也曾经历过这些失败。这次黑客攻击揭露了一个令人不安的事实:现代稳定币的攻击面已悄然从 Solidity 迁移到了 AWS 控制台,而行业的安全模型尚未跟上。
一场 17 分钟劫案的 剖析
Resolv 的铸造流程是一个分为两步的链外动作。用户调用 requestSwap() 来存入 USDC。一个拥有特权的链外签名者——SERVICE_ROLE——审查该请求,决定发行多少 USR,并调用 completeSwap() 来完成铸造。合约强制执行了最小输出,但没有设置最大值。只要密钥持有者签署了,合约就会认可。
这种设计将一个 TVL 超过 5 亿美元的协议的完整性全部押在了存储在 AWS KMS 中的单个私钥上。当攻击者攻破 Resolv 的云环境并获得存储在 KMS 中的签名凭证时,剩下的攻击过程几乎是机械式的:
- 通过
requestSwap()存入大约 10 万至 20 万美元的 USDC - 使用窃取的
SERVICE_ROLE密钥签署 8000 万枚 USR 的completeSwap()授权 - 将铸造的 USR 通过 wstUSR(质押的包裹变体)进行轮换,以减轻初始的市场影响
- 通过 Curve、Uniswap 和 KyberSwap 抽走流动性,兑换成 ETH
到 UTC 时间 02:38,USR 在 Curve 上的交易价格为 0.025 美元,脱锚率达 97.5%。攻击者的钱包最终持有约 11,400 枚 ETH,当时价值约 2400 万美元。整个过程从开始到结束耗时 17 分钟。
无人审计的链外攻击面
令人震惊的是:Resolv 是经过审计的。它的 Solidity 代码没有问题。重入防护、整数溢出检查、逻辑审查——全部通过。该漏洞运行的正是工程师设计的代码路径。
漏洞存在于更高一层,即控制铸造权限的云基础设施中。现代 DeFi 协议并非纯粹的链上系统。它们依赖于链外价格喂价、链外守护者(keepers)、链外治理多签,以及正如 Resolv 所展示的,托管在云平台上的链外签名服务。标准的智能合约审计审查的是链上代码。它们不审计 AWS IAM 策略、KMS 密钥轮换计划、环境变量清理,或是受损 CI/CD 流水线的影响范围。
Chainalysis 的事后分析直截了当地总结了这一教训:“下一次利用可能来自一封钓鱼邮件、一个配置错误的 IAM 策略或一个泄露的环境变量。”换句话说,现代稳定币最难保障安全的部分不是它的联合曲线(bonding curve)或抵押率,而是持有铸造密钥的云账户。
三项设计选择加剧了 Resolv 的风险:
- 链上没有最大铸造额检查。 合约完全信任链外签名者。即使是简单的“单次铸造不得超过总供应量的 5%”规则,也能将损失控制在几百万美元,而不是 2500 万美元。
- 没有速率限制。 铸造逻辑中没有任何机制察觉到,在存入订单量级极小的情况下,一次调用就发行了 8000 万枚代币。
- 没有多方授权。 单个
SERVICE_ROLE签名——不是阈值签名,也不是多签——就足以完成任何规模的铸造。
这些控制措施中的任何一个都能将此次事件化解为一场虚惊,而不是一场灾难。
连锁反应:毫无反应的预言机
Resolv 故事的下半部分是损害倍增的地方。USR 和其质押版本 wstUSR 已被多个大型借贷市场采纳为抵押品:Morpho、Euler 和 Fluid/Instadapp。当稳定币崩盘时,这些市场的预言机仍将 wstUSR 的价格定在接近 1 美元——要么是因为它们使用了内部赎回率而非市场报价,要么是因为崩溃发生的速度超过了价格喂价的反应速度。
投机交易者立即察觉到了这一点。他们在公开市场上以 0.025 美元的价格购买廉价的 USR,将其作为预言机误认为价值 1 美元的抵押品存入,并借出 USDC、ETH 和其他真实资产。这些协议对脱锚视而不见,认可了这些交易。结果是:
- Fluid/Instadapp 产生了超过 1000 万美元的坏账,并出现了超过 3 亿美元的单日资金流出——这是其有史以来表现最糟糕的一天。
- Morpho 的 Gauntlet USDC Core 金库通过其公共分配器(Public Allocator)损失了约 600 万美元。该分配器尽职地向利用率激增的池进行重新平衡(因为套利者正在针对定价错误的抵押品进行借贷)。
- Euler 面临强制清算,这加剧了价格崩盘,将 USR 进一步推入脱锚死亡螺旋。
DeFi 以前见过这种情节。2022 年的 UST 崩盘、2023 年 Euler 黑客攻击后的坏账余波、2024 年 Prisma 和 Curve 的脱锚事件——每一个都教导了同样的教训:当抵押资产脱锚时,如果借贷市场不能在几分钟内做出反应,就会变成从诚实存款人向套利者转移财富的机器。Protos 的标题简洁地指出:“Resolv 黑客攻击表明 DeFi 从上一次连锁反应中什么也没学到。”
Resolv 与 Terra:不同的失败,相同的结果
将 Resolv 与 Terra/LUNA 混为一谈是很诱人的。两者都是遭遇灾难性脱锚的稳定币。但它们的失败模式完全不同,而这种区别对于协议今后如何自我防御至关重要。
Terra 是 内部机制故障。UST 与 LUNA 之间的算法绑定在信心崩溃后按照设计逻辑瓦解 —— 系统根据自身规则从内部自我吞噬。不存在外部攻击者;激励结构本身就是漏洞。
Resolv 则是 外部私钥泄露。支持 USR 的 Delta 中性对冲策略在整个事件中运行正常。储备金已经到位。除了铸造接口外,挂钩在各处都保持稳定,而攻击者利用窃取的凭证凭空制造了供应量。系统并没有失效 —— 而是被越权控制了。
这种区别重塑了防御手册。针对算法失败,你需要改进机制:更好的绑定曲线、熔断机制、抵押缓冲。而针对私钥泄露,机制的改进是无关紧要的。你需要的是具有严格使用策略的硬件安全模块(HSM)、需要多方参与的阈值签名、任何单一私钥都无法绕过的链上速率限制和铸造上限,以及对持有特权角色的云账户进行持续监控。
接下来的变化 —— 或应该发生的变化
价值超过 3080 亿美元的稳定币市场现在已经大到足以让单一协议的失败产生系统性影响。Resolv 事件暴露了严肃的发行方和 DeFi 集成商在 2026 年之前可能会实施的几项变革:
- 链上铸造上限成为标准。 无论谁签署,任何离线签名都不能在单次调用中铸造超过供应量极小比例的代币。仅此一项就能将 Resolv 攻击的损失限制在个位数百万美元以内。
- 借贷市场中的脱锚熔断机制。 预言机对比市场价格与赎回价格,当两者偏差超过阈值时自动暂停借贷。Morpho、Euler 和 Fluid 在事件发生后都表达了在这方面的工作意向。
- 云基础设施审计与智能合约审计并重。 像 Halborn 和 Chainalysis 这样的公司正在扩大业务范围,将 KMS 配置、IAM 审查和私钥轮换审计纳入其中。预计这将成为任何拥有特权离线签名者的协议的基本门槛。
- 铸造权的阈值签名和 MPC。 控制无限铸造权的单一 KMS 私钥是早期 DeFi 的产物。现在,需要多个独立方共同签署铸造操作的基于 MPC 的方案已经可以投入生产,并能显著提高攻击成本。
- 抵押品托管与铸造权限分离。 在设计良好的系统中,即使签名私钥完全泄露,也无法产生超过已验证链上抵押品的代币。Resolv 的架构将这些职责混为一谈;未来的设计需要将它们分离。
令人不安的事实是,Resolv 黑客事件并非黑天鹅事件。这是在单一私钥云签名者之上构建数十亿美元金融原语的必然结果。每一个带有离线预言机或签名者的生息稳定币都拥有类似的攻击面。一些协议会增加上述控制措施,而另一些则会通过惨痛的教训来明白这一点。