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)以及符合各地监管要求的合规评估等“一站式”区块链合规产品+安全服务

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

熱門幣種推薦

你可能也喜歡

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

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

marsbit10 分鐘前

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

marsbit10 分鐘前

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

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

bitcoinist2 小時前

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

bitcoinist2 小時前

不可能三角根本就是伪问题

加密行业构建了强大的密码学系统,但默认状态下却无法保护用户资金的隐私,所有交易和持仓都公开可查,这成为大规模资金入场的主要障碍。文章认为,区块链本质上是一台无人拥有的慢速、昂贵计算机,其核心价值在于提供无需许可的准入和去中心化信任。资金(尤其是稳定币)是天然适合上链的资产,因为账本记录即资产本身。 然而,行业长期关注的“不可能三角”(去中心化、可扩展性、安全性)并非真正瓶颈。实际阻碍在于两大设计缺陷:合法性与隐私。合法性方面,无许可特性导致监管灰色地带,但随着美国《GENIUS法案》等监管框架落地,合规环境正在改善。 更关键的缺陷是“透明度税”。链上所有交易公开,导致用户面临MEV(矿工可提取价值)被抢跑、夹击等风险,这实质上是一种持续的成本。对于家族办公室、大型机构等严肃资本而言,公开资产负债表是无法接受的。隐私并非与合规对立,现代密码学(如零知识证明)允许在不泄露具体数据的情况下证明合规性(如偿付能力、KYC),实现“可证明的合规隐私”。 作者指出,为链上交易添加隐私保护是一次纯粹升级,它将把加密系统从“公开的谷歌表格”转变为能保守秘密的共享机器,从而吸引数万亿规模的机构资金,真正释放区块链的潜力。

链捕手13 小時前

不可能三角根本就是伪问题

链捕手13 小時前

交易

現貨
合約

熱門文章

如何購買RONIN

歡迎來到HTX.com!在這裡,購買Ronin (RONIN)變得簡單而便捷。跟隨我們的逐步指南,放心開始您的加密貨幣之旅。第一步:創建您的HTX帳戶使用您的 Email、手機號碼在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為初學者和經驗豐富的交易者提供了友好的用戶體驗。

243 人學過發佈於 2024.12.10更新於 2026.06.02

如何購買RONIN

相關討論

歡迎來到 HTX 社群。在這裡,您可以了解最新的平台發展動態並獲得專業的市場意見。 以下是用戶對 RONIN (RONIN)幣價的意見。

活动图片