风险提示:央行等十部委发布《关于进一步防范和处置虚拟货币交易炒作风险的通知》, 请读者提高风险意识。

DoDo Research:从合约层面解析跨链桥机制设计弱点

不同的公链如同孤立的无需许可的计算机,具有不同的共识机制,相互之间无法直接通讯。

DODO Research
DODO Research
热度 ...

原文作者:DoDo Research

原文来源:Twitter

近期 BNB 跨链桥受攻击,导致近 $570M 损失。这一事件再次把跨链桥的安全性问题推上热议。根据 Messari 8 月的研报数据,过去一年内共有 8 起跨链桥攻击事件,构成将近 $2B 美金的资产损失。

Dr.DODO 今天通过深度分析 Poly Network,Multichain 及 BNB 桥事件,从合约层面展示跨链桥机制设计弱点。跨链

首先,让我们简要回顾跨链桥的基本概念,以及设计机制分类。

不同的公链如同孤立的无需许可的计算机,具有不同的共识机制,相互之间无法直接通讯。跨链桥的存在就是为了使信息能够不被篡改地从一个计算机(源链)传递到另一个计算机(目标链)上。

跨链桥的核心是解决一个共识问题:跨链桥如何确定源链上的状态已发生改变,进而在目标链上铸造等量的资产?

不同的跨链桥对这个共识问题有不同解决方案,如采用中心化的桥,委员会,PoS 机制,轻客户端等。而不同的解决方案在信息传递的安全性,成本,延迟性上有所取舍。

详细分析可以参考此前文章《跨链漫谈:深度解析16个跨链方案权衡》:

接下来,我们进一步的把跨链流程进行拆解,了解跨链具体涉及到哪些步骤,这样在讨论不同攻击的时候,我们可以更好的理解出错的点在哪里。

跨链流程:

1. 当源链用户发起一个状态改变,如一笔交易;此事件将由源链验证者进行验证出块。

2. 此时跨链桥去监听此跨链事件,下载并对进行验证、签名。

3. 接下来被验证签署后的事件被传输至目标链。

4. 由目标链上的验证者进行验证出块。

5. 由此,源链上发起的状态改变得以在目标链被执行。

讲述跨链桥机制分类的文章已经很多,我们在此按验证方法把跨链桥分为:

- 外部性验证:PoS (较为中心化的 Multi-sig)

- 乐观性验证 (或状态行证明桥)

- 本地验证:轻客户端

跨链

按资产转移方式把跨链桥分为:

- 燃烧+铸造

- 锁定+铸造

- 在源链/目标链部署流动性池

跨链

Poly Network 攻击案例分析

简单来说, Poly Network 的工作机制是作为中间链去接收发送链的区块头,相当于所有它连接的链的轻客户端。

比如,当 Ontology 上发起一笔交易,区块头会被送到 PolyNetwork 上。区块头含有 state root hash,当交易与证明到达 PolyNetwork,这上面的 keepers 就可以进行验证。若合法, PolyNetwork 会自己发送一个 event,目标链的 relayer 听到后,会转发到目标链的 EthCrossChainManager 合约上。

跨链

在了解 Poly Network 工作机制之后,我们来看受攻击的合约。

首先,LockProxy 是控制资产的合约。其次,EthCrossChainManager (CCM) 的优越性有两点:

1)只有它能调用 LockProxy 进行 unlock 或者 burn 资产。

关于【DoDo Research:从合约层面解析跨链桥机制设计弱点】的延伸阅读

  • 长推:Base 向上,BSC 向下

    本文讨论了Aerdrome和Base两个CEX在链上的差距,Aerdrome通过贿赂矿工来激励生态项目,形成飞轮效应。相比之下,BSC上的类似产品没有获得类似结果,可能是因为币安支持不足。作者认为币安可能会将资源投入其他更好的项目,而不是支持生态项目。最后,作者提到了ve(3,3)模式在Web3玩家中已成为常识,而Aerdrome和Base都采用了这种模式。币安在BSC上投入资源,但与生态项目争利,导致生态项目的投票权减少,不利于生态发展,也让优质开发者离开。相比之下,Coinbase将资源投入有正外部性的项目,效果更好。BNB的上涨空间有限,需要让链上更灵活。

  • 监管相关动态频繁,Ethena成为稳定币新贵

    本周市场观点:美国经济增长高于预期,预计美联储将在9月降息。市场主线围绕Meme板块,BNB和RENZO有望上涨。BTC第四次减半已发生,稳定币市值增长,投资者兴趣减弱。期货市场情绪贪婪,现货市场经历战争风险考验。NFT市场蓝筹项目地板价上涨,交易量下滑。Puffverse完成融资,将推出以Puff IP为中心的休闲派对游戏。Ola推出移动端验证模块Massive,Xterio与BNBCHAIN合作推出人工智能和Web3沉浸式游戏体验。Foresight Ventures为开发者提供技术解决方案,帮助玩家进入完善的游戏生态系统。

2)CCM 掌管着 CrosschainData , 合约保存着 Poly Network 的 keeper 公钥名单。

跨链

也就是说,当跨链交易的数据发到 CCM 之后,合约可以从这个数据中恢复出一些签名的地址。

然后它会拿这些地址和它自己存的 keeper 名单 做对比,看看是不是有 2/3 的 keeper 在这些地址里面。如果有,就认为发送过来的数据是合法的。

黑客通过 brute force 撞出了 CCM 中特定的 “Solidity function ID”, 从而得以调用 EthCrossChainData 的合约,并把其中存的 keeper 名单里的公钥匙换成自己的, 这样他就可以任意的给 CCM 发信息,自己去进行签署,从而操作 lock proxy。

所以上述攻击出现的问题有两点:

1)任意的用户可以进行的远程调用合约。在这个事件之后,项目方加入了白名单机制,只有指定方可以调用这个非常特别的合约。

2)合约之间的从属关系,导致关键的合约容易被篡改。

Multichain 攻击案例分析

Multichain 是可实现跨链路由的桥,通过封装资产 “anyToken”,Multichain 可实现任意资产的任意跨链。首先,当用户把 DAI 放到池子里,等量的 anyDAI 就会被铸造出来,然后由网络中的验证人确定这一事件,在 B 链铸造出等量的 anyDAI, 然后燃烧掉 A 链的 anyDAI。

跨链

受攻击的合约中,关注下图标记的 1,2,3 行:首先,从 anyDAI这个合约拿到它底层资产合约的地址,即 DAI。其次,permit() 使用户通过签名来允许路由器从用户地址中提款。最后,safetransferfrom 是一个真正的提款动作。

注:签名了的交易被表示为(v,r,s)

跨链

可以看到黑客恶意部署的代币地址,和无效的签名。

跨链

回顾 8.1 中的三行代码,黑客重新部署了 anyDAI 导致底下 OUTPUT 的底层资产解析出来是 WETH 的地址。在此,Multichain 在这里的失误就是它应该检验代币地址是不是来自 Multichain 的代币。

跨链

第二个微妙的问题就是 permit 是 erc20 的一个扩展协议,但是由于比 weth 出来的时间晚,所以 weth 没有支持这个特性。那么如果去调用一个合约的一个不存在的方法,EVM 会自动去调用这个合约的 fallback 方法;然而,fallback 方法在这个情况下也没报错,所以,permit 功能也被成功执行。

而第三行之所以可以执行,我们可以认定因为 Multichain 之前请求了 WETH 无限的花费上线,黑客通过滥用了这个 approval 把 WETH 从受害者的账户转出。但值得注意的是很多的协议都会使用,以帮助用户节省 gas 费用。

BNB 桥攻击案例简述

Binance 事件的黑客用 RangeProof 伪造 Merkle proof证明某些数据存在 Merkle tree。

Proof 理论上难伪造。

BNB 桥涉及数据结构 IAVL:可理解为 等价于以太坊的 Merkle patricia trie,是一种 custom merklized balance binary search tree,InnerNode 分为 Left 和 Right 两个字段。

在这里 IAVL 的 RangeProof 存在的重要问题就是它允许 Left 和 Right 两个字段可以同时被填充(按理说只能有一个)。而当 Left 与 Right 都存在的情况下会忽略 Right 进行 RootHash 计算。

击者基本上通过将信息粘贴到 Right 字段中的优势,而这些信息从未得到验证,也从未影响哈希计算,以使验证者相信某些 Leaf 是 Tree 的一部分。从而,成功地伪造了 Merkle Proof。

关于 BNB 桥攻击中更复杂的合约调用逻辑可以阅读:

https://mp.weixin.qq.com/s/y9jiMKrGThN8J4agFnFpJw


免责声明:本文仅代表作者个人观点,不代表链观CHAINLOOK立场,不承担法律责任。文章及观点也不构成投资意见。请用户理性看待市场风险,以及遵守所在国家和地区的相关法律法规。
图文来源:DODO Research,如有侵权请联系删除。转载或引用请注明文章出处!

标签:

分享至
https://www.chainlook.cn/toutiao/1691116644.html

下一篇:

13张图带你一览蓝筹 DeFi 市场现状

尽管过去 3 个月价格和波动性均有所下降,但热门 DeFi 项目中的代币持有者数量仍保持稳定上升趋势。

免责声明:
链观CHAINLOOK作为区块链技术应用与Web3行业研究的智库媒体,旨在为中国区块链专家、学者们提供最新的行业资讯信息与数据样本,用于区块链技术研究与创新。本站所发布的文章仅代表作者的个人观点,不代表链观CHAINLOOK官方立场,本站所发布的区块链行业研究报告与数据分析成果是通过人工智能算法对数据内容进行分析与归纳生成,不代表任何投资暗示与建议,链观CHAINLOOK不承担法律责任。

风险提示:
虚拟货币不具有法定货币等同的法律地位,参与虚拟货币投资交易存在法律风险,链观CHAINLOOK坚决反对各类代币炒作,请读者提高风险意识,理性看待区块链技术应用及市场风险。

© 链观CHAINLOOK All Rights Reserved. 京ICP备18054193号-5