近期BNB跨链桥受攻击,导致近$570M损失。这一事件再次把跨链桥的安全性问题推上热议。根据Messari8月的研报数据,过去一年内共有8起跨链桥攻击事件,构成将近$2B美金的资产损失。
Dr.DODO今天通过深度分析PolyNetwork,Multichain及BNB桥事件,从合约层面展示跨链桥机制设计弱点。
首先,让我们简要回顾跨链桥的基本概念,以及设计机制分类。
不同的公链如同孤立的无需许可的计算机,具有不同的共识机制,相互之间无法直接通讯。跨链桥的存在就是为了使信息能够不被篡改地从一个计算机传递到另一个计算机上。
跨链桥的核心是解决一个共识问题:跨链桥如何确定源链上的状态已发生改变,进而在目标链上铸造等量的资产?
不同的跨链桥对这个共识问题有不同解决方案,如采用中心化的桥,委员会,PoS机制,轻客户端等。而不同的解决方案在信息传递的安全性,成本,延迟性上有所取舍。
ADAMoracle生态通证ADAM将于今日16:00正式上线DODO:官方消息,ADAMoracle生态通证ADAM将于今日16:00正式上线去中心化交易平台DODO。
ADAM是ADAMoracle对参与者的贡献量奖励通证,其价值来源于生态成员的价值贡献,ADAM的发行总量为1亿枚。
ADAMoracle是ADAM实验室实现跨链并且基于硬件服务器提供喂价服务的分布式广域节点预言机网络,宗旨是构建一个安全、可信、精准、防止女巫攻击、可自我维护的去中心化预言机网络,以图灵智能化取代传统预言机,打造进入Web3.0分布式广域节点预言机网络生态。[2021/9/7 23:06:17]
详细分析可以参考此前文章《跨链漫谈:深度解析16个跨链方案权衡》:
接下来,我们进一步的把跨链流程进行拆解,了解跨链具体涉及到哪些步骤,这样在讨论不同攻击的时候,我们可以更好的理解出错的点在哪里。
跨链流程:
1.当源链用户发起一个状态改变,如一笔交易;此事件将由源链验证者进行验证出块。
LBank蓝贝壳上线 FEI 和 TRIBE 代币挖矿 DODO 活期理财活动:LBank 蓝贝壳交易所已上线 FEI 和 TRIBE 单币挖矿 DODO 活期理财活动,用户可以登陆LBank.me 首页余币宝,点击币生息,即可零成本参与单币 FEI 和 TRIBE 挖矿 DODO 的活动,最终将根据每日实际获取数量分发到用户账户。该活动将于4月11日结束。
此前,LBank 蓝贝壳交易平台通过代为用户参与 FEI 的全球发行,共计超过2600个 ETH 通过平台参与,让用户零手续费参与,并在结束后50分钟即开通相关交易对,帮用户降低成本,提升资金流转效率。[2021/4/4 19:45:23]
2.此时跨链桥去监听此跨链事件,下载并对进行验证、签名。
3.接下来被验证签署后的事件被传输至目标链。
4.由目标链上的验证者进行验证出块。
5.由此,源链上发起的状态改变得以在目标链被执行。
讲述跨链桥机制分类的文章已经很多,我们在此按验证方法把跨链桥分为:
FTX现已上线MTL、DODO现货及永续合约:官方消息,FTX现已上线Metal (MTL) 、DODO (DODO)现货及永续合约。[2021/4/1 19:37:39]
-外部性验证:PoS
-乐观性验证
-本地验证:轻客户端
按资产转移方式把跨链桥分为:
-燃烧+铸造
-锁定+铸造
-在源链/目标链部署流动性池
PolyNetwork攻击案例分析
简单来说,PolyNetwork的工作机制是作为中间链去接收发送链的区块头,相当于所有它连接的链的轻客户端。
聚币Jubi将于3月15日16:00上线DODO:据官方消息,聚币Jubi将于2021年3月15日16:00(UTC+8)上线DODO,开通DODO/USDT币币交易市场,充值提现已开启。现存入DODO可获得聚币“存币即挖矿”双倍存币挖矿算力奖励。
DODO是基于主动做市商算法的下一代链上流动性基础设施。DODO作为一个去中心化交易平台,采用资金池模式,纯链上交易,支持新资产的无成本发行。[2021/3/15 18:45:36]
比如,当Ontology上发起一笔交易,区块头会被送到PolyNetwork上。区块头含有stateroothash,当交易与证明到达PolyNetwork,这上面的keepers就可以进行验证。若合法,PolyNetwork会自己发送一个event,目标链的relayer听到后,会转发到目标链的EthCrossChainManager合约上。
在了解PolyNetwork工作机制之后,我们来看受攻击的合约。
灵踪安全:DODO资金池被攻击事件中,攻击者跳过余额检查,窃取V2交易对的资产:据灵踪安全报道,近日,DODO交易所发生资金池被攻击事件,灵踪安全对本次事件的分析如下:
在本次攻击中,用户通过DODOV2交易对中的闪电贷借出资产,然后在回调函数中调用无权限限制的init函数,重置交易对合约的相关代币地址,从而跳过余额检查,窃取V2交易对的资产。
本次漏洞的关键是DODO交易对init函数未设定权限并且可以多次设置,这样所有的V2版交易对都存在被攻击的风险。[2021/3/9 18:28:52]
首先,LockProxy是控制资产的合约。其次,EthCrossChainManager(CCM)的优越性有两点:
1)只有它能调用LockProxy进行unlock或者burn资产。
2)CCM掌管着CrosschainData,合约保存着PolyNetwork的keeper公钥名单。
也就是说,当跨链交易的数据发到CCM之后,合约可以从这个数据中恢复出一些签名的地址。
然后它会拿这些地址和它自己存的keeper名单做对比,看看是不是有2/3的keeper在这些地址里面。如果有,就认为发送过来的数据是合法的。
黑客通过bruteforce撞出了CCM中特定的“SolidityfunctionID”,从而得以调用EthCrossChainData的合约,并把其中存的keeper名单里的公钥匙换成自己的,这样他就可以任意的给CCM发信息,自己去进行签署,从而操作lockproxy。
所以上述攻击出现的问题有两点:
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伪造Merkleproof证明某些数据存在Merkletree。
Proof理论上难伪造。
BNB桥涉及数据结构IAVL:可理解为等价于以太坊的Merklepatriciatrie,是一种custommerklizedbalancebinarysearchtree,InnerNode分为Left和Right两个字段。
在这里IAVL的RangeProof存在的重要问题就是它允许Left和Right两个字段可以同时被填充。而当Left与Right都存在的情况下会忽略Right进行RootHash计算。
击者基本上通过将信息粘贴到Right字段中的优势,而这些信息从未得到验证,也从未影响哈希计算,以使验证者相信某些Leaf是Tree的一部分。从而,成功地伪造了MerkleProof。
关于BNB桥攻击中更复杂的合约调用逻辑可以阅读:
https://mp.weixin.qq.com/s/y9jiMKrGThN8J4agFnFpJw
TL;DR 虽然代币委托计划能够实现稳健的治理,但因为代币持有者可以立即撤销委托权,代币委托的独立性受到限制.
加密货币迈向主流后,美国财政部、SEC、CFTC,以及各国监管机构都想要将加密货币纳入监管,本文将整理近来的监管动向,以及聚焦FTX创办人SBF对监管的看法,让读者了解目前监管的趋势.
熊市漫漫,热点分散。在缺乏明确投资机会的当下,本着“宁可错付gas,不能放过大毛”的原则,我将视线与精力投向了优质项目交互,说不定还能提前发现下一价值标的,是吧.
10月18日,L1明星项目Aptos主网上线,还为早期测试网参与者空投代奖励,一个账号300枚APT,按照上线交易初期的价格,这笔空投价值$4500,按照发稿时的价格,仍旧价值超过$2100.
代币设计的创新落后于更大的生态系统;研究人员将重点一直放在扩展、智能合约优化和其他更多技术主题上,而代币设计似乎是事后才想到的.
自以太坊合并完成之后,以太坊社区已经将关注点转移到如何开始扩展区块链以实现更便宜的交易费用、更快的交易和更高的吞吐量,同时保持建立在这个区块链之上的DeFi协议和其他dAPP的安全性.