“黑客拿着房主证明找物业拿钥匙,证明是假的,却从物业那里拿到了真的钥匙”
事件回顾
2021年8月10日,PolyNetwork遭受了跨链攻击,被转移了6亿美金的加密资产。攻击者在多条公链上进行了攻击交易,并通过跨链管理合约和中继器组件完成了攻击。
用上面物业的例子来解释的话,黑客用假房主证明,从物业那里拿到了真的钥匙(AllianceChain上经过签名的Merkle证明)。
攻击解析
一、黑客在源链上初始化了一个本应是无效的攻击交易。
二、攻击交易在没有被充分检查的情况下被写入源链,之后被中继器纳入了AllianceChain的Merkletree并签字,然后发布到AllianceChain区块中。
Lido Staked Ether市值升至110亿美元上方,超越Polygon成为市值第九大加密货币:金色财经报道,据Coingecko数据显示, Lido Staked Ether(STETH)市值已升至110亿美元上方,本文撰写时达到11,340,732,821美元,创下自2022年5月以来新高。此外,当前Lido Staked Ether市值已超越Polygon(10,325,390,252美元),成为市值第九大加密货币。[2023/4/11 13:56:33]
三、黑客在目标链上用步骤二的有效Merkle证明,调用PolyNetwork的ECCM合约,将keepers改成黑客控制的公钥。
四、获得keepers权限后,黑客就可以在多条公链上任意解锁资产了。
这里值得注意的是,PolyNetwork在有些链上的中继器没有通过攻击交易,所以即使智能合约相似,某些目标链上资产并未受影响。
Polygon总锁仓量为40.3亿美元:金色财经报道,数据显示,以太坊Layer2和侧链方案聚合器Polygon(前身为MaticNetwork)总锁仓量为40.3亿美元。目前Polygon链上锁仓量最多的三个协议分别是:Aave(12.2亿美元)、QuickSwap(8.35亿美元)、以及Curve(4.04亿美元)。[2022/3/28 14:21:21]
细节分析
一、黑客于北京时间2021年8月10日17:32:32在源链发起了一笔攻击交易。
https://explorer.ont.io/tx/F771BA610625D5A37B67D30BF2F8829703540C86AD76542802567CAAFFFF280C#
MXC抹茶创新区上线POLS,开盘上涨1326%:据官方公告,MXC抹茶创新区上线POLS(Polkastarter ),开放USDT交易。截至目前,POLS开盘价格为0.05USDT,最高报价0.713USDT,最高涨幅1326%,现报0.669USDT。此外,MXC抹茶新币挖矿产品增设无上限MX挖矿POLS额度,60分钟销售超2000万MX。用户可登录MXC抹茶官方网站,通过“PoS矿池”版块进入,选择“DeFi挖矿宝”,或在APP端首页中部位置,点击“DeFi挖矿宝”,点击“MX-POLS新币挖矿”进行锁仓挖矿。[2020/10/1]
我们对交易进行了解码,得到了以下参数映射。
公告 | Poloniex目前处于维护模式:Poloniex在推特表示,目前处于维护模式。我们正在调查这个问题,并将保持更新。[2019/10/21]
二、此攻击交易调用了一个method"66313231333138303933",其对应的签名等于0x41973cd9。这笔交易应该是无效交易,可是却被写入源链并被中继器纳入了AllianceChain的Merkletree并签字,然后发布到AllianceChain区块中。Merkletree是用来证明交易是否真实存在的。其产生的跨链交易如下:
https://explorer.poly.network/tx/1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80
动态 | 今晨两起EOS竞猜游戏21Dice和SuperMonopoly遭黑客攻击:今天凌晨,PeckShield安全盾风控平台DAppShield监测到黑客向EOS竞猜游戏21Dice和SuperMonopoly发起攻击并已经获益。PeckShield安全人员初步分析发现,这又是利用交易阻塞攻击 (CVE-2019-6199)来“稳赢”游戏竞猜,与之前攻击EOS.Win、FarmEOS、影骰、LuckBet、GameBet、EOSDice、STACK DICE、Playgames等多款游戏的手法一致。PeckShield提醒,最近上线的EOS主网补丁不能完全确保DApp免疫该漏洞,开发者还需进一步就随机数生成问题进行处理,并引入类似DAppShield安全盾这样的风控机制,减少或避免因阻塞攻击造成资产损失。[2019/1/17]
三、跨链交易在目标链上调用了PolyNetwork合约的EthCrossChainManager.verifyHeaderAndExecuteTx(),第一个参数包含了Merkle证明,解析如下:
四、这个函数解析了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定义如下:哈希树可以用来验证计算机中和计算机之间存储、处理和传输的任何种类的数据。它们可以帮助确保从点对点网络中的其他对等体收到的数据块是未被破坏和未被改变的,甚至可以检查其他节点是否撒谎和发送假块。
?链集市?·让区块链落地更简单 《区块链行业观察》专栏·第39?篇作者丨JessicaGroopman 图片丨来源于网络 社会的数字化推动着身份的数字化.
7月25日,“2021世界区块链大会·杭州”在杭州未来科技城学术交流中心举行。本次大会由杭州时戳信息科技有限公司主办.
1.富国银行已开始为高净值客户提供加密货币敞口2.资产管理公司GoldenTree已购买比特币3.
据Cointelegraph消息,根据HarrisPoll向《今日美国》提供的一项调查发现,黑人、西班牙裔和LGBTQ美国人更有可能拥有加密资产.
7月24日,2021世界区块链大会·杭州正式开幕。本届大会以“无限未来”为主题,汇聚全球的100+区块链、加密货币行业头部创业者、研究者,以胸怀万里世界的姿态,共同放眼无限未来的行业想象.
作者:宋嘉吉,金郁欣 摘要 本文着眼于一个问题:为什么风靡全球的Roblox、Minecraft都是乐高式的方块搭成的?为什么不能像魔兽一样有精美的人物模型?特立独行,方块构建游戏世界.