前言
北京时间2021年8月10日,跨链桥项目PolyNetwork遭遇攻击,损失超过6亿美金。虽然攻击者在后续偿还被盗数字货币,但是这仍然是区块链历史上涉及金额最大的一次攻击事件。由于整个攻击过程涉及到不同的区块链平台,并且存在合约以及Relayer之间的复杂交互,对于攻击的完整过程和漏洞的根本原因,现有分析报告并未能梳理清楚。
整个攻击分为两个主要阶段,包括修改keeper签名和最终提币。对于第二阶段,由于keeper签名已经被修改,因此攻击者可以直接构建恶意提币交易,具体可以参见我们之前的报告。然而对于修改keeper签名的交易是如何最终在目标链执行的,目前并没有详细的文章阐明。而这一步是攻击的最核心步骤。
本报告从修改keeper签名交易入手(Ontology链上交易0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),分析了背后的原理和漏洞的本质。我们发现以下几个原因是Keeper能被修改的原因:
源链上(Ontology)的relayer没有对上链的交易做语义校验,因此包含修改keeper恶意交易可以被打包到polychain上
目标链上(以太坊)上的relayer虽然对交易做了校验,但是攻击者可以直接调用以太坊上的EthCrossChainManager合约最终调用EthCrossChainData合约完成签名修改
攻击者精心够着了能导致hash冲突的函数签名,从而调用putCurEpochConPubKeyBytes完成对签名的修改
ZenGo:从Polygon官方跨链桥转至以太坊的ERC-20代币中有价值超2700万美元的资产并未被申领:11月29日消息,加密货币钱包ZenGo发布文章称,在研究对Polygon的支持时,发现Polygon官方跨链桥合约在以太坊端相较Polygon端多出了价值约2700万美元的资产。
ZenGo称,此举或由于从Polygon上通过官方跨链桥跨链至以太坊后需要手动申领跨链的代币,但很多用户并未执行申领操作。其中,0x0076开头的地址从Polygon上向以太坊跨链转账超812枚WETH和超54枚WBTC(总价值超200万美元)但均未在以太坊端进行申领。[2022/11/29 21:08:25]
涉及交易和合约
整个过程中的交互流程如下:
Ontology交易->OntologyRelayer->PolyChain->EthereumRelayer->Ethereum
以太坊
0x838bf9e95cb12dd76a54c9f9d2e3082eaf928270:EthCrossChainManager
0xcf2afe102057ba5c16f899271045a0a37fcb10f2:EthCrossChainData
0x250e76987d838a75310c34bf422ea9f1ac4cc906:LockProxy
0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581:修改keeper的交易
Quadrant与Polygon合作推出游戏化兴趣点数据收集平台Geolancer:移动定位和数据情报公司Quadrant已经与Polygon合作推出Geolancer,这是一个游戏化的兴趣点(POI)数据收集平台,允许用户利用专用的智能手机应用程序绘制兴趣点(如便利店、餐馆、商店和他们附近的其他地方),以此获得Quadrant的原生代币eQUAD。(Crypto Daily)[2021/4/24 20:54:11]
Ontology
0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c:修改keeper的交易
Poly
0x1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80:修改keeper的交易
攻击流程
整个攻击大致可以分为三个步骤。第一个步骤是在Ontology链生成一条恶意交易(0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),第二个步骤是修改以太坊EthCrossChainData合约中的keeper签名,第三个步骤构造恶意交易发起最终攻击和提币。
步骤一
攻击者首先在Ontology发起了一笔跨链交易,里面包含了一个攻击payload:
声音 | 波卡创始人 Gavin Wood:Polkadot CC1 即将在 12 月份推出:在 Polkadot 社区中,创始人 Gavin Wood 表示,Polkadot 正在进行最终的审计,如果 Kusama 一切正常,同时审计没有发现任何致命问题的话,那 \"Polkadot CC1\"这条最终主网的候选链应该会在 12 月上线。就像 Kusama 一样,Polkadot CC1 也是分阶段推出,直到这条链上的节点稳定,治理方面的发展才会开始推进。不过鉴于大部分节点在 Kusama 网络上运行良好,所以在 Polkadot CC1 上应该也不会出现大问题。而最重要的部分——平行链、平行线程,以及链间通信会等到完善和审计后推出,这些功能也会在 Kusama 上先推出。在对社群成员的回复中,Gavin 表示代币 DOT 可以在 Polkadot CC1 上流通,节点可以进行 staking,但不交易转账暂时还不能进行。(区块律动)[2019/11/9]
可以看出交易包含了精心设计的函数名,目的在于通过造成哈希冲突的方式调用putCurEpochConPubKeyBytes函数。关于哈希函数冲突的细节在网络上已有很多讨论,可以参考.
随后,该笔交易被OntologyRelayer接收,注意这里并没有很严格的校验。该交易会通过Relayer在PolyChain成功上链。EthereumRelayer会感知到新区块的生成。
动态 | Polkadot或难以达到12亿美元估值:据coindesk报道,以太坊联合创始人Gavin Wood的区块链项目Polkadot或难以达到12亿美元估值。据报道,自1月份以来,该项目背后的瑞士非营利组织Web3基金会一直试图通过私人代币销售筹集高达6000万美元的资金。据知情人士透露,三家中国基金已同意投资1500万美元于该项目的DOT代币。然而,消息人士表示,这三位投资者同意支付的价格将使该项目的估值低于10亿美元,低于Polkadot正寻求的独角兽门槛。 目前尚不清楚这三家基金购买了多少代币,或者除了他们之外有多少投资者参与,但有消息称Polkadot只能出售预期销售50万枚DOT中的70%。[2019/6/6]
然而,这笔交易被EthereumRelayer拒绝了。原因在于EthereumRelayer对目标合约地址有校验,只允许LockProxy合约作为目标地址,而攻击者传入的是EthCrossChainData地址。
因此,攻击者攻击之路在此中断。但如前所述,包含恶意payload的攻击交易已经在PolyChain成功上链,可被进一步利用。
步骤二
攻击者手动发起交易,调用EthCrossChainManager合约中的verifyHeaderAndExecuteTx函数,将之前一步保存在PloyChain区块中的攻击交易数据作为输入。由于该区块是polychain上的合法区块,因此可以通过verifyHeaderAndExecuteTx中对于签名和merkleproof的校验。然后执行EthCrossChainData合约中的putCurEpochConPubKeyBytes函数,将原本的4个keeper修改为自己指定的地址。
公告 | Poloniex平台ERC20代币存取已恢复:Poloniex发布公告称,该平台所有 ERC20代币的存取功能都已恢复。今日凌晨,Poloniex上的CVC、GNO、NXC、OMG、REP、STORJ和ZRX存取曾出现异常。[2018/6/28]
步骤三
在keeper被修改之后,攻击者直接调用目标链上的verifyHeaderAndExecuteTx函数,最终调用至Unlock函数,大量地转移资金,给项目方带来了严重的损失。具体的攻击细节可参考我们之前的报告。
Relayer代码分析
在本攻击过程中,Ontology方和以太坊方均有Relayer负责将来自Ontology的交易在polyChain上链,以及将polychain上的交易放到以太坊。这两个Relayer是由Go语言实现的服务进程。
然而我们发现,这两个Relayer都缺乏有效的校验。这导致
攻击者可以在Ontology构造一条恶意的跨链交易,并且成功打包到polychain上。
虽然在以太坊的Relayer具有校验功能,但是攻击者可以直接同以太坊上的链上合约进行交互,直接执行恶意的函数。
OntologyRelayer完全信任来自Ontology上的跨链交易
PolyNetwork的?ont_relayer(https://github.com/polynetwork/ont-relayer)?负责监听Ontology链上的跨链交易并将其打包入传入PolyChain.
注:
在OntologyRelayer中,Side指OntologyChain;Alliance指PolyChain.
CrossChainContractAddress是Ontology链上原生编号为09的智能合约.
上图中,OntologyRelayer启动时开启三个Goroutines分别负责监听OntologyChain和PolyChain的跨链交易,以及对PolyChain上的跨链交易做状态检查。在本报告中,我们只关注69行的监听Side的代码逻辑。
在上图中,OntologyRelayer调用Ontology链提供的RPC接口(第215行,调用SDK函数GetSmartContractEventByBlock)获取区块中触发的智能合约事件;然后在第228和232行表明OntologyRelayer只监听OntologyChain上由CrossChainContractAddress触发的makeFromOntProof事件;
上图中,在处理OntologyChain上的跨链交易时,OntologyRelayer总共做了五次校验,分别是两次向OntologyChain发送的RPC请求校验(check1和check4),以及三次参数是否为空的校验(check2,check3,和check5)。这五次校验都属于常规校验,并未对来自OntologyChain上的跨链交易做语义上的校验;第167和171行取出了在目标链上执行所需要的交易参数信息;第183行向PolyChain发送交易;
OntologyRelayer在构造了PolyChain上的交易后便向PolyChain发起RPC请求发送交易(第164行,函数调用SendTransaction);
这个名为ProcessToAliianceCheckAndRetry的Goroutine也仅仅是做了重发失败交易的工作,仍然未对来自OntologyChain上的跨链交易做任何语义上的校验。
至此,我们可以看出ont-relayer监听所有来自OntologyChain由CrossChainContractAddress触发的makeFromOntProof事件,并未对其做任何语义上的校验,便向PolyChain转发了交易。而任何人向Ontology发送的任何跨链交易都会触发CrossChainContractAddress的makeFromOntProof事件,所以OntologyRelayer会将所有来自Ontology上的跨链交易都转发到Polychain上。
EthereumRelayer中的无效校验
EthereumRelayer?负责监听PolyChain并将目标链为Ethereum的跨链交易转发到Ethereum上。
EthereumRelayer启动一个Goroutine来监控PolyChain;
EthereumRelayer监听所有PolyChain上目标链为Ethereum的跨链交易;EthereumRelayer会校验跨链交易的目标合约是否为config.TargetContracts中指定的合约之一,如果不是则不会发送这笔跨链交易到Ethereum上。
虽然EthereumRelayer对PolyChain上的跨链交易做了部分校验,比如限制了目标合约,但是与PolyChain不同,任何人都可以向Ethereum上的EthCrossChainManager合约发送交易。换句话说,EthereumRelayer在这里做的校验没有实际的意义,只要包含恶意payload的跨链交易被成功打包进了PolyChain,那么任何人都可以直接使用已经打包好的区块数据将payload发送到以太坊EthCrossChainManager合约并执行。
攻击者正是利用了上述两个缺陷,完成了攻击流程中的步骤一和步骤二。
写在最后
通过对整个攻击流程的完整梳理和详尽分析,我们认为Relayer的不完整校验是攻击得以发生的根本原因。其它方面则更多地属于比较精彩的攻击技巧。总而言之,跨链的校验和鉴权是跨链系统安全的关键所在,值得社区付出更多的努力。
标签:CHAAINRELAYOLOblockchainresearchandapplicationAINU币Exrelaypoloniex交易所可靠吗
Glassnode最近的区块链数据显示,立法者和监管机构对加密市场日益严格的审查,包括围绕美国基础设施法案的加密税收报告条款的辩论,可能会吓到散户投资者,但不会吓到机构投资者.
本文出自TheTie,以下为编译部分:最近几个月,以太坊有大量新用户流入,在过去30天内创建了超过300万个唯一地址.
上市四个月,Coinbase究竟有多受宠?近日,已有多家机构披露了其13F季度持仓报告,ARK、贝莱德、摩根大通、德银、摩根士丹利、高盛等机构均在二季度建仓Coinbase.
去中心化金融(DeFi)已成为加密领域人们最爱讨论的话题之一,每月都有数十个新项目推出。究其本质,DeFi应用程序支持创建自动执行的智能合约,一般来说,这些智能合约有助于加密资产的发行、借贷、交.
应一部分关注TokenInsight的朋友的呼声:我们准备了DeFi周报栏目,每周更新。以短篇PDF的形式向各位读者转述过去一周DeFi市场发生的情况,包括但不限于融资、项目进展、交易数据等,欢.
虚拟财产依赖于计算机互联网络而存在,同时具有独立于其他网络资源或现实财产的价值。随着互联网时代的不断深入发展,将虚拟财产的保护作为单独的一条法律规定写入《民法典》,明确了虚拟财产作为财产权客体的.