Ronin Bridge出现异常提取跨链资产行为根本原因是什么?

链得得发布于2024-08-07更新于2024-08-07

8月6日,据区块链安全审计公司Beosin Alert监测显示,Ronin Bridge项目出现异常提取跨链资产的行为。据Beosin安全团队分析,此次异常行为的根本原因在于项目方升级合约时,未正常初始化配置跨链交易确认所需的operator权重,导致合约中的minimumVoteWeight参数为零,从而使得任何人的签名都能通过跨链验证。

攻击交易链接:

https://etherscan.io/tx/0x2619570088683e6cc3a38d93c3d98899e5783864e15525d5f5810c11189ba6cb

Beosin目前正与项目方合作处理此次事件,本篇长文,我们也将与大家分析本笔交易存在异常的点在于两点:

首先,提取数量过高。在Ronin Bridge中,有跨链提取额度的限制,如果跨链提取的额度太大,则需要转至人工确认,而本次交易的跨链资产WETH的限制额度为4000。此笔交易提取了3996个。当然这不是漏洞,但足以让人引起了注意。

其次,查看这笔提取交易发现,其跨链验证者Operator只有一个,且对应的操作权重为0,那就可以确认这笔交易是存在问题的,因为在Ronin Bridge项目中,用户提取跨链资产需要得到多个Operator的签名,且累计的权重必须达到指定阈值。

事件分析:

分析链上合约和数据发现,合约Operator是对应的Manager合约独立管理,并且它是一个治理合约,专门用于管理ronin bridge,查看其交易记录,发现最近一笔交易是对Ronin Bridge合约进行升级,并且就在异常交易之前。所以漏洞的大致方面就基本明确,应该是项目方升级合约所导致的问题。

进一步深入,对比Ronin Bridge升级前后的代码发现,事件所使用的关键参数“_totalOperatorWeight”是本次升级新增的,并且需要在升级中调用initializeV3函数进行V3版本新增的“OperatorWeight”进行初始化。 

但遗憾的是:升级合约的交易中,并未调用initializeV3函数,而是错误调用initializeV4函数进行了V4版本的初始化。

 

至此,该事件的漏洞原理已经明了,Ronin Bridge项目方在合约升级时未正确对新增数据进行初始化,导致对应的关键数据“_totalOperatorWeight”始终为0,使得任意用户的提取请求都可以通过审核。

至本文发布前,项目方已经确认该问题,并发文说了本次攻击行为是白帽所为,并已进行退款,并未造成过多的损失。这是一个好消息,但是也暴露了合约升级这一大易出错的点。

可升级合约

可升级合约是一种solidity智能合约设计方案,使得已部署的合约能够在未来进行升级或修改,而无需完全重新部署。这个概念的核心在于将合约的逻辑和数据分离,并利用“delegatecall”实现对逻辑合约的调用。

尽管这种模式提供了灵活的升级能力,我们也必须高度重视其安全性。由于代理合约负责转发所有的用户请求,它实际上成为了合约系统的入口点。任何对代理合约的攻击都可能影响到整个合约的安全性。因此,在设计和部署可升级合约时,确保代理模式的安全性至关重要。目前代理模式的合约需要注意以下几点:

函数选择器冲突

在以太坊虚拟机(EVM)中,每个智能合约函数都有一个唯一的标识符,称为函数选择器。这个选择器是函数签名的前4个字节的哈希值。函数选择器用于确定合约中的具体函数,确保调用请求被正确路由到相应的函数实现。而在代理模式在调用函数时,会先检查代理合约中的函数接口是否能匹配调用函数,如果不能匹配,才会利用fallback中的delegatecall调用逻辑合约。

因此,如果代理合约和逻辑合约中存在函数选择器相同的函数,当代理合约接收到调用时,它直接调用代理合约中的函数,而不是逻辑合约,这可能导致预期之外的行为或安全漏洞。

存储冲突

在以太坊虚拟机(EVM)中,合约的状态数据存储在特定的存储槽中,每个存储槽的地址由其索引(从0开始)确定。合约中的每个状态变量都对应一个存储槽,数据在这些槽中持久化。

在代理模式中,存储槽通常是由代理合约管理的,而逻辑合约则通过代理合约来访问这些槽。存储冲突可能发生在逻辑合约中新增的状态变量与代理合约中现有的状态变量槽发生冲突时。这可能导致代理合约中的数据被覆盖或不一致

合约初始化问题

在代理模式中,由于代理合约和逻辑合约的分离,而每次升级可能都涉及到变量的更改和新增,因此在升级时必须确保在正确设置这些关键变量。本次的ronin bridge事件就是因为这个问题没做好,导致被攻击。

此外,需要确保初始化函数 initialize 只能被调用一次,以防止在初始化后被恶意攻击者重复调用,从而修改关键变量。

ldelegatecall调用机制

delegatecall是一种低级调用机制,它允许一个合约在其上下文中执行另一个合约的代码。这意味着,调用合约的存储、地址和消息发送者保持不变,但执行的逻辑来自被调用的目标合约。虽 delegatecall提供了强大的功能,但也需要谨慎使用。

如果目标合约地址不存在,delegatecall 的执行将失败并返回失败码,但这种失败可能不会被立刻发现。结果,代理合约中的调用可能看起来像是成功,但实际操作并未生效,从而导致系统的不一致或错误。

代理合约权限管理

在代理模式中,权限管理是另一个关键的安全问题。代理模式通过分离代理合约和逻辑合约的职责,使得合约可以在不改变数据存储的情况下进行升级,但同时也引入了复杂的权限管理问题。正确地管理权限对于保证合约系统的安全性和稳定性至关重要。

Beosin作为全球最早一批从事形式化验证的区块链安全公司,主打”安全+合规“全生态业务,在全球10多个国家和地区设立了分部,业务涵盖项目上线前的代码安全审计、项目运行时的安全风险监控与阻断、被盗追回、虚拟资产反洗钱(AML)以及符合各地监管要求的合规评估等“一站式”区块链合规产品+安全服务

链得得仅提供相关信息展示,不构成任何投资建议

热门币种推荐

你可能也喜欢

Hyperliquid ETF资产声明引关注,HYPE叙事在X平台持续升温

一篇X平台推文声称,三只在2026年5月推出的Hyperliquid(HYPE)交易所交易基金(ETF)已合计积累了1.58亿美元的资产,从而引发了市场关注。 根据用户AlphaOnChain的帖子,其中Bitwise HYPE ETF据称拥有8800万美元资产,21Shares HYPE ETF则为6600万美元。然而,此数据来源于社交媒体,并非官方基金发行人的正式文件或数据看板,因此需要谨慎对待,更多应被视为市场情绪和话题热度的风向标。 这一话题的热度反映了当前加密市场的关注点可能正在从比特币、以太坊等主流资产向外扩散。Hyperliquid以其链上永续交易和交易所生态而闻名,如果相关ETF产品确实吸引了可观的资金流入,可能表明机构和散户投资者开始将目光投向更具潜力的山寨币领域。HYPE本身结合了去中心化金融(DeFi)、衍生品和交易所基础设施等多个叙事,使其在交易者转向高风险资产时成为一个自然的炒作标的。 对于交易者而言,关键在于区分社交媒体热度与基本面支撑。尽管社交讨论可能在短期内影响市场,但持续的价格上行通常需要经过验证的资金流入、充足的流动性以及生态系统的持续成长作为基础。 因此,虽然Hyperliquid ETF的叙事正在获得更多关注,但在获得官方数据证实前,投资者应保持审慎态度。

bitcoinist1小时前

Hyperliquid ETF资产声明引关注,HYPE叙事在X平台持续升温

bitcoinist1小时前

芯片设备“铁律”,正在被打破

长期以来,半导体设备行业存在一条“买方市场”铁律:设备商在新设备导入时常需大幅降价,后续重复采购时也面临持续压价压力。但这一规则正在被打破。近期,SK海力士的多家设备供应商反向提出涨价请求,反映出AI算力狂潮引发的设备供需失衡。 以TCB(热压键合)设备为例,因HBM4扩产需求,韩美半导体、韩华Semitech等厂商订单激增。尽管混合键合技术被视为未来方向,但在HBM4阶段,TCB因技术成熟、量产风险低仍是主流,且其自身也在不断升级。市场预计TCB与混合键合将在未来一段时间内共存。 AI扩产潮还导致测试设备面临关键零部件(如FPGA、CPU、Driver IC)短缺,这些部件被数据中心优先抢购,致使测试设备交付延迟,形成“AI芯片缺货-扩产-测试设备需求增加-关键部件被抢-设备延期”的连锁反应。 整体上,半导体设备行业正进入由AI驱动的新一轮上行周期。SEMI预计全球设备销售额将持续增长至2027年。增长动力主要来自三条主线:先进逻辑芯片(如台积电、英特尔扩产)、存储(尤其是HBM带动DRAM投资)以及先进封装(如CoWoS)。AI算力需求正在重塑设备市场的格局与定价权。 总之,头部设备商凭借在关键工艺节点上的技术壁垒和产能保障能力,正获得前所未有的议价权,改写半导体行业的利益分配格局。

marsbit1小时前

芯片设备“铁律”,正在被打破

marsbit1小时前

TradingView分析师警告:比特币必须守住6万美元,否则面临重大破位风险

比特币目前正处在一个被交易员视为心理和技术关键价位的位置。分析师weslad在6月20日的分析中指出,BTCUSDT已触及一个新的需求区,这可能决定其下一波主要走势。该区域被视为买盘已经介入,但也绝不能失守的防线。 图表分析显示,只要比特币能守住当前需求区,反弹至81,000美元供应区域的概率仍然很高。这将意味着价格回归近期跌势的起点,若买盘能维持压力,可能引发流动性争夺。 跌破6万美元将严重损害看涨前景。该水位被视作多头的底线,若收盘价明确跌破,将破坏看涨结构,并可能导致更深度的下跌。该价位的重要性不仅在于其是整数心理关口,还在于许多交易者都在关注同一支撑位,一旦失守可能触发止损盘、强制平仓和市场情绪转变。反之,若能守住该区域,则能为多头提供有力论据,表明近期抛售已达衰竭点。 上行目标81,000美元固然诱人,但比特币仍需为此创造条件。多头需要捍卫60,000美元,收复附近阻力位,并证明需求足够强劲,能将防御性反弹转变为趋势反转。在此之前,市场格局最好被理解为一个二元化的支撑测试:守住区域,则复苏希望犹存;明确失守,则市场可能开始为更深度的调整定价。

bitcoinist3小时前

TradingView分析师警告:比特币必须守住6万美元,否则面临重大破位风险

bitcoinist3小时前

交易

现货
合约

热门文章

如何购买RONIN

欢迎来到HTX.com!我们已经让购买Ronin(RONIN)变得简单而便捷。跟随我们的逐步指南,放心开始您的加密货币之旅。第一步:创建您的HTX账户使用您的电子邮件、手机号码注册一个免费账户在HTX上。体验无忧的注册过程并解锁所有平台功能。立即注册第二步:前往买币页面,选择您的支付方式信用卡/借记卡购买:使用您的Visa或Mastercard即时购买Ronin(RONIN)。余额购买:使用您HTX账户余额中的资金进行无缝交易。第三方购买:探索诸如Google Pay或Apple Pay等流行支付方法以增加便利性。C2C购买:在HTX平台上直接与其他用户交易。HTX场外交易台(OTC)购买:为大量交易者提供个性化服务和竞争性汇率。第三步:存储您的Ronin(RONIN)购买完您的Ronin(RONIN)后,将其存储在您的HTX账户钱包中。您也可以通过区块链转账将其发送到其他地方或者用于交易其他加密货币。第四步:交易Ronin(RONIN)在HTX的现货市场轻松交易Ronin(RONIN)。访问您的账户,选择您的交易对,执行您的交易,并实时监控。HTX为初学者和经验丰富的交易者提供了友好的用户体验。

321人学过发布于 2024.04.30更新于 2026.06.02

如何购买RONIN

相关讨论

欢迎来到HTX社区。在这里,您可以了解最新的平台发展动态并获得专业的市场意见。以下是用户对RONIN(RONIN)币价的意见。

活动图片