月亮链 月亮链
Ctrl+D收藏月亮链

POL:Poly Network攻击关键步骤深度解析_btyxchain

作者:

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

前言

北京时间2021年8月10日,跨链桥项目PolyNetwork遭遇攻击,损失超过6亿美金。虽然攻击者在后续偿还被盗数字货币,但是这仍然是区块链历史上涉及金额最大的一次攻击事件。由于整个攻击过程涉及到不同的区块链平台,并且存在合约以及Relayer之间的复杂交互,对于攻击的完整过程和漏洞的根本原因,现有分析报告并未能梳理清楚。

整个攻击分为两个主要阶段,包括修改keeper签名和最终提币。对于第二阶段,由于keeper签名已经被修改,因此攻击者可以直接构建恶意提币交易,具体可以参见我们之前的报告。然而对于修改keeper签名的交易是如何最终在目标链执行的,目前并没有详细的文章阐明。而这一步是攻击的最核心步骤。

本报告从修改keeper签名交易入手(Ontology链上交易0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),分析了背后的原理和漏洞的本质。我们发现以下几个原因是Keeper能被修改的原因:

源链上(Ontology)的relayer没有对上链的交易做语义校验,因此包含修改keeper恶意交易可以被打包到polychain上

目标链上(以太坊)上的relayer虽然对交易做了校验,但是攻击者可以直接调用以太坊上的EthCrossChainManager合约最终调用EthCrossChainData合约完成签名修改

攻击者精心够着了能导致hash冲突的函数签名,从而调用putCurEpochConPubKeyBytes完成对签名的修改

涉及交易和合约

整个过程中的交互流程如下:

Poly Network:已暂停服务,正积极与各方接触并评估受影响资产程度:7月2日消息,Poly Network发推称,由于近期遭受攻击,已暂时停止服务,正积极与有关各方接触,并认真评估受影响资产的程度。Poly Network也欢迎网络安全专业人士帮助解决这个问题,将及时通报有关该事件的最新进展。[2023/7/2 22:13:29]

Ontology交易->OntologyRelayer->PolyChain->EthereumRelayer->Ethereum

以太坊

0x838bf9e95cb12dd76a54c9f9d2e3082eaf928270:EthCrossChainManager

0xcf2afe102057ba5c16f899271045a0a37fcb10f2:EthCrossChainData

0x250e76987d838a75310c34bf422ea9f1ac4cc906:LockProxy

0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581:修改keeper的交易

Ontology

0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c:修改keeper的交易

Poly

0x1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80:修改keeper的交易

Polygon Studios计划筹集1亿美元以支持区块链游戏开发商和NFT创建者:以太坊扩容方案Polygon用于发展区块链游戏和NFT的新部门PolygonStudios,正在计划筹集1亿美元资金以支持区块链游戏开发商和NFT创建者,同时与游戏公司雅达利(Atari)合作,旨在成为Web2.0和Web3.0之间的桥梁。为了实现此愿景,PolygonStudios将为区块链游戏和NFT团队提供360°构建和发布支持,促进成熟品牌的发布并提供play-to-earn机会。此前报道,2月份,游戏公司雅达利接入Polygon网络,将其NFT和AtariToken带到了Layer2。7月份,Polygon宣布推出新部门PolygonStudios,用于发展区块链游戏和NFT,帮助开发人员创建支持区块链的游戏及自定义NFT模型和市场,促使Polygon网络吸引更多游戏和NFT的优质品牌和特许。( The Defiant )[2021/7/23 1:11:08]

攻击流程

整个攻击大致可以分为三个步骤。第一个步骤是在Ontology链生成一条恶意交易(0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),第二个步骤是修改以太坊EthCrossChainData合约中的keeper签名,第三个步骤构造恶意交易发起最终攻击和提币。

步骤一

攻击者首先在Ontology发起了一笔跨链交易,里面包含了一个攻击payload:

加密货币资管机构Bitwise在其加密货币指数产品中加入Polygon:加密货币资管机构Bitwise于5月末,对其Bitwise 10 Large Cap Crypto Index指数进行了重组,新加入了Polygon,并移除了Aave。目前,Polygon在Bitwise 10 Large Cap Crypto Index中的权重为1.03%,而比特币的权重为63.92%,以太坊为28.85%。此外,该指数还包括Chainlink、比特币现金和莱特币以及其他加密资产。(Livemint)[2021/6/3 23:08:26]

可以看出交易包含了精心设计的函数名,目的在于通过造成哈希冲突的方式调用putCurEpochConPubKeyBytes函数。关于哈希函数冲突的细节在网络上已有很多讨论,可以参考.

随后,该笔交易被OntologyRelayer接收,注意这里并没有很严格的校验。该交易会通过Relayer在PolyChain成功上链。EthereumRelayer会感知到新区块的生成。

然而,这笔交易被EthereumRelayer拒绝了。原因在于EthereumRelayer对目标合约地址有校验,只允许LockProxy合约作为目标地址,而攻击者传入的是EthCrossChainData地址。

因此,攻击者攻击之路在此中断。但如前所述,包含恶意payload的攻击交易已经在PolyChain成功上链,可被进一步利用。

步骤二

攻击者手动发起交易,调用EthCrossChainManager合约中的verifyHeaderAndExecuteTx函数,将之前一步保存在PloyChain区块中的攻击交易数据作为输入。由于该区块是polychain上的合法区块,因此可以通过verifyHeaderAndExecuteTx中对于签名和merkleproof的校验。然后执行EthCrossChainData合约中的putCurEpochConPubKeyBytes函数,将原本的4个keeper修改为自己指定的地址。

PolkaFoundry等成立Polkadot区块链开发协会(PBDA):4月20日,PolkaFoundry、Rikkeisoft,Sota Tek和Ekoios合作签署谅解备忘录(MOU),成立Polkadot区块链开发协会(PBDA)。PBDA已得到了2,000多名开发人员支持,将成为在Polkadot孵化和建设区块链项目的开发中心。[2021/4/20 20:39:18]

步骤三

在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.

波场版LTC现已正式上线Poloniex和justswap:据最新消息,波场版LTC现已正式上线Poloniex和justswap。据此前消息,莱特币创始人李启威和莱特币基金会官方在推特上转发了波场版WLTC已正式上线的信息。

波场 TRON致力于为去中心化互联网搭建基础设施。旗下的 TRON 协议是最大的基于区块链的去中心化应用操作系统协议之一,为协议上的去中心化应用运行提供高吞吐,高扩展,高可靠性的底层公链支持。波场 TRON 还通过创新的可插拔智能合约平台为以太坊智能合约提供更好的兼容性。[2021/2/15 19:46:11]

注:

在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的不完整校验是攻击得以发生的根本原因。其它方面则更多地属于比较精彩的攻击技巧。总而言之,跨链的校验和鉴权是跨链系统安全的关键所在,值得社区付出更多的努力。

标签:POLAINHAIChainPOLYX价格3X Long Chainlink TokenPolychain Monsters Genesisbtyxchain

比特币价格热门资讯
元宇宙:元宇宙只不过是对数字空间的一次升级_GensoKishi Metaverse

元宇宙概念的膨胀速度似乎比宇宙的膨胀速度的还要快,但很多概念往往不仅没有帮我们更清晰地了解元宇宙,反而让我们陷入更大的困惑.

1900/1/1 0:00:00
区块链:深圳市信息服务业区块链协会教育培训中心揭牌_超级联盟链

8月14日,深圳市信息服务业区块链协会教育培训中心在龙华区鸿荣源壹成环智中心揭牌。本次揭牌仪式汇聚来自全国各地区块链教育行业的专家、大咖,共同见证国内首个区块链应用操作员职业资格培训项目的启动.

1900/1/1 0:00:00
UNI:Uniswap V1/V2/V3 AMM做市全面解析_brc20峰会

作为DeFi领域的头部去中心化交易所,Uniswap一骑绝尘,稳定占据Dex市场TOP1的席位.

1900/1/1 0:00:00
CIR:circle:以商业银行为锚点 打通链上链下的金融场景_CLE

circle要成为一家完全准备金的国家商业银行这个新闻,胖子哥昨天晚上就看到了,本来想给各位老哥在微信群发,由于太晚了就放弃了。这个事情实际上很大,会对区块链行业发展影响深远.

1900/1/1 0:00:00
区块链:Coinbase专访Mina CEO:Justin表示ZK-Snarks就是加密魔法_Revain

MinaProtocol早在2018年第二季度时,就获得CoinbaseVenture的种子轮融资,Coinbase作为宇宙超级大所,也是目前区块链行业所有项目心中的圣殿.

1900/1/1 0:00:00
加密货币:美众议员提出旨在促进宾州区块链发展的两项法案_Pawthereum

金色财经报道,最近成立的美国两党新兴技术核心小组的主席、州众议员NapoleonNelson公布了一组区块链立法方案,旨在促进这一新兴行业在宾夕法尼亚州进行负责任、审慎的扩张.

1900/1/1 0:00:00