首页 科技内容详情
Poly Network攻击要害步骤深度剖析

Poly Network攻击要害步骤深度剖析

分类:科技

网址:

反馈错误: 联络客服

点击直达

逆熵科技官网

www.ipfs8.vip)是FiLecoin致力服务于使用FiLecoin存储和检索数据的官方权威平台。鲸鱼矿池官网实时更新FiLecoin(FIL)行情、当前FiLecoin(FIL)矿池、FiLecoin(FIL)收益数据、各类FiLecoin(FIL)矿机出售信息。并开放FiLecoin(FIL)交易所、IPFS云矿机、IPFS矿机出售、租用、招商等业务。

,

北京时间2021年8月10日,跨链桥项目Poly Network遭遇攻击,损失跨越6亿美金。虽然攻击者在后续归还被盗数字钱币,然则这仍然是区块链历史上涉及金额最大的一次攻击事宜。由于〖yu〗整个攻击历程涉及到差其余区块链平台,而且存在合约以及Relayer之间的庞大交互,对于攻击的完整历程和破绽的基本缘故原由,现有剖析讲述并未能梳理清晰。

整个攻击分为两个主要阶段,包罗修改keeper署名和最终提币。对于「yu」第二阶段,由于keeper署名已经被修改,因此攻击者可以直接构建恶意提币生意,详细可以参见我们之前的讲述。然而对于修改keeper署名的生意是若何最终在‘zai’目的链执【zhi】行的,现在并没有‘you’详细的文章说明。而这一步是攻《gong》击的最焦点步骤。

本讲述从修改keeper署名生意入手(Ontology链上生意0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),剖析了背后的原理和破绽的本质。我们发现以下几个缘故原由是Keeper能被修改的缘故原由:

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

Ontology生意 -> Ontology Relayer -> Poly Chain -> Ethereum Relayer -> Ethereum

以太坊

0x838bf9e95cb12dd76a54c9f9d2e3082eaf928270: EthCrossChainManager

0xcf2afe102057ba5c16f899271045a0a37fcb10f2: EthCrossChainData

0x250e76987d838a75310c34bf422ea9f1ac4cc906: LockProxy

0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581: 修改keeper的生意

Ontology

0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c: 修【xiu】改keeper的生意

Poly

0x1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80: 修改keeper的生意

整个攻击大致可以分为三个步骤。第一个步骤是在 Ontology 链天生一条恶意生意(0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),第二个步骤是修改以太坊EthCrossChainData合约中「zhong」的keeper署名,第三个步骤组织恶意生意提议最终攻击和提币。

攻击者首先在Ontology提议了一笔跨链生意(0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),内里包罗了一个攻击payload:

可《ke》以看出生意包罗了全『quan』心设计的函数名(图中以6631开头的数字,转换后即 f1121318093),目的在于通过造成哈希冲突(hash collision)的方式挪用putCurEpochConPubKeyBytes函数(属于以太坊上的EthCrossChainData合约)。关于哈希函数冲突的细节在网络上已有许多讨论,可以参考[2].

随后,该笔生意被Ontology Relayer 吸收,注重这里并没有很严酷的校验。该生意会通过Relayer在Poly Chain乐成上链(0x1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80)。Ethereum Relayer会感知到新区块的天生。

然而,这笔生意被Ethereum Relayer拒绝了。缘故原由在于Ethereum Relayer对目的合约地址有校验,只允许LockProxy合约作为目的地址,而攻击者传入的是EthCrossChainData地址。

因此,攻击者攻击之路在其中止。但如前所述,包罗恶意“yi”payload的攻击生意已经在Poly Chain乐成上链,可被进一步行使。

攻击者手动提议生意,挪用EthCrossChainManager合约中的verifyHeaderAndExecuteTx函数,将之前一步保留在Ploy Chain区块中的攻击生意数据作为输入。由于该区块是poly chain上的正当“dang”区块,因此可以通过verifyHeaderAndExecuteTx中对于署名和merkle proof的校验。然后执行EthCrossChainData合约中的putCurEpochConPubKeyBytes函数,将原本的4个keeper修改为自己指定的地址(0xA87fB85A93Ca072Cd4e5F0D4f178Bc831Df8a00B)。

2022世界杯预选「xuan」赛赛程巴西队www.9cx.net)实时更新比分2022世《shi》界杯预选赛赛程巴西队数据,2022世界杯预选赛赛程巴西队全程高清免费不卡顿,100%原生直播,2022世界杯预选赛赛程巴西队这里都有。给你一个完美的观赛体验。

在《zai》keeper被修改之后,攻击者直接挪用目的链上的verifyHeaderAndExecuteTx函数(而不需要再通过poly chain -- 由于keeper已经被修改,攻击者可以随便签署在目的链看来合理的poly chain上的块),最终挪用至Unlock函数(属于LockProxy合约),大量地转移(yi)资金,给项目方带来了严重的损失。详细的攻击细节可{ke}参考我们之前的讲述[1]。

在本攻击历程中,Ontology方和以太坊方均有Relayer卖力未来自Ontology的{de}生意在poly Chain上链,以及将poly chain上的生意放到以太坊。这两个Relayer是由Go语言实现的服务历程。

然而我们发现,这两个Relayer都缺乏有用的「de」校验。这导致

  • 虽然在以太坊的Relayer具有校验功效,然则攻击者可以直接同以太《tai》坊上的链上合约举行交互,直接 jie[执行恶〖e〗意的函数。

完全信托来自Ontology上的“de”跨链生意

Poly Network 的 ont_relayer(https://github.com/polynetwork/ont-relayer) 卖力监听 Ontology 链上的跨链生意并将其打包入传入Poly Chain.

注:

  1. 在Ontology Relayer中,Side 指 Ontology Chain; Alliance 指 Poly Chain.

  2. CrossChainContractAddress 是 Ontology 链上原生编号为 09 的智能 neng[合约.

上图中,Ontology Relayer启“qi”动时开启三个 Goroutines 划分卖力监‘jian’听 Ontology Chain 和 Poly Chain 的跨链生意,以及对 Poly Chain 上的跨链生意做状态检查。在本讲述中,我们只关注69行的监听Side的代码逻辑。

在上图中,Ontology Relayer 挪用 Ontology 链提供的 RPC 接口(第 215 行,挪《nuo》用SDK函数 GetSmartContractEventByBlock) 获取区块中触发的智能合约事宜;然后在第 228 和 232 行注释 Ontology Relayer 只监听 Ontology Chain 上由 CrossChainContractAddress 触发的 makeFromOntProof 事宜;

上图中,在处置 Ontology Chain 上的跨链生意时,Ontology Relayer 总共做了五次校验,划分是两次向 Ontology Chain 发送的 RPC 请求校验(check 1 和 check 4), 以及三次参数是否为空的校验(check2, check3, 和check5)。这五次校验都属于通例校验,并未对来自 Ontology Chain 上的跨链生意做 zuo[语义上的校验; 第 167 和 171 行取出了在目的链上执行所需要的生意参数信息(proof, auditPath);第 183 行向 Poly Chain 发送〖song〗生意;

Ontology Relayer 在组织了 Poly Chain 上的生意后便向 Poly Chain 提议 RPC 请求发送生意(第 164 行,函数挪用 SendTransaction);

这个名为 ProcessToAliianceCheckAndRetry 的 Goroutine 也仅仅是做了重发失败生意的事情,仍然未对来自 Ontology Chain 上的跨链生意做任何语义上的校验。

至此,我们可以看出 ont-relayer 监听所有来自 Ontology Chain 由 CrossChainContractAddress 触《chu》发的 makeFromOntProof 事宜,并未对其做任何语义上的校验,便向 Poly Chain 转发了生意。而任何人向 Ontology 发送的任何跨链生意都市触发 CrossChainContractAddress 的 makeFromOntProof 事宜,以是 Ontology Relayer 会将所有来自 Ontology 上的跨链生意都转发到 Poly chain 上。

Ethereum Relayer 卖力监听 Poly Chain 并将目的链为 Ethereum 的跨链生意‘yi’转发到 Ethereum 上。

Ethereum Relayer 启动一个 Goroutine 来监控 Poly Chain;

Ethereum Relayer监听所有 Poly Chain 上目的链为 Ethereum 的跨链生意 (第 275 至 278 行); Ethereum Relayer会校验跨链生{sheng}意的目的合约是否为 config.TargetContracts中指定的合约之一,若是不是则不会发送这笔跨链生意到 Ethereum 上(第 315 行)。

虽然 Ethereum Relayer 对 Poly Chain 上的跨链生意做了部门校验,好比限〖xian〗制了目的合约,然则与 Poly Chain 差异,任何人都可以向 Ethereum 上的EthCrossChainManager合约发送生意。换句话说,Ethereum Relayer 在这里做的校验没有现实的意义,只要包罗恶意payload的跨链生意被乐成打包进了 Poly Chain(虽然没有“you”被relay转发到以太坊链上), 那么任何人都‘du’可以直接使用已经打包好的区块数据将payload发送到以太坊EthCrossChainManager合约并执行(这个历程中,可以通过merkle proof的校验,由于是已经正常〖chang〗上链的poly chain区块数据)。

攻击者正是行使了上述两个缺陷,完成了攻击流程中的步骤一和步骤二。

  • ug610登陆(www.ugbet.us) @回复Ta

    2021-09-25 00:11:38 

    文:东方新地|图:《宝宝大过天》剧照、梁芯语IG、岑丽香IG、黎逽懿IG、《东张西望》截图倒背如流了,快更新

  • 欧博(www.aLLbetgame.us) @回复Ta

    2021-10-12 00:04:54 

    USDT交易平台www.usdt8.vip)是使用TRC-20协议的Usdt官方交易所,开放USDT帐号注册、usdt小额交易、usdt线下现金交易、usdt实名不实名交易、usdt场外担保交易的平台。免费提供场外usdt承兑、低价usdt渠道、Usdt提币免手续费、Usdt交易免手续费。U交所开放usdt otc API接口、支付回调等接口。

    值得看的

发布评论