木星链 木星链
Ctrl+D收藏木星链

AIN:Cobo安全团队:ETH硬分叉里的隐藏风险和套利机会

作者:

时间:1900/1/1 0:00:00

前言

随着ETH升级PoS共识系统,原有的PoW机制的ETH链在部分社区的支持下成功硬分叉。但是,由于某些链上协议在设计之初没有对可能的硬分叉做好准备,导致对应的协议在ETHW分叉链存在一定的安全隐患,其中最为严重的安全隐患则是重放攻击。在完成硬分叉后,ETHW主网出现了至少2起利用重放机制进行的攻击,分别是OmniBridge的重放攻击和PolygonBridge的重放攻击。本文将以这两个事件作为案例,分别分析重放攻击对分叉链的影响,以及协议应如何防范此类攻击。重放的类型

首先,在开始分析之前,我们需要先对重放攻击的类型做一个初步的了解,一般而言,我们对重放攻击分成两类,分别是交易重放和签名消息重放。下面,我们来分别说下这两类重放机制的区别交易重放

交易重放指的是将在原有链的交易原封不动的迁移到目标链的操作,属于是交易层面上的重放,重放过后交易也是可以正常执行并完成交易验证。最著名的案例莫过于Wintermute在Optimism上的攻击事件,直接导致了超2000万OP代币的损失。但是在EIP155实施以后,由于交易的签名本身带有chainId(一种用于链本身区别与其他分叉链的标识符),在重放的目标链chainId不同的情况下,交易本身是无法完成重放的。签名消息重放

Bitcoin.org持有人Cobra:永远不会撤下比特币白皮书:Bitcoin.org持有人Cobra昨天发推称:中本聪将比特币白皮书上传到Bitcoin.org,白皮书被成千上万篇学术论文应用。我们撤下它将是对他遗产的背叛,这永远不会发生。此前,Cobra发布对抗CSW指控的文章后,BitMEX、火币等多家交易所宣布将保留比特币白皮书。[2021/1/24 13:21:02]

签名消息重放区别于交易重放,是针对的用私钥签名的消息(e

在这个函数中,首先会根据#L2行的签名检查来确定提交的签名是不是由指定的validator进行签名,然后再在#L11行对data消息进行解码。从解码内容上看,不难发现,返回字段中包含了chainId字段,那么是不是说明无法进行签名消息重放呢?我们继续分析。function_executeMessage(bytes32msgId,addresssender,addressexecutor,uint32gasLimit,uint8dataType,uint256memorychainIds,bytesmemorydata)internal{require(_isMessageVersionValid(msgId));require(_isDestinationChainIdValid(chainIds));require(!relayedMessages(msgId));setRelayedMessages(msgId,true);processMessage(sender,executor,msgId,gasLimit,dataType,chainIds,data);}通过追查_executeMessage函数,发现函数在#L11行对chaindId进行了合法性的检查function_isDestinationChainIdValid(uint256_chainId)internalreturns(boolres){return_chainId==sourceChainId();}functionsourceChainId()publicviewreturns(uint256){returnuintStorage;}通过继续分析后续的函数逻辑,不难发现其实针对chainId的检查其实并没有使用evm原生的chainId操作码来获取链本身的chainId,而是直接使用存储在uintStorage变量中的值,那这个值很明显是管理员设置进去的,所以可以认为消息本身并不带有链标识,那么理论上就是可以进行签名消息重放的。由于在硬分叉过程中,分叉前的所有状态在两条链上都会原封不动的保留,在后续xDAI团队没有额外操作的情况下。分叉后ETHW和ETH主网上OmniBridge合约的状态是不会有变化的,也就是说合约的validator也是不会有变化的。根据这一个情况,我们就能推断出validator在主网上的签名也是可以在ETHW上完成验证的。那么,由于签名消息本身不包含chainId,攻击者就可以利用签名重放,在ETHW上提取同一个合约的资产。PolygonBridge

Cobo Custody及200家客户将率先支持Filecoin:亚洲领先的钱包开发及数字资产托管服务商Cobo Custody宣布即将率先支持Filecoin,其合作的200多家客户可第一时间、零成本接入Filecoin,无需额外开发。

Filecoin作为2020年备受瞩目的项目,通过token激励模式在IPFS上构建了一个去中心化存储市场,主网预计将于今年8月中下旬正式上线。

Cobo Custody是面向全球机构客户与合格投资者的钱包开发及数字资产托管服务。作为亚洲最大的托管机构,Cobo Custody以最高安全级的HSM加密机、多重签名及冷热分离存储为安全保障基础,已服务于交易所、钱包、资管平台等200多家机构客户。[2020/6/30]

和OmniBridge一样,PolygonBridge是用于在Polygon和ETH主网进行资产转移的桥。与OmniBridge不同,PolygonBridge依赖区块证明进行提款,逻辑如下:functionexit(bytescalldatainputData)externaloverride{//...省略不重要逻辑//verifyreceiptinclusionrequire(MerklePatriciaProof

Cobo宣布支持MDU Staking服务:Cobo钱包宣布成为MDU Staking计划主要节点之一,全面支持MDU的充提及Staking服务。

MDUKEY是一个自我主权隐私数据系统,通过区块链技术将隐私、安全性、透明度和个人权利转变为数字身份,相应的密钥保存在数字钱包中。

Cobo钱包致力于打造一站式数字资产存储和管理平台,旨在为用户提供安全、可靠的存储与支付环境,目前已支持40多种主流数字资产、900多种代币。[2020/6/2]

通过函数逻辑,不难发现合约通过2个检查确定消息的合法性,分别是通过检查transactionRoot和BlockNumber来确保交易真实发生在子链(PloygonChain),第一个检查其实可以绕过,因为任何人都可以通过交易数据来构造属于自己的transactionRoot,但是第二个检查是无法绕过的,因为通过查看_checkBlockMembershipInCheckpoint逻辑可以发现:function_checkBlockMembershipInCheckpoint(uint256blockNumber,uint256blockTime,bytes32txRoot,bytes32receiptRoot,uint256headerNumber,bytesmemoryblockProof)privateviewreturns(uint256){(bytes32headerRoot,uint256startBlock,,uint256createdAt,)=_checkpointManager

声音 | Cobra:比特币才是金融体系开放的重要一步:眼镜蛇Cobra刚刚发布推文称,只有硅谷的公司才会推出一款拥有黑名单和冻结资金能力的稳定币,然后宣布这是朝着更开放的金融体系迈出的“重要一步”。比特币是迈向开放金融体系的重要一步,稳定币只是PayPal 2.0。[2018/10/24]

对应的headerRoot是从_checkpointManager合约中提取的,顺着这个逻辑我们查看_checkpointManager设置headerRoot的地方functionsubmitCheckpoint(bytescalldatadata,uintcalldatasigs)external{(addressproposer,uint256start,uint256end,bytes32rootHash,bytes32accountHash,uint256_borChainID)=abi

此变量最早在EIP712中定义,该变量中含有chainId,在设计之初就包含可能的多链场景的重放预防,但是根据uniswapV2pool合约的逻辑,如下:constructor()public{uintchainId;assembly{chainId:=chainid}DOMAIN_SEPARATOR=keccak256(abi

COBINHOOD将于2月1日上线VOISE:COBINHOOD发布推特预告,将于2月1日上线VOISE。VOISE是首个基于以太坊区块链的音乐平台,于1月25日正式推出。[2018/1/31]

DOMAIN_SEPARATOR在构造函数中已经定义好,也就是说在硬分叉后,就算链本身的chainId已经改变,pool合约也无法获取到新的chianId来更新DOMAIN_SEPARATOR,如果未来用户在ETHW上进行相关授权,那么ETHW上的permit签名授权可以被重放到ETH主网上。除了Uniswap外,类似的协议还有很多,比如特定版本下的yearnvault合约,同样也是采用了固定DOMAIN_SEPARATOR的情况。用户在ETHW上交互的时候也需要防范此类协议的重放风险。协议设计之初的防范措施

对于开发者而言,在为协议本身定制消息签名机制的时候,应该考虑后续可能的多链场景,如果路线图中存在多链部署的可能,应该把chainId作为变量加入到签名消息中,同时,在验证签名的时候,由于硬分叉不会改变分叉前的任何状态,用于验证签名消息的chainId不应该设置为合约变量,而应该在每次验证前重新获取,然后进行验签,保证安全性。影响

对用户的影响

普通在协议不支持分叉链的情况下,应尽量不在分叉链上进行任何操作,防止对应的签名消息重放到主网上,造成用户在主网上损失资产对交易所和托管机构的影响

由于很多交易所本身都支持了ETHW代币,所以这些由于攻击而提取出来的代币都有可能充值到交易所中进行抛售,但需要注意的是,此类攻击并不是链共识本身的问题而导致的恶意增发,所以对交易所而言,此类攻击无需进行额外的防范总结

随着多链场景的发展,重放攻击从理论层面逐步变成主流的攻击方式,开发者应当仔细考量协议设计,在进行消息签名机制的设计时,尽可能的加入chainId等因子作为签名内容,并遵循相关的最佳实践,防止用户资产的损失。

标签:AINHAICHAChaindatachainVINchainFESSChainAwardChain

以太坊交易热门资讯
DID:全景解读去中心化身份赛道:DID灵魂三问

关于DID的讨论随处可见,但DID的概念似乎有些宽泛、令人困惑;你是否期待有人能帮你把DID这件事给梳理清楚?那就请不要错过本文!摘要DID现在一般是「去中心化身份」的简称.

1900/1/1 0:00:00
ETH:从四个方面探讨以太坊合并后的市场变化

本周趋势随着抛售压力的增加和矿工的离去,ETHW价格直线下跌。 以太坊的工作量证明(Proof-of-Work)一开始就不太顺利.

1900/1/1 0:00:00
ETH:闷声发大财?链上卫士解析“ETH分叉套利20万刀”细节

2022年9月15日14时42分,欧科云链OKLink多链浏览器监测到以太坊Merge首个PoS区块诞生,自此以太坊共识机制正式从PoW转为PoS.

1900/1/1 0:00:00
MOS:仰望Cosmos星空的明与暗:全面解析ATOM 2.0

摘要作为第三代区块链,CosmosSDK和TendermintBFT降低了开发和运行公链的门槛.

1900/1/1 0:00:00
加密货币:Bankless创始人:加密「群英像」——加密僧侣、信徒、子

对外界来说,加密货币只是互联网的一个角落,充满了和局。但Bankless对加密货币有不同的看法:一个充满机遇的土地、一个新的前沿、一个数字世界,建立在免费和开源软件之上,使我们能够打破华尔.

1900/1/1 0:00:00
XEN:对话XEN创始人:目标是挑战比特币,成为世界上占主导地位的点对点现金

本文来自SevenUpDAO。XENCrypto,一场突然在加密世界爆火的社会实验,引起了以太坊又一场gaswar.

1900/1/1 0:00:00