升级部署脚本错误导致 Ronin 桥被黑 - Verichains

2024-08-16 13:30:50 UTC | defi.io/zly

根据区块链安全公司Verichains的一份报告,8月6日发生的价值1000万美元的Ronin网桥漏洞是由一个错误的升级部署脚本引起的。

Verichains称,升级将验证者的投票门槛降为零,实质上允许任何用户 "无需签名 "从桥上提款。

机器人的所有者后来将大部分资金归还给了Ronin团队。

Verichains的分析揭示了用户在与可升级智能合约交互时所承担的风险。如果攻击者支付了更多的天然气,从而避开了领跑者,那么该协议可能会损失全部金额。

Ronin 是一个专门托管 Web3 游戏的区块链网络。它最为人熟知的是《Axie Infinity》的发源地,这是一款通过游戏赚取收益的怪物养成游戏,在 2022 年的高峰期号称拥有超过 200 万玩家。Ronin 游戏玩家使用这座桥在以太坊和 Ronin 之间转移资金。

根据 Verichains 的报告,这座桥依靠变量 mimimumVoteWeight 来防止用户提取不属于自己的资金。每笔交易都必须获得由该变量设定的最低验证人数的授权。在计算 minimumVoteWeight 时,它使用另一个变量 totalWeight 作为输入。

Ronin 先前版本中的 TotalWeight。来源:Verichains来源:Verichains

在早期版本的桥接器中,totalWeight 存在于一个名为 "MainchainBridgeManager "的独立合约中。当开发人员创建新的升级版本时,他们希望将这个变量移到桥接器自己的内部存储中,而不是留在其他合约中。这意味着他们需要在部署时初始化该变量,将 TotalWeight 设置为前一版本中的值。

不幸的是,升级在这里出了大问题。据 Verichains 称,Ronin 开发人员编写了多个不同的 "初始化 "函数,这些函数本应在部署时调用。每个函数都有不同的版本号。第三个版本包含关键的 totalWeight 初始化。但开发人员在编写部署脚本时,只调用了第 4 个版本,导致 totalWeight 的默认值为零。

来源:Verichains来源:Verichains

这次升级后,用户不再需要向验证者提交签名来证明他们有权退出。他们可以 "无签名 "撤回,因为 "它满足了最小投票权重条件(由于未初始化,投票权重为 0)"。

Composable Security 智能合约审计员达米安-鲁西内克(Damian Rusinek)在 8 月 7 日发表在 X 上的一篇文章中,进一步详细说明了导致攻击发生的原因。根据 Rusinek 的说法,攻击者提供了一个以 B849f 结尾的地址的签名。但是,这个地址 "不在桥接运营商列表中"。它不需要在网桥操作员列表上,因为 "操作员的最低票数为 0"。因此,"只需要一个签名,而且可以是任何有效签名"。

虽然没有像Verichains或Rusinek那样详细说明,但Ronin在8月6日的X帖子中证实,该漏洞是由于升级 "引入了一个问题,导致桥接器误解了提取资金所需的桥接器操作员投票阈值"。

区块链数据显示,这次攻击交易是由一个名为 "Frontrunner Yoink "的MEV机器人打头阵的,它成功地从桥上抽走了价值超过1000万美元的加密货币。据鲁西内克称,该机器人很可能 "模拟更改地址和金额,并使用自己的签名"。一旦这种模拟证明漏洞有效,它就会提交交易。

相关: Ronin 网络被利用赚取 980 万美元 ETH,怀疑是白帽黑客所为

领先者 Yoink 的所有者在同一天归还了大部分资金,Ronin 团队宣布将允许他们保留价值 50 万美元的资金作为漏洞赏金。

Ronin 用户在 8 月 6 日的漏洞攻击中险象环生。幸运的是,这次攻击是由一个 MEV 机器人发起的,该机器人的所有者是一位诚实的白帽子操作员。然而,攻击险些得逞的事实暴露了可升级跨链桥接器的风险本质。

一些网络声称,当以太坊二层达到 "第二阶段",所有升级在启动后至少延迟七天后,这个问题就会消除。然而,批评者称,达到这一阶段的过程耗时太长,可能永远无法完成。

Related News

More News

© 2025 DeFi.io