“黑客拿着房主证明找物业拿钥匙,证明是假的,却从物业那里拿到了真的钥匙”
事件回顾
2021年8月10日,PolyNetwork遭受了跨链攻击,被转移了6亿美金的加密资产。攻击者在多条公链上进行了攻击交易,并通过跨链管理合约和中继器组件完成了攻击。
用上面物业的例子来解释的话,黑客用假房主证明,从物业那里拿到了真的钥匙(AllianceChain上经过签名的Merkle证明)。
攻击解析
一、黑客在源链上初始化了一个本应是无效的攻击交易。
二、攻击交易在没有被充分检查的情况下被写入源链,之后被中继器纳入了AllianceChain的Merkletree并签字,然后发布到AllianceChain区块中。
数据:约1500万枚MATIC从未知钱包转移到PolygonStaking:7月24日消息,据WhaleAlert监控数据显示,近1500万枚MATIC(10,749,787美元)于今日23:12(北京时间)从未知钱包转移到PolygonStaking。[2023/7/25 15:56:16]
三、黑客在目标链上用步骤二的有效Merkle证明,调用PolyNetwork的ECCM合约,将keepers改成黑客控制的公钥。
四、获得keepers权限后,黑客就可以在多条公链上任意解锁资产了。
这里值得注意的是,PolyNetwork在有些链上的中继器没有通过攻击交易,所以即使智能合约相似,某些目标链上资产并未受影响。
zkMeta与Polygon合作探索垂直游戏赛道Layer2新生态:金色财经报道,Polygon官方发文表示,zkMeta团队将在Polygon网络上建立GameFi专用的zk-rollup,并且使用 Polygon zkEVM,Supernet等技术为高DAU游戏项目提供最优基建生态。除了游戏专属L2网络,zkMeta同时提出 MetaID,NFT Toolbox,CheckStand,TradePlace,MetaDAO和Tounament等6项web3游戏项目开发套件,助力游戏开发者完成高可玩性、高频交互的游戏部署。[2023/3/24 13:23:59]
细节分析
一、黑客于北京时间2021年8月10日17:32:32在源链发起了一笔攻击交易。
https://explorer.ont.io/tx/F771BA610625D5A37B67D30BF2F8829703540C86AD76542802567CAAFFFF280C#
Aave开发者关系主管提议在Aave V3的Polygon市场添加stMATIC作为抵押品:金色财经消息,Aave开发者关系主管发布在Aave V3的Polygon市场添加stMATIC作为抵押品的提案,该提案将于北京时间4月3日11:59启动投票并持续4天。(bloomberg)[2022/4/2 14:00:52]
我们对交易进行了解码,得到了以下参数映射。
二、此攻击交易调用了一个method"66313231333138303933",其对应的签名等于0x41973cd9。这笔交易应该是无效交易,可是却被写入源链并被中继器纳入了AllianceChain的Merkletree并签字,然后发布到AllianceChain区块中。Merkletree是用来证明交易是否真实存在的。其产生的跨链交易如下:
多链DeFi平台Rubic部署Matic Bridge的beta版本,支持以太坊-Polygon跨链:据官方消息,多链DeFi平台Rubic宣布已成功部署Matic Bridge的beta版本。用户将能够在Rubic.Exchange将ERC20交换为Polygon网络中的对应版本,反之亦然。用户可将其代币转移到Rubic平台上的Polygon生态系统中,目前只允许交换PoS代币。[2021/4/28 21:07:35]
https://explorer.poly.network/tx/1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80
三、跨链交易在目标链上调用了PolyNetwork合约的EthCrossChainManager.verifyHeaderAndExecuteTx(),第一个参数包含了Merkle证明,解析如下:
Poloniex现已支持TRX借出功能:据官方消息,Poloniex现已支持TRX借出功能,并开通TRX/BTC和TRX/USDT杠杆交易对。[2020/3/19]
四、这个函数解析了Merkle证明,发现证明是有效的,此攻击交易确实存在于已被签名的Merkletree中。之后调用了EthCrossChainManager._executeCrossChainTx()函数去执行此交易,即调用toContract指向合约(0xcf2afe102057ba5c16f899271045a0a37fcb10f2)中的method(0x6631313231333138303933),传入参数args(010000000000000014a87fb85a93ca072cd4e5f0d4f178bc831df8a00b)。而这个method指向putCurEpochConPubKeyBytes(bytes),因为其函数签名与步骤二中提到的method签名相同(均为0x41973cd9,此处为哈希碰撞),所以被顺利执行,将keepers的公钥改成了黑客的公钥。以太坊上的交易如下:?
https://etherscan.io/tx/0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581
五、黑客改变公钥后,即可以随意解锁资产。
事件总结
此次攻击是由一连串交易构成的,其攻击根源分析如下:
一、攻击交易在没有充分检查的情况下被写入源链。
二、中继器会接收任意含有"makeFromOntProof"事件的交易。
三、中继器将步骤一中的交易发布到了AllianceChain上。
四、在步骤二中,此攻击交易被纳入到AllianceChain的Merkletree上,产生了有效的Merkle证明。
五、原链上的ECCM合约通过步骤二产生的Merkle证明,验证了该交易在源链上“确实存在”,原始数据并未被破坏、未被修改。不过需要强调的是,在构建将被发送到目标链的Merkle证明之前,应该对交易进行全面验证。正如设计文档中所示。
“ThemanagementcontractfetchestheblockheadersfromchainA,verifieswhetherornotthecrosschainparametersandtheproofarevalid,andthentransmitsthenecessaryinformationtochainBintheformofanevent;”
"管理合约从A链获取区块头,验证跨链参数和证明是否有效,然后将必要的信息以事件的形式传送给B链;"
因此,目标链应使用Merkle证明来验证所收到的信息是未被破坏和未被改变的,而交易信息应在发送至目标链之前进行全面验证。
附:Merkletree定义如下:哈希树可以用来验证计算机中和计算机之间存储、处理和传输的任何种类的数据。它们可以帮助确保从点对点网络中的其他对等体收到的数据块是未被破坏和未被改变的,甚至可以检查其他节点是否撒谎和发送假块。
来源:财联社 作者:徐赐豪 财联社|区块链日报讯,8月18日,美国交易平台Robinhood发布上市后的首份财报,第二季度加密货币交易收入占据总收入的四成以上.
前言: DAOs是一种新的物种还是公司治理的特殊形式?信任与所有权、控制权是最好的说明。但IT治理的最初提出者Weill和Ross,在考虑和设计公司完全由IT治理时的可能性时,却完全没有意识到某.
巴比特讯,NFT游戏AxieInfinity今日发布7月份发展更新:1.Axie协议在过去30天内产生的费用超过了任何其他加密产品,包括比特币和以太坊.
巴比特讯,FX168消息,美国6月核心PCE物价指数年率录得3.5%,创1991年7月以来新高,美国股指期货在美国6月通胀数据公布后跌幅收窄.
巴比特讯,据去中心化交易平台KSwap与ASTFinance公告显示,机池项目AST遭遇代码错误,出现无法赎回WOKT的情况,其机池内锁仓约67660.4枚OKT,当前价值约580万美元.
据Cointelegraph报道,在周一的推文中,代表格伦汤普森表示,他与代表帕特里克麦克亨利已向美国商品期货交易委员会和美国证券交易委员会提交了一封信,敦促这些机构建立一个数字资产联合工作组.