比特币
Ctrl+D收藏简单区块链

Poly Network攻击关键因素深层分析_算力

作者:

时间:2021/8/12 8:58:49

Poly Network攻击关键因素深层分析

中国北京时间2021年8月10日,跨链桥新项目Poly Network遭受攻击,损害超出6亿美元。尽管攻击者在事后还款失窃虚拟货币,可是这依然是区块链技术在历史上涉及到额度较大的一次攻击事情。因为全部攻击全过程牵涉到不一样的区块链平台,而且存有合约及其Relayer中间的繁杂互动,针对攻击的详细全过程和系统漏洞的直接原因,目前数据分析报告仍未能整理清晰。

全部攻击分成2个关键环节,包含改动keeper签字和最后转币。针对第二阶段,因为keeper签字早已被改动,因而攻击者能够立即搭建故意转币交易,实际能够参照大家以前的汇报。殊不知针对改动keeper签字的交易是怎样最后在总体目标链实行的,现阶段并沒有详尽的文章内容表明。而这一步是攻击的最关键流程。

本汇报从改动keeper签字交易下手(Ontology链上交易0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),剖析了身后的基本原理和系统漏洞的实质。大家发觉下列好多个缘故是Keeper能被改动的缘故:

源链上(Ontology)的relayer沒有对上弦的交易做词义校验,因而包括改动keeper故意交易能够被装包到poly chain上

总体目标链上(以太币)上的relayer尽管对交易干了校验,可是攻击者能够立即启用以太币上的EthCrossChainManager合约最后启用EthCrossChainData合约进行签字改动

攻击者用心够着了能造成hash矛盾的涵数签字,进而启用putCurEpochConPubKeyBytes进行对签字的改动

全部全过程中的互动步骤以下:

Ontology交易 -> Ontology Relayer -> Poly Chain -> Ethereum Relayer -> Ethereum

以太币

0x838bf9e95cb12dd76a54c9f9d2e3082eaf928270: EthCrossChainManager

0xcf2afe102057ba5c16f899271045a0a37fcb10f2: EthCrossChainData

0x250e76987d838a75310c34bf422ea9f1ac4cc906: LockProxy

0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581: 改动keeper的交易

Ontology

0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c: 改动keeper的交易

Poly

0x1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80: 改动keeper的交易

全部攻击大概能够分成三个流程。第一个流程是在 Ontology 链转化成一条故意交易(0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),第二个流程是改动以太币EthCrossChainData合约中的keeper签字,第三个流程结构故意交易进行最后攻击和转币。

流程一

攻击者最先在Ontology进行了一笔跨链交易(0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),里边包括了一个攻击payload:

能够看得出交易包括了精心策划的涵数名(图上以6631开始的数据,变换后即 f1121318093),目地取决于根据导致hach矛盾(hash collision)的方法启用putCurEpochConPubKeyBytes函数(归属于以太币上的EthCrossChainData合约)。有关哈希函数矛盾的关键点在互联网上现有许多 探讨,能够参照.

接着,此笔交易被Ontology Relayer 接受,留意这儿并沒有很严苛的校验。该交易会根据Relayer在Poly Chain取得成功上链(0x1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80)。Ethereum Relayer会认知到新区块链的转化成。

殊不知,该笔交易被Ethereum Relayer拒绝了。缘故取决于Ethereum Relayer对总体目标合约详细地址有校验,只容许LockProxy合约做为总体目标详细地址,而攻击者传到的是EthCrossChainData详细地址。

因而,攻击者攻击之途在这里终断。但如前所述,包括故意payload的攻击交易早已在Poly Chain取得成功上链,可被进一步运用。

流程二

攻击者手动式进行交易,启用EthCrossChainManager合约中的verifyHeaderAndExecuteTx涵数,将以前一步储存在Ploy Chain区块链中的攻击交易数据信息做为键入。因为该区域块是poly chain上的合理合法区块链,因而能够根据verifyHeaderAndExecuteTx中针对签字和merkle proof的校验。随后实行EthCrossChainData合约中的putCurEpochConPubKeyBytes函数,将本来的4个keeper改动给自己特定的详细地址(0xA87fB85A93Ca072Cd4e5F0D4f178Bc831Df8a00B)。

流程三

在keeper被改动以后,攻击者立即启用总体目标链上的verifyHeaderAndExecuteTx涵数(而不用再根据poly chain -- 由于keeper早已被改动,攻击者能够随意签定在总体目标链来看有效的poly chain上的块),最后启用至Unlock涵数(归属于LockProxy合约),很多地迁移资产,给新项目方产生了比较严重的损害。实际的攻击关键点可参照大家以前的汇报。

在本攻击全过程中,Ontology方和以太币方均有Relayer承担将来源于Ontology的交易在poly Chain上弦,及其将poly chain上的交易放进以太币。这两个Relayer是由Go语言完成的服务项目过程。

殊不知大家发觉,这两个Relayer都欠缺合理的校验。这造成

攻击者能够在Ontology结构一条故意的跨链交易,而且取得成功装包到poly chain上。

尽管在以太币的Relayer具备校验作用,可是攻击者能够立即同以太币上的链上合约开展互动,立即实行故意的涵数。

Ontology Relayer彻底信赖来源于Ontology上的跨链交易

Poly Network 的 ont_relayer(https://github.com/polynetwork/ont-relayer) 承担监视 Ontology 链上的跨链交易并将其装包入传到Poly Chain.

注:

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

CrossChainContractAddress 是 Ontology 链上原生态序号为 09 的智能化合约.

图中中,Ontology Relayer运作时打开三个 Goroutines 各自承担监视 Ontology Chain 和 Poly Chain 的跨链交易,及其对 Poly Chain 上的跨链交易做情况查验。在本汇报中,大家只关心69行的监视Side的编码逻辑性。

在图中中,Ontology Relayer 启用 Ontology 链给予的 RPC 插口(第 215 行,启用SDK涵数 GetSmartContractEventByBlock) 获得区块链中开启的智能化合约事情;随后在第 228 和 232 行说明 Ontology Relayer 只监视 Ontology Chain 上由 CrossChainContractAddress 开启的 makeFromOntProof 事情;

图中中,在解决 Ontology Chain 上的跨链交易时,Ontology Relayer 一共干了五次校验,分别是2次向 Ontology Chain 推送的 RPC 要求校验(check 1 和 check 4), 及其三次主要参数是不是为空的校验(check2, check3, 和check5)。这五次校验都归属于基本校验,仍未对来源于 Ontology Chain 上的跨链交易做语义上的校验; 第 167 和 171 行取下了在总体目标链上实行所必须的交易基本参数(proof, auditPath);第 183 行向 Poly Chain 推送交易;

Ontology Relayer 在结构了 Poly Chain 上的交易后便向 Poly Chain 进行 RPC 要求推送交易(第 164 行,调用函数 SendTransaction);

这一名叫 ProcessToAliianceCheckAndRetry 的 Goroutine 也只是是干了再发不成功交易的工作中,依然未对来源于 Ontology Chain 上的跨链交易做一切语义上的校验。

到此,我们可以看得出 ont-relayer 监视全部来源于 Ontology Chain 由 CrossChainContractAddress 开启的 makeFromOntProof 事情,仍未对其做一切语义上的校验,便向 Poly Chain 分享了交易。而所有人向 Ontology 推送的一切跨链交易都是会开启 CrossChainContractAddress 的 makeFromOntProof 事情,因此 Ontology Relayer 会将全部来源于 Ontology 上的跨链交易都分享到 Poly chain 上。

Ethereum Relayer中的失效校验

Ethereum Relayer 承担监视 Poly Chain 并将总体目标链为 Ethereum 的跨链交易分享到 Ethereum 上。

Ethereum Relayer 运行一个 Goroutine 来监管 Poly Chain;

Ethereum Relayer监视全部 Poly Chain 上总体目标链为 Ethereum 的跨链交易 (第 275 至 278 行); Ethereum Relayer会校验跨链交易的总体目标合约是不是为 config.TargetContracts中特定的合约之一,要不是则不容易推送该笔跨链交易到 Ethereum 上(第 315 行)。

尽管 Ethereum Relayer 对 Poly Chain 上的跨链交易干了一部分校验,例如限定了总体目标合约,可是与 Poly Chain 不一样,所有人都能够向 Ethereum 上的EthCrossChainManager合约推送交易。也就是说,Ethereum Relayer 在这儿做的校验沒有具体的实际意义,只需包括故意payload的跨链交易被取得成功装包进了 Poly Chain(尽管沒有被relay分享到以太币链上), 那麼所有人都能够立即应用早已装包好的区块链数据信息将payload发送至以太币EthCrossChainManager合约并实行(这一全过程中,能够根据merkle proof的校验,由于是早已一切正常上弦的poly chain区块链数据信息)。

攻击者恰好是运用了以上2个缺点,完成了攻击步骤中的流程一和流程二。

根据对全部攻击步骤的详细整理和详细剖析,大家觉得Relayer的不详细校检是攻击得以产生的直接原因。其他(例如利用hash矛盾等)层面则大量地归属于较为精彩纷呈的攻击方法。总得来说,跨链的校验和身份验证是跨链系统优化的关键所在,非常值得小区投入大量的勤奋。

Ontology买卖

标签:

区块链热门资讯
金黄晨报 | 区块链技术性助推处理双头借款和过多授信额度难题_算力

金黄晨报 | 区块链技术性助推处理双头借款和过多授信额度难题 今日头条 ▌区块链技术性助推处理双头借款和过多授信额度难题 在协同个人征信情景下,根据区块链和多方面安全性建筑科学可完成在无可靠中心连接点且维护各监管方商业机密及个人隐私数据信息的前提条件下,进行个人征信查询业务流程,针对处理双头借款和过多授信额度难题具备关键实际意义。

2021/8/12 8:09:53
金色DeFi日报 | 攻击Poly Network的黑客逐渐偿还财产_算力

金色DeFi日报 | 攻击Poly Network的黑客逐渐偿还财产 DeFi数据信息 1.DeFi总的市值:1034.三亿美金 总市值前十货币排名数据来源DeFibox DeFi总的市值数据来源:Coingecko 2.以往24小时区块链技术交易中心的成交量:46。

2021/8/11 21:59:50
从NFT、DeFi行业互动式看区块链用户个人行为_算力

从NFT、DeFi行业互动式看区块链用户个人行为 全文文章标题:《从NFT、DeFi看来区块链用户个人行为》 下边的汇报归属于区块链用户个人行为汇报的新系列产品。DappRadar的一组汇报致力于为用户给予区块链领域的不一样角度,将传统式行为金融分析与区块链规范和指标值紧密结合。

2021/8/11 21:26:27