$215K 来自Fluid的盗窃:攻击者控制梅克尔奖励系统中的两个密钥

流失的流体$215K 在一名攻击者控制了两个奖励分发密钥后,通过伪造的Merkle根窃取代币,并将收益路由到Tornado Cash。

奖励代币已经消失了。5月27日,一名持有流体(Fluid)运营签名密钥的攻击者向以太坊、Base和Arbitrum协议的Merkle分发器推送了一个伪造的奖励列表。

基于以太坊的DeFi协议流体,采用两步系统进行奖励分发:一个密钥提出Merkle根,第二个密钥批准它。正如BlackHartInc在X上报道的那样,这两个角色都由同一人持有。一人掌控两个密钥意味着控制权毫无意义。

一人,两钥,零阻力

提议密钥在协调世界时21:11:11向FLUID分发器提交了一个自利的根。十二秒后,同一攻击者使用批准者密钥批准了它。初始提议后24秒,用空的Merkle证明完成了一次认领。

这个空证明并不是漏洞。单条奖励列表产生的根等于其唯一叶子,因此不需要证明路径。合约正确验证了它。智能合约没有任何破坏。根据BlackHart的取证分析,整个失败原因在于操作密钥的保管。

随后,提议-批准-认领的循环在21:13:59 UTC对GHO分发器运行,数小时后在第三个分发器上认领了少量的cbBTC。在所有三个链上,攻击者共获得了大约125,109个FLUID和51,946个GHO,以及可追踪的cbBTC。

实际从协议中转走了什么,未转走的又是什么

流体的借贷市场、金库和去中心化交易所的流动性从未受到这些密钥的影响。被窃的合约仅是奖励分发器。X上的0xfluid确认核心协议的智能合约未受影响,用户资金未受到此次事件的威胁。

被盗的FLUID和GHO通过MetaMask交换路由器换成了大约103个以太币。大约142.6 ETH最终进入Tornado Cash,部分通过中继钱包路由,部分直接存入。Base和Arbitrum的L2收益在混合前被桥接回以太坊。

之后几天内,从流体中提取的金额在7000万到1.1亿美元之间,并非二次攻击。这是存款人自行提取资金,是一次由信心驱动的银行挤兑。虽然与盗窃本身无关,但与披露时间点关系密切。

清理措施,以及未提及的内容

在第一次盗窃大约十小时后,即5月28日07:05 UTC,流体团队通过一次批量交易移除了十个奖励分发器中的受损提议和批准角色。剩余的奖励余额约为314,000个FLUID和7,400 USDC,转移到一个安全地址。

团队的公开沟通仅提到暂停奖励认领以进行更新,没有提及密钥被攻破,也没有提及损失。此次漏洞在事件发生四天后,即5月31日公开曝光,当时已有一名借款人自5月28日起提取了7700万美元的USDC。

Merkl的联合创始人Pablo Veyrat在X上回应了此次事件。他提到,关于其协议的设计选择,Veyrat指出,Merkl在完全独立的基础设施上运行三个争议机器人,每个在新Merkle树生效前验证,且新根发布与任何认领之间至少有一小时的延迟。

为什么时间锁在这里至关重要

整个攻击从提议到认领用时不到24秒。只有在没有延迟的情况下,才能实现如此快速的操作。管理密钥的漏洞今年在DeFi中屡次发生,模式始终回到同一个缺口:特权密钥在访问与行动之间没有任何阻碍。

BlackHart的评估将操作安全性标记为在其对流体的前次黑客评估中最薄弱的环节。确切的失败模式——两个密钥可以在没有独立托管人或等待期的情况下直接进行支付——正是评分所警示的内容。操作密钥的泄露并不新鲜,但流体的案例增加了一个特殊的细节:两钥设计看似是安全保障,直到它被一个人掌控。

攻击者的钱包0x4925120c…1d3dfb在大致相同的时间内跨链认领。没有速度限制限制单个周期能释放的金额。直到数小时后,才有实时警报捕捉到异常活动。

FLUID-11.49%
GHO0.05%
ETH-7.75%
查看原文
此页面可能包含第三方内容,仅供参考(非陈述/保证),不应被视为 Gate 认可其观点表述,也不得被视为财务或专业建议。详见声明
  • 赞赏
  • 评论
  • 转发
  • 分享
评论
请输入评论内容
请输入评论内容
暂无评论