AIN:警惕以太坊合并后的重放攻击:Omni跨链桥被攻击事件分析

一、事件描述

2022年9月18日,以太坊合并完成后,PoW链遭到PoS链上交易的重放攻击,根本原因是网桥未正确读取并验证区块链的chainid。攻击者首先通过Gnosis链的Omni跨链桥转移了200WETH,然后在PoW链上重放了相同的消息,获得了额外的200ETHW。

SharkTeam对此事件进行了技术分析,并总结了安全防范手段,希望后续项目可以引以为戒,共筑区块链行业的安全防线。

声音 | 光明日报:警惕以虚拟币为噱头的新式:12月20日,光明日报刊文“警惕以虚拟币为噱头的新式”。文章表示,最近几年来,类似的“币”层出不穷。一些案例中,甚至根本没有实体产品,完全靠虚拟币哄用户通过发展下线的方式来扩大整个虚拟币市场,刺激购买需求,炒作升值预期,最后收割用户。这种打着区块链新技术旗号的局,蕴含的金融风险不容小觑。面对这类新型方式,消费者要提高警惕,不可贪图不切实际的暴利。此外,监管部门也要顺应形势的变化,及时调整对和虚拟币非法交易的界定范围,提高打击的力度。尤其是对那些宣称有各种神奇功效的产品,一定得拨开其虚假宣传的障眼法,看看是否涉及币局,真正实现对犯罪行为露头就打。[2019/12/20]

二、事件分析

声音 | 延边州金融办:警惕以投资“虚拟货币”“区块链”等为幌子的投资理财局:延边州金融办发布风险提示,提醒群众务必警惕部分投资”、“理财”项目。其中包括以投资“虚拟货币”“区块链”等为幌子的。[2019/7/25]

该事件涉及两个不同链的交易hash以及攻击者地址,分别如下:

PoS链交易hash:0xbddb0cc8bc9949321e1748f03503ed1a20dd618fbf0a51dc5734c975b1f8bdf5

声音 | 天津市局:警惕以虚拟货币、区块链等为幌子的投资理财项目:据天津日报消息,天津市局经济犯罪侦查总队副总队长刘学铸表示,如遇以投资“虚拟货币”、“区块链”等为幌子的“投资”、“理财”项目务必警惕。[2019/4/9]

PoW链交易hash:0x9c072551861ce384203516f4d705176a2d2e262d5b571d853467425f1a861fb4

动态 | 广发银行提醒消费者警惕以区块链等为幌子”的“理财:据东北网3月16日报道, 广发银行哈尔滨分行高度重视金融消费者权益保护工作。提醒广大金融消费者,识别金融、防范非法集资。要理性识别,在遇到“以投资虚拟货币、区块链等为幌子”的“理财”、“保险”产品,务必提高警惕。[2019/3/16]

攻击者地址:0x82FaEd2dA812D2E5CCed3C12b3baeB1a522DC677

首先,我们对比发现两笔交易访问的合约相同,并且inputdata完全相同,即调用了同一个合约的同一个函数并且参数相同,根据相同的方法签名ID?0x23caab49可知,黑客调用safeExecuteSignaturesWithAutoGasLimit函数。

重庆酉阳:警惕以“虚拟货币”、“区块链”为幌子的非法活动:5月15日,重庆市酉阳县局联合县金融办、银监办、国税局、公积金中心、烟草专卖局、银行等多家单位开展了“与民同心、为你守护”为主题的全国打击和防范经济犯罪集中宣传活动。此次活动通过设立法律咨询台、展板、宣传海报、宣传手册等方式,向广大市民详细介绍了各类非法投资、等涉众型经济违法犯罪的新“套路”,要警惕以“虚拟货币”、“区块链”、私募入股、合伙办企业等由为幌子,警惕团伙利用亲戚、朋友、同乡身份实施、参与活动。[2018/5/19]

因此,攻击者通过OmniBridge转移200WETH,然后在PoW链上重放了相同的Inputdata,获得了额外的200ETHW。

此时,我们对这里的重放操作抱有怀疑态度。因为,以太坊网络在硬分叉之前强行执行EIP-155,这就说明ETHPoS链上交易不能在PoW链上重复交易。在正常的交易中,我们通过nonce来进行排序交易,避免重复交易。在跨链中,我们会根据chianid进行识别链的类型,比如以太坊主网的chainid是1,ETHW主网的chainid是10001。

对此,我们分析了OmniBridge相应的源码。我们查看一下OmniBridge验证chainid的逻辑,发现chainid的来源于unitStorage中存储的值,而不是通过操作码CHAINID直接读取的链上chainid。

unitStorage是合约EternalStorage中的状态变量,sourceChainId()函数所在的合约BasicAMB继承了BasicBridge和VersionableAMB。其中,BasicBridge陆续继承了合约EternalStorage。这里保存的chainid是预先存储好的,如果发生区块链的硬分叉而chainid又没有重新设置或者chainid人为设置有误,从合约层面上来说,由于不是通过操作码获取的chainid,不会正确验证跨链消息的实际chainid。这样的漏洞,容易被攻击者利用。

问题分析总结:主要是Omni使用的solidity版本是0.4.24,采用的是手动存储和更新chainid的方式,并未通过EIP-1344中规定的CHAINID操作码进行实际chainid获取。

三、安全建议

引发本次安全事件的原因是在PoW升级PoS过程中,OmniBridge对chainid未及时处理。导致过旧的solidity版本中,存在历史遗留问题。建议在后续项目迭代中,及时应对新问题,采取必要的代码优化措施。虽然Gnosis链上OmniBridge有每日最大转移代币数量限制250个WETH,但是依旧要保持警惕,以防止积少成多,造成更大的损失。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

地球链

[0:31ms0-1:197ms