前言
随着ETH升级PoS?共识系统,原有的PoW机制的ETH链在部分社区的支持下成功硬分叉。但是,由于某些链上协议在设计之初没有对可能的硬分叉做好准备,导致对应的协议在ETHW分叉链存在一定的安全隐患,其中最为严重的安全隐患则是重放攻击。
在完成硬分叉后,ETHW主网出现了至少2起利用重放机制进行的攻击,分别是OmniBridge的重放攻击和PolygonBridge的重放攻击。本文将以这两个事件作为案例,分别分析重放攻击对分叉链的影响,以及协议应如何防范此类攻击。
重放的类型
首先,在开始分析之前,我们需要先对重放攻击的类型做一个初步的了解,一般而言,我们对重放攻击分成两类,分别是交易重放和签名消息重放。下面,我们来分别说下这两类重放机制的区别
交易重放
交易重放指的是将在原有链的交易原封不动的迁移到目标链的操作,属于是交易层面上的重放,重放过后交易也是可以正常执行并完成交易验证。最著名的案例莫过于Wintermute在Optimism?上的攻击事件,直接导致了超2000万OPToken的损失。但是在EIP155实施以后,由于交易的签名本身带有chainId(一种用于链本身区别与其他分叉链的标识符),在重放的目标链chainId不同的情况下,交易本身是无法完成重放的。
签名消息重放
签名消息重放区别于交易重放,是针对的用私钥签名的消息(e.g.Coboisthebest)进行的重放,在签名消息重放中,攻击者不需要对整个交易进行重放,而只需将签名的消息进行重放即可。在消息签名中,以Coboisthebest为例,由于该消息中并不含任何和链相关的特殊参数,所以该消息在签名后理论上是可以在任意的分叉链中均是有效的,可以验签通过。为了避免该消息在分叉上的重放,可以消息内容中添加chainId,如Coboisthebest+chainId()。在带上特定的链标识符之后,在不同分叉链上的消息内容不同,消息签名不同,因此无法直接进行重放复用。
Pulse Chain上的Aave fork项目遭受治理攻击,损失约93万美元:金色财经报道,据区块链安全审计公司Beosin旗下Beosin EagleEye安全风险监控、预警与阻断平台监测显示,2023年7月2日, Pulse chain上的Aave fork项目遭受治理攻击,黑客先购买了大量的Aave代币用于获得Aave fork项目的治理权限,然后创建了多个合约,黑客似乎想利用治理权限,修改了代理合约的实现地址,利用用户对合约未取消的授权,将用户的资金转走。如:(WBTC,YFI,BAL,AAVE,UNI等等代币)。最后黑客通过跨链桥协议将以上被盗资金转化成了ETH,发送到了以太坊的0xA30190b96FaEe0080144aA0B7645081Fcbf49E6F地址上。攻击者获利483个ETH约93万美元。[2023/7/2 22:13:04]
OmniBridge和PolygonBridge的攻击原理
下面我们来分析OmniBridge和PolygonBridge的攻击原理。首先抛出结论,这两起攻击事件本身都不是交易重放攻击,原因在于ETHW使用了区别于ETH主网的chainId,所以直接重放交易无法被验证通过。那么剩下的选项就只有消息重放了,那下面我们就来逐个分析它们各自是如何在ETHW分叉链上被消息重放攻击的。
OmniBridge
OmniBridge是用于在xDAI和ETH主网之间进行资产转移而使用的桥,主要依赖桥的指定的validator提交跨链消息完成跨链接资产的转移。在OmniBridge中,validator提交的验证消息的逻辑是这样的
上海市政府:发展区块链、Web3.0等数字新经济,推动元宇宙重大应用:金色财经报道,上海市人民政府办公厅关于印发《上海市推动制造业高质量发展三年行动计划(2023-2025年)》的通知。其中提及布局新赛道和未来产业。落实“四个新赛道”“五大未来产业”行动方案,发展区块链、Web3.0等数字新经济,推动元宇宙重大应用,布局碳捕集利用、“氨-氢”、高效储能等绿色低碳领域,打造智能网联汽车、智能机器人、智能穿戴、虚拟显示等终端品牌;加速布局未来产业细分领域,建设张江、临港、大零号湾等未来产业先导区。[2023/6/15 21:39:11]
在这个函数中,首先会根据#L2行的签名检查来确定提交的签名是不是由指定的validator进行签名,然后再在#L11行对data消息进行解码。从解码内容上看,不难发现,返回字段中包含了chainId字段,那么是不是说明无法进行签名消息重放呢?我们继续分析。
通过追查_executeMessage函数,发现函数在#L11行对chaindId进行了合法性的检查
Aavegotchi关于关闭GHST联合曲线的提案已获投票通过:2月28日消息,Aave生态NFT游戏Aavegotchi关于关闭协议代币GHST联合曲线的提案已获得投票通过,该提案最终支持率为91.17%。
提案认为,AavegotchiDAO经过两年的发展已经具备足够的成熟度和流动性来满足项目发展,因此提议关闭GHST联合曲线,将GHST与DAI脱钩,固定其供应,并使GHST成为自由流通的代币。此外,曲线中的2000万枚DAI将用于项目的持续开发以及提高流动性,以促进GHST的推广使用。[2023/2/28 12:33:53]
通过继续分析后续的函数逻辑,不难发现其实针对chainId的检查其实并没有使用evm原生的chainId操作码来获取链本身的chainId,而是直接使用存储在uintStorage变量中的值,那这个值很明显是管理员设置进去的,所以可以认为消息本身并不带有链标识,那么理论上就是可以进行签名消息重放的。
由于在硬分叉过程中,分叉前的所有状态在两条链上都会原封不动的保留,在后续xDAI团队没有额外操作的情况下。分叉后ETHW和ETH主网上OmniBridge合约的状态是不会有变化的,也就是说合约的validator也是不会有变化的。根据这一个情况,我们就能推断出validator在主网上的签名也是可以在ETHW上完成验证的。那么,由于签名消息本身不包含chainId,攻击者就可以利用签名重放,在ETHW上提取同一个合约的资产。
PolygonBridge
和OmniBridge一样,PolygonBridge是用于在Polygon和ETH主网进行资产转移的桥。与OmniBridge不同,PolygonBridge依赖区块证明进行提款,逻辑如下:
马来西亚加密交易平台MX Global完成160万美元融资,Binance领投:10月1日消息,据数据显示,马来西亚加密交易平台 MX Global Sdn Bhd(MX Global)完成 160 万美元融资,Binance 和 MX Global 母公司 Hachiman Technology 领投。MX Global 是一家受监管的加密交易平台,2021 年 7 月获得马来西亚证券委员会(SC)批准,是马来西亚四个合规市场运营商-数字资产交易所(RMO-DAX)之一。
此前消息,3月1日,MX Global获得 Binance 和数字商业解决方案提供商 Cuscapi 战略投资,具体金融未披露。(VentureCap Insights)[2022/10/2 18:37:30]
通过函数逻辑,不难发现合约通过2个检查确定消息的合法性,分别是通过检查transactionRoot和BlockNumber来确保交易真实发生在子链(PloygonChain),第一个检查其实可以绕过,因为任何人都可以通过交易数据来构造属于自己的transactionRoot,但是第二个检查是无法绕过的,因为通过查看_checkBlockMembershipInCheckpoint逻辑可以发现:
Glassnode:自5月以来交易所出现-10万枚BTC净流出:金色财经报道,据区块链分析公司Glassnode最新报告显示,交易所继续经历所持供应量的宏观下降,这一趋势自2020年3月投降事件以来一直在发展,迄今为止,随着价格的下降,交易所的资金外流仍在继续,而且强度普遍增加,凸显来自散户和大型投资者对主权自我托管资产的持续结构性需求。总的来说,在2022年5月LUNA投降后,交易所出现了有-30万枚比特币发生了净转移,其中有-10万枚比特币的净流出,占2020年3月历史前高以来总流出量的3.2%。[2022/8/24 12:46:10]
对应的headerRoot是从_checkpointManager合约中提取的,顺着这个逻辑我们查看_checkpointManager设置?headerRoot的地方
不难发现在#L2行代码中,签名数据仅对borChianId进行了检查,而没有对链本身的chainId进行检查,由于该消息是由合约指定的proposer进行签名的,那么理论上攻击者也可以在分叉链上重放proposer的消息签名,提交合法的headerRoot,后续再通过PolygonBridge进行在ETHW链中调用exit函数并提交相应的交易merkleproof后就可以提现成功并通过headerRoot的检查。
以地址?0x7dbf18f679fa07d943613193e347ca72ef4642b9?为例,该地址就成功通过以下几步操作完成了对ETHW链的套利
首先依靠钞能力主网交易平台提币。
在Ploygon链上通过PolygonBridge的depositFor函数进行充币;
ETH主网调用PolygonBridge的exit函数提币;
复制提取ETH主网proposer提交的headerRoot;
在ETHW中重放上一步提取的proposer的签名消息;
在ETHW中的PolygonBridge上调用exit进行提币
为什么会发生这种情况?
从上面分析的两个例子中,不难发现这两个协议在ETHW上遭遇重放攻击是因为协议本身没有做好防重放的保护,导致协议对应的资产在分叉链上被掏空。但是由于这两个桥本身并不支持ETHW分叉链,所以用户并没有遭受任何损失。但我们要考虑的事情是为什么这两个桥在设计之初就没有加入重放保护的措施呢?其实原因很简单,因为无论是OmniBridge还是PolygonBridge,他们设计的应用场景都非常单一,只是用于到自己指定的对应链上进行资产转移,并没有一个多链部署的计划,所以没有重放保护而言对协议本身并不造成安全影响。
反观ETHW上的用户,由于这些桥本身并不支持多链场景,如果用户在ETHW分叉链上进行操作的话,反而会在ETH主网上遭受消息重放攻击。
以UniswapV2为例,目前在UnswapV2的pool合约中,存在permit函数,该函数中存在变量PERMIT_TYPEHASH,其中包含变量DOMAIN_SEPARATOR。
此变量最早在EIP712中定义,该变量中含有chainId,在设计之初就包含可能的多链场景的重放预防,但是根据uniswapV2pool合约的逻辑,如下:
DOMAIN_SEPARATOR在构造函数中已经定义好,也就是说在硬分叉后,就算链本身的chainId已经改变,pool合约也无法获取到新的chianId来更新DOMAIN_SEPARATOR,如果未来用户在ETHW上进行相关授权,那么ETHW上的permit签名授权可以被重放到ETH主网上。除了Uniswap外,类似的协议还有很多,比如特定版本下的yearnvault合约,同样也是采用了固定DOMAIN_SEPARATOR的情况。用户在ETHW上交互的时候也需要防范此类协议的重放风险。
协议设计之初的防范措施
对于开发者而言,在为协议本身定制消息签名机制的时候,应该考虑后续可能的多链场景,如果路线图中存在多链部署的可能,应该把chainId作为变量加入到签名消息中,同时,在验证签名的时候,由于硬分叉不会改变分叉前的任何状态,用于验证签名消息的chainId不应该设置为合约变量,而应该在每次验证前重新获取,然后进行验签,保证安全性。
影响
对用户的影响
普通在协议不支持分叉链的情况下,应尽量不在分叉链上进行任何操作,防止对应的签名消息重放到主网上,造成用户在主网上损失资产
对交易平台和托管机构的影响
由于很多交易平台本身都支持了ETHW
Token
,所以这些由于攻击而提取出来的
Token
都有可能充值到交易平台中进行抛售,但需要注意的是,此类攻击并不是链共识本身的问题而导致的恶意增发,所以对交易平台而言,此类攻击无需进行额外的防范
总结
随着多链场景的发展,重放攻击从理论层面逐步变成主流的攻击方式,开发者应当仔细考量协议设计,在进行消息签名机制的设计时,尽可能的加入chainId等因子作为签名内容,并遵循相关的最佳实践,防止用户资产的损失。
Cobo是亚太地区最大的加密货币托管机构,自成立以来已为超过500家行业顶尖机构以及高净值人士提供卓越的服务,在保证加密资产安全存储的前提下,同时兑现了加密资产的稳健增益,深受全球用户信赖。Cobo专注于搭建可扩展的基础设施,为机构管理多类型的资产提供安全托管、资产增值、链上交互以及跨链跨层等多重解决方案,为机构迈向Web3.0转型提供最强有力的技术底层支持和赋能。Cobo旗下包含CoboCustody、CoboDaaS、CoboMaaS、Cobo?StaaS、CoboVentures、CoboDeFiYieldFund等业务板块,满足您的多种需求。
来源:金色财经
华尔街本周开始处于修正模式,美国三大指数在9月26日星期一修正了1%。然而,比特币和更广泛的加密市场已经出人意料地向北移动,比特币价格突破了20,000美元的水平.
1900/1/1 0:00:00自1990年以来,由于人类活动,包括为农业耕作和伐木而开垦土地,已经损失了4.2亿公顷森林。截至2020年,森林覆盖面积约占世界陆地总面积的31%.
1900/1/1 0:00:00作者|霍学文,北京银行党委书记、董事长发表于《中国金融》2022年9月增刊总书记指出,数字经济发展速度之快、辐射范围之广、影响程度之深前所未有.
1900/1/1 0:00:00原文标题:《专访Infura联合创始人:我们为什么计划在2023年推出去中心化协议》原文作者:SHL,PANewsInfura是以太网络API的重要接口.
1900/1/1 0:00:00谈一谈对行情的展望大饼从6.9w跌到现在大约1.9w大约跌了0.7,而刻舟求剑按照往年每四年下跌百分之八十,大概是在1.2-1.4左右,我相信很多人都在等待这个位置梭哈抄底这个位置.
1900/1/1 0:00:002022年10月7日,Medusa即将与你相见时代大潮浩浩汤汤,近期局势风云巨变。进入2022年以来,全球经济陷入加剧衰退的新一轮周期.
1900/1/1 0:00:00