autorenew
Morpho Labs 2025 年安全漏洞:Bundler3 漏洞详解

Morpho Labs 2025 年安全漏洞:Bundler3 漏洞详解

解读 Morpho Labs 安全事件:究竟发生了什么?

2025 年 4 月 11 日,DeFi 社区被一则关于 Morpho Labs 的安全问题震惊。Morpho Labs 一直以其高质量的代码和严格的安全措施而闻名,包括 34 项公开的审计记录 (Morpho 文档)。一位名叫 Greysign 的用户 @greysign1 在 X 上分享了对该事件的详细调查,揭示了一个关键漏洞,这与 Morpho 最初的声明相矛盾。让我们一起分析一下发生了什么,为什么这件事很重要,以及你如何保护自己。

Morpho Labs 是一家去中心化金融协议,于 2025 年 4 月 10 日推出了一个前端更新,旨在改善其 Morpho App 中的交易流程。然而,到了 4 月 11 日欧洲中部时间凌晨 3:54,一份报告指出,一些交易的构建不正确,导致 Morpho 团队迅速做出反应。他们在欧洲中部时间凌晨 4:44 修复了该问题,并在欧洲中部时间凌晨 5:23 在 X 上发布了更新 (Morpho Labs 更新)。最初,Morpho 声称问题仅限于前端,并向用户保证 Morpho 协议中的资金是安全的。但 Greysign 的调查揭示了一个更深层的问题:问题不仅仅存在于前端,而是在 Bundler3 合约中存在一个合约级别的漏洞。

真正的罪魁祸首:Bundler3 合约漏洞

Greysign 最初怀疑是前端漏洞,认为黑客可能将恶意代码注入到 Morpho App 中,以在交易提交到区块链之前窃取 Permit2 签名。Permit2 是一种标准,允许用户安全地批准代币转移,通常在 DeFi 中用于简化交互。然而,在分析了攻击交易后,Greysign 得出结论,问题出在 Bundler3 合约本身,而不是前端。

正如 Morpho 的文档中所解释的 (Bundler3 介绍),Bundler3 是一个不可变的开源合约,旨在在单个交易中处理多个合约调用——这一功能称为 multicall。这在 DeFi 中非常有用,因为外部拥有的帐户 (EOA),比如你典型的以太坊钱包,不能同时执行多个操作。Bundler3 的目的是通过批量处理调用来解决这个问题,例如一次性批准代币转移和执行交易。它已经通过了 Spearbit 和 OpenZeppelin 的审计,甚至通过了 Certora 的形式验证,并在 Immunefi 和 Cantina 上有一个 150 万美元的漏洞赏金计划。那么,到底哪里出了问题?

该漏洞在于 Bundler3 的 multicall 功能的实现方式。与仅仅批量处理调用的基本 multicall 不同,Bundler3 允许用户传递任意调用以代表他们执行。然而,它缺乏适当的限制,这意味着攻击者可以操纵这些调用。以下是漏洞利用的工作方式:

  1. 用户将与 Bundler3 交互,通过 Permit2 签名批准它管理他们的代币。
  2. 用户的交易,包括 Permit2 签名,将进入 mempool——以太坊交易的等待区。
  3. 一个 MEV (最大可提取价值) 机器人,它扫描 mempool 以寻找有利可图的机会,会发现这笔交易。MEV 机器人是自动化的系统,通过诸如抢先交易或夹层攻击等策略来利用交易排序来获取利润 (Blocknative 关于 MEV)。
  4. 该机器人将通过提交自己的具有更高 Gas 费用的交易来抢先执行用户的交易,使用相同的 Permit2 签名通过 Bundler3 的 multicall 执行 TransferFrom 调用。这将用户的代币重定向到攻击者的地址。

Greysign 分享了一个攻击交易的截图,用红色突出显示了恶意的 TransferFrom 调用:

显示 Bundler3 中恶意 TransferFrom 调用的攻击交易截图

核心问题是什么?Bundler3 的 multicall 没有确保原子执行——这意味着批处理的调用不能保证作为一个单独的、不可中断的单元执行。攻击者可以篡改这些调用,利用缺乏限制来窃取代币。

Morpho 的回应和修复:退回到 Bundler2

Morpho Labs 在发现问题后迅速暂停了 Morpho App 前端,后来声称前端是安全的,用户无需采取进一步行动。然而,Greysign 的发现表明,Morpho 通过将其描述为前端问题来淡化了问题的严重性。实际上,修复方法涉及完全放弃 Bundler3。

Greysign 指出,Morpho 恢复使用 Bundler2,这是一个旧版本的合约(地址:0x4095f064b8d3c3548a3bebfd0bbfd04750e30077)。与 Bundler3 不同,Bundler2 具有更严格的控制,包装了函数并限制了可以执行的调用类型。这可以防止攻击者传递任意调用,从而有效地关闭了该漏洞。Greysign 通过测试更新后的 Morpho App 确认了这一点,该应用程序现在调用 Bundler2:

显示受限 delegatecall 函数的 Bundler2 代码截图

有趣的是,Bundler3 在 74 天前部署,但仅激活了大约 10 个小时,大多数交易发生在事件发生前 18 个小时。Morpho 决定首先切换到 Bundler3 的原因仍不清楚,特别是 Greysign 未能在 Morpho 的 2024 年报告中找到任何专门针对 Bundler3 multicall 实现的审计报告。

为什么这很重要:DeFi 中的模式漏洞

这不是一个与 Morpho 的业务逻辑相关的个别漏洞——它是一个模式漏洞,可能会影响使用类似 multicall 实现的其他 DeFi 协议。Bundler3 的 multicall 中缺乏原子执行,使得攻击者可以利用 mempool,这是以太坊交易生命周期中的一个常见攻击媒介。Greysign 证明了涉及 Bundler3 的其他交易也容易受到攻击,模拟攻击以确认代币仍然可以被盗:

模拟攻击的截图,显示通过 Bundler3 multicall 窃取代币

此事件突显了 DeFi 中代币批准的风险。当你批准像 Bundler3 这样的合约来管理你的代币时,该批准会一直存在,直到被撤销。如果合约存在漏洞,攻击者可以利用它来耗尽你的资金,即使在你的初始交互很久之后 (Dexola 谈代币批准)。

如何保持安全:撤销批准并避免 Bundler3

Greysign 的最终警告至关重要:如果你与 Bundler3(地址:0x6566194141eefa99Af43Bb5Aa71460Ca2Dc90245)交互并签署了 Permit2 批准,你的代币将面临风险。MEV 机器人仍然可以在 mempool 中抢先执行你的交易并窃取你的资金。你应该这样做:

  • ​撤销代币批准:​ 使用像 Revoke.cash 这样的服务来检查和撤销你授予 Bundler3 的任何批准。这可以防止攻击者使用你现有的批准来窃取代币。
  • ​避免 Bundler3 交互:​ 在 Morpho 确认永久修复或完全弃用之前,不要与 Bundler3 合约交互。
  • ​检查你的交易历史:​ 查看你的钱包交易历史记录中与 Bundler3 的任何交互,特别是如果你在 2025 年 4 月 10 日至 11 日左右使用了 Morpho App。

幸运的是,已经存入 Morpho 协议本身的资金是安全的,因为该漏洞仅影响与 Bundler3 的交互,而不影响核心协议。

更大的图景:DeFi 中的透明度和信任

Greysign 对 Morpho Labs 感到失望,他们以前一直钦佩该团队的代码质量和安全重点。缺乏透明度——将问题描述为前端问题,而实际上是合约漏洞——削弱了信任。Morpho 承诺在下周发布详细帖子 (Morpho Labs 更新) 遭到了怀疑,像 0xSimon 这样的用户质疑了延迟 (0xSimon 的回复)。

此事件强调了 DeFi 中透明度的重要性。当出现安全问题时,清晰和诚实的沟通对于维护用户信任至关重要。它还强调了严格测试合约升级的必要性,尤其是在用引入不可预见风险的新实现(Bundler3)替换安全实现(Bundler2)时。

最后的想法

2025 年 4 月的 Morpho Labs 安全事件深刻提醒了 DeFi 中的复杂性和风险。虽然 Morpho 迅速采取行动来缓解问题,但最初的沟通不畅和漏洞的性质提出了关于合约设计和用户安全的重要问题。感谢 Greysign 的彻底调查,社区现在对出错的地方以及如何保护自己有了更清晰的了解。

如果你是 Morpho 用户,请立即采取行动以撤销任何 Bundler3 批准并保持谨慎。对于更广泛的 DeFi 领域,此事件呼吁优先考虑 multicall 实现中的原子执行,并在危机期间进行透明沟通。保持安全,并始终仔细检查你与之交互的合约!

你可能感兴趣