首发 | Poly Network攻击事件分析

本文由Certik原创,授权“金色财经”首发,转载请注明出处。

“黑客拿着房主证明找物业拿钥匙,证明是假的,却从物业那里拿到了真的钥匙”

事件回顾

2021年8月10日,PolyNetwork遭受了跨链攻击,被转移了6亿美金的加密资产(之后攻击者开始陆续归还被盗资产)。攻击者在多条公链上进行了恶意交易,并通过中继器(Poly-Relayer)组件完成了攻击。

用上面物业的例子来解释的话,黑客用假房主证明(第三方公链上的invalid transaction),从物业(中继器 Poly-Relayer)那里拿到了真的钥匙 (Poly-chain上经过签名的Merkle证明)。

一、黑客在第三方公链上初始化了一个本应是无效的恶意交易。

二、中继器Poly-Relayer在没有充分检查的情况下将此交易纳入了Poly Chain的Merkle tree并签字,然后发布到Poly Chain区块中。

三、黑客在以太坊上用步骤二的有效Merkle证明,调用Poly Network的ECCM合约,将keepers改成黑客控制的公钥。

闪电网络通道数量突破80,000个:金色财经报道,据最新数据显示,闪电网络通道数量已经突破80,000个,创下历史新高,本文撰写时为80,069个,过去三十天增长6.6%。此外,闪电网络节点数量正逼近30,000个里程碑,目前为29,804个,过去三十天增长7.78%;网络容量当前为3196.16 BTC,价值约合195,940,143.42美元,过去三十天增长7%。[2021/11/6 6:34:59]

这里值得注意的是,Poly Network在有些链上的中继器没有通过此交易,所以其链上资产未受影响。

一、黑客于北京时间2021年8月10日17:32:32对第三方公链发起了一笔恶意交易。

https://explorer.ont.io/tx/F771BA610625D5A37B67D30BF2F8829703540C86AD76542802567CAAFFFF280C#

CoinBene满币启动CONI第五十七期销毁:据CoinBene满币官方公告,根据原定计划,于2020年12月10日(GMT+8),CoinBene满币网启动第五十七次CONI销毁行动。 CONI本期销毁:4,514,813;销毁后流通量:252,398,732;累积销毁量:1159,101,268,CoinBene满币每月将交易手续费(不含API)的60%用于市场回购销毁平台币CONI。[2020/12/10 14:46:26]

我们对交易进行了解码,得到了以下参数映射。

二、此恶意交易调用了一个method "66313231333138303933",其对应的签名等于0x41973cd9(与之后调到的putCurEpochConPubKeyBytes函数签名相同)。

三、这笔交易应该是无效调用, 可是中继器Poly-Relayer却在未充分检查的情况下将此交易纳入了Poly Chain的Merkle tree并签字,然后发布到Poly Chain区块中。Merkle tree是用来证明交易是否真实存在的。其产生的跨链交易如下:https://explorer.poly.network/tx/1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80

此恶意交易利用了中继器Poly-Relayer的漏洞,这可能就是为什么黑客不得不冒险通过中心化交易所购买第三方公链代币的原因。

黑客部分声明的截图如下:

四、跨链交易在以太坊上调用了Poly Network合约的EthCrossChainManager.verifyHeaderAndExecuteTx(),第一个参数包含了Merkle证明,解析如下:

五、这个函数解析了Merkle证明,发现证明是有效的,此恶意交易确实存在于已被签名的Merkle tree中。

之后调用了EthCrossChainManager._executeCrossChainTx()函数去执行此交易,即调用toContract指向合约 (0xcf2afe102057ba5c16f899271045a0a37fcb10f2)中的method (0x6631313231333138303933),传入参数args (010000000000000014a87fb85a93ca072cd4e5f0d4f178bc831df8a00b)。而这个method指向putCurEpochConPubKeyBytes(bytes),因为其函数签名与步骤二中提到的method签名相同 (均为0x41973cd9,此处为哈希碰撞),所以被顺利执行,将keepers的公钥改成了黑客的公钥。以太坊上的交易如下:https://etherscan.io/tx/0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581

六、黑客改变公钥后,即可随意解锁资产。

此次攻击是由一连串交易构成的,其攻击根源分析如下:

1. 中继器Poly-Relayer会接收任意含有"makeFromOntProof" 事件的交易。

2. 中继器Poly-Relayer在未充分检查的情况下,将恶意交易发布到Poly Chain上。 

3. 在步骤二中,此恶意交易被纳入到Poly Chain的Merkle tree上,产生了有效的Merkle证明。 

4. 以太坊上的ECCM合约只对步骤二产生的Merkle证明和原始数据进行了轻量级验证。不过值得注意的是,Merkle证明的全面验证应该在协议层面完成,而不是在智能合约层面。

郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。

金智博客

BTC与其他主要行业相比:比特币的能源使用情况如何?

比特币究竟使用了多少能源? 根据剑桥大学“第三次全球加密资产基准研究”的数据,我们可以推算出在?2021 年 6 月中国禁止比特币挖矿和 7 月中国矿业外流发生之前,比特币网络的碳强度约为每千瓦时 (kWh) 420 克的二氧化碳。 剑桥的该研究报告(第 27 页)中的图 17,如下图所示,展示了世界各地矿工的典型能源。

SHIB原生代币流动性的艺术与科学

为什么项目方想要为其原生代币提供流动性? 从根本上说,拥有代币的流动性很重要,因为它允许新投资者轻松地投资项目并让不活跃的投资者退出。少一点流动性不会破坏一个强大的项目,而过多的流动性也只是徒劳。 在这篇文章中,我们将了解2池的复杂性,并给出一些项目方如何解决其原生代币流动性的方案。

以太坊数字人民币试点规模有序扩大 开启支付新体验

中国人民银行日前召开2021年下半年工作会议,在谈到深化重点领域金融改革时,会议提出稳妥推进数字人民币研发试点。此前,中国人民银行数字人民币研发工作组发布中国数字人民币的研发进展白皮书。如今,数字人民币试点已在多地展开,应用场景不断丰富,积极促进了中国数字经济规模扩张与质量提升。

XMR金色早报 | 荷兰中央银行:币安被禁止在荷兰运营

头条 ▌荷兰中央银行:币安被禁止在荷兰运营 据荷兰央行8月18日发布的一份声明,加密货币交易所币安被禁止在荷兰运营。该央行(DNB)表示,币安未能获得所需的法律注册,这意味着其服务在该国是非法的。币安没有遵守反和反恐融资法案,非法提供虚拟货币和信托货币之间的交换服务,非法提供托管钱包。

[0:15ms0-6:567ms