L2BEAT从成立以来就投入了大量精力来分析和理解与Layer2协议相关的风险。我们始终以用户和生态系统的最大利益为出发点,尽最大的努力成为一个公正、独立的监督者,不会让我们对项目或相关团队的个人偏好影响事实。这就是为什么即使我们尊重项目团队投入项目的时间和努力,但也会对某些协议存在的潜在风险「拉响警报」或指出我们的担忧。尽早进行与安全相关的讨论可以让整个生态系统更好地为潜在风险做好准备,并对任何可疑行为更早地做出反应。
今天我们想就跨链应用的共享安全模型展开讨论。目前有两种安全模型:共享安全与独立应用安全。共享安全性就例如所有的Rollup。独立应用安全性主要由「omnichain」项目使用,这类项目的主要使用的是LayerZero。
共享安全与独立安全
共享安全性是指在给定基础架构上运行的特定代币或应用,而不是自由选择安全模型,他们必须遵守基础设施强加的任何安全要求。例如,OptimisticRollups通常会施加一个7天的最终窗口期——在此类Rollups上运行的应用不能简单地忽略或缩短这个期限。这虽然看起来像是一个障碍,但它是有原因的。这个期限为用户提供了安全保证,无论应用的内部安全策略是什么,都必须遵守这套安全政策,应用可能只会加强Rollups的安全性,而不会削弱它。
独立安全是指每个应用都负责定义其安全性,不受基础设施以任何方式进行的限制。这乍看之下似乎是个好主意,毕竟应用的开发人员最清楚应用可能需要哪些安全措施。但与此同时,它将评估与每个应用安全策略风险相关的责任转移给了终端用户。此外,如果应用开发者可以自由选择他们的安全策略,他们也可以随时更改。因此,对每个应用评估一次风险是不够的,每次应用的政策发生变化时都应该对其进行评估。
美国监管机构警告存储在移动支付应用程序上的钱可能不受FDIC保险:金色财经报道,FDIC可能不会为移动支付应用程序上的存款提供保险,客户可能不知道他们的钱是否有保险。美国消费者金融保护局(CFPB)在6月1日发布的一份报告中警告美国人,请将钱存入有保险的账户,而不是无保险的支付应用程序。该监管机构表示,非银行点对点(P2P)支付和实用应用程序越来越受欢迎,包括用于加密资产交易的应用程序,使得在发生危机时的损失风险更加令人担忧。[2023/6/2 11:53:41]
存在的问题
我们认为每个应用都可以自由定义其安全策略的独立安全模型会带来严重的安全问题。首先,它增加了终端用户的风险,因为他们必须验证他们打算使用的每个应用的风险。
独立安全还增加了使用这种模型的应用的风险,例如增加了有关安全策略更改的额外风险——如果攻击者要更改应用的安全模型,还不如简单地禁用它,从而耗尽资金或以任何其他方式进行攻击。应用之上没有额外的安全层来防止被攻击。
此外,由于安全策略能够随时且即时更改,因此几乎不可能实时监控应用并告知用户风险。
我们发现它类似于智能合约的可升级性,我们已经在L2BEAT上发出了警告。我们告知用户在其智能合约中具有可升级性机制的Rollup和跨链桥,以及在每种情况下管理可升级性的确切机制。这已经相当复杂了,加之使用独立的安全模型更会使得数目成倍增加,几乎不可能有效跟踪。
这就是为什么我们认为独立的安全模型本身就是一种安全风险,并且我们假设默认情况下将使用这种模型的每个应用都应被视为有风险,除非证明并非如此。
证明安全漏洞存在
我们决定在主网上测试我们的假设。选择LayerZero框架进行实验是因为它是最流行的以独立安全为核心的解决方案之一。我们部署了一个安全的omnichain代币,之后更新安全配置,允许恶意提取代币。代币的代码基于LayerZero提供的示例,与实际部署的许多其他omnichain代币和应用程序非常相似或相同。
Arbitrum联创兼CEO:目前Arbitrum占据L2约65%的市场份额:4月13日消息,在“2023香港Web3嘉年华”主会场《Web3技术基础设施:Layer 2二层网络》主题中,Arbitrum联合创始人兼CEO Steven Goldfeder介绍了Arbitrum的网络数据、生态、Arbitrum Nova和Arbitrum Orbit。Steven Goldfeder表示,过去一年Arbitrum发展非常快速,目前Arbitrum生态有约60亿美元的TVL,在二层中占据65%的市场份额,目前有100万枚ETH锁定在桥中,生态DApp也发展得非常繁荣。Arbitrum Nova更适合游戏、社交项目以及一些有高吞吐量和性能需求的DApp。Arbitrum Orbit允许利用技术堆栈和以太坊的安全性构建自己的区块链,具有隐私、安全、性能高等优势。希望和开发者、用户和社区成员共同推动Arbitrum发展。[2023/4/13 14:00:57]
但在我们深入细节之前,让我们简要了解一下LayerZero安全模型是什么样的。
正如LayerZero在白皮书上指出的,其「无需信任的链间通信」依赖于两个独立的参与者共同行动以确保协议的安全。
LayerZero在其网站上表示,其核心概念是「运行ULN(UltraLightNode)、可配置链上终端的用户应用」。LayerZero的链上组件依赖于两个外部链下组件在链之间中继消息——预言机和中继器。
每当任何消息M从A链发送到B链时,都会发生以下两个操作:
首先,预言机等到在A链上发送消息M的交易完成,然后在B链上写入相关信息,例如A链包含消息M的区块头的哈希值。然后中继器向B链发送一个「证明」,证明存储的区块头包含消息M。LayerZero假设中继器和预言机是独立、诚实的参与者。但LayerZero也在白皮书中表示,如果不满足该假设,例如中继器和预言机串通,导致「预言机提供的区块头和中继器提供的交易证明均无效,但仍然匹配」。
LayerZero声称「LayerZero的设计消除了合谋的可能性」。但事实上,这种说法是不正确的,因为每个用户应用程序都可以定义自己的中继器和预言机。LayerZero不通过设计保证这些组件是独立的并且无法串通,而是由用户应用提供这些保证。如果应用选择破坏它们,LayerZero没有任何机制可以阻止。
DeFi借贷协议Euler部署至BNB Chain的提案已投票通过:2月8日消息,DeFi借贷协议Euler Finance社区已投票通过将项目部署至BNB Chain的提案。该提案由AdamBNB代表BNB Chain基金会提交,83.05%的投票者支持该提案。[2023/2/8 11:54:26]
此外,默认情况下,所有用户应用都可以随时更改中继器和预言机,从而完全重新定义安全假设。因此,仅检查一次给定应用的安全性是不够的,因为它可能在检查后随时更改,正如我们将在实验中展示的那样。
实验设计
在我们的实验中,我们决定创建一个简单的omnichain代币CarpetMoon,同时在以太坊和Optimism上运行,并使用LayerZero在两个链之间进行通信。
我们的代币最初使用LayerZero提供的默认安全模型,使其与大当前部署的LayerZero应用完全相同。因此,它通常与使用LayerZero的任何其他代币一样安全。
首先,我们在以太坊和Optimism上部署我们的代币合约:
https://ethtx.info/mainnet/0xf4d1cdabb6927c363bb30e7e65febad8b9c0f6f76f1984cd74c7f364e3ab7ca9/
https://optimistic.etherscan.io/tx/0xf41389d71fa3942de5225efb067072728c6c6de56c241574187781db7c73d221
然后我们设置了路由,以便LayerZero知道两条链上哪个合约对应哪个合约。
https://ethtx.info/mainnet/0x19d78abb03179969d6404a7bd503148b4ac14d711f503752495339c96a7776e9/
https://optimistic.etherscan.io/tx/0x037b1bad33faa5607bb5835460a1d5caaf3a147dc3a09762ac7703befcdb3c3c
代币已部署完成,它看起来与使用LayerZero的所有其他omnichain代币完全一样,使用默认配置,没有任何可疑之处。
数字银行Revolut将允许客户用加密货币余额进行购买:金色财经报道,数字银行公司Revolut正在增加一项加密货币消费功能,使客户能够使用他们的加密货币余额来支付使用Revolut卡的日常消费。
根据该公司的通知,这项服务将于11月1日开始提供,在有限的时间内,客户还可以从他们所有的加密货币余额中获得1%的现金返还。
Revolut的新功能是在等待获得批准后,从该国金融行为监管局获得注册,在英国提供加密货币服务。据其网站报道,该平台为其2000多万个人用户提供30多种数字货币的应用内交易。(coindesk)[2022/10/28 11:50:17]
我们向我们的「测试用户」Alice提供了10亿枚以太坊上的CarpetMoon代币。
https://ethtx.info/mainnet/0x7e2faa8426dacae92830efbf356ca2da760833eca28e652ff9261fc03042b313/
现在Alice使用LayerZero将这些代币跨链至Optimism。
我们将代币锁定在以太坊上的托管合约中:https://ethtx.info/mainnet/0xe4dc3757b86bfda8e7baddc088fb1a599e083ed77034c29e5dd8bd11f1e17771/。
包含着交易的消息正在通过LayerZero传递给Optimism:https://layerzeroscan.com/101/address/0xc6005ccc1de4b300d538903b74848bff881d5dc5/message/111/address/0x201fe0d843b546f2e24d4c8444318d1c71b7nonced10d/。
韩国加密交易所Korbit与清潭传媒签署NFT销售协议,计划10月推出NFT2.0交易所:8月24日消息,韩国加密交易所 Korbit 宣布已与清潭传媒签署销售 NFT 的业务协议。通过该协议,清潭传媒计划将自己的知识产权(IP)、故事内容转化为 NFT,并在 Korbit 的 NFT 交易所上展示。NFT 销售由 Korbit 独家处理,预计将于今年下半年开始发售,尚未决定发行 NFT 的区块链。
同时,Korbit 计划在今年 10 月左右推出 NFT 2.0 交易所,NFT 2.0 交易所计划不仅支持以太坊,还支持 Solana 和 Klaytn 等区块链。(CoinDesk Korea)[2022/8/24 12:45:04]
跨链的代币正在Optimism上铸造,Alice现在在Optimism上拥有10亿枚MoonCarpet代币:https://optimistic.etherscan.io/tx/0x5388ced88cf562acafff82d6798f791b0b38b90ee106df9bf91c0d86306ec302。
一切都按预期进行,Alice将代币跨链,并看到以太坊上的托管合约中有10亿枚MoonCarpet代币,她在Optimism的账户上有10亿枚MoonCarpet代币。但为了确保一切正常,她将一半的代币转回以太坊。
我们从Optimism上销毁5亿代币的交易开始:https://optimistic.etherscan.io/tx/0x118a57106488ad0bae1f3b920b1fd98b187752ad966f3a901fc53cff47f2097f。
有关该交易的信息被传递到以太坊:https://layerzeroscan.com/111/address/0x201fe0d843b546f2e24d4c8444318d1c71b7d10d/message/101/address/0xc6005ccc1de4b300d538903b74848bff881d5dc5/nonce/1。
正如预期的那样,5亿枚MoonCarpet代币从托管合约返回到Alice的地址:https://etherscan.io/tx/0x27702e07a65a9c6a7d1917222799ddb13bb3d05159d33bbeff2ca1ed414f6a18。
到目前为止,一切正常,也与假设的完全一致。Alice已经检查过她可以将代币从以太坊跨链到Optimism并再次跨链回来,她没有理由担心她的MoonCarpet代币。
但是假设本身存在问题——例如,我们的代币背后的团队遇到问题,坏人Bob获得了对我们应用的LayerZero配置的访问权限。
如此,Bob可以将预言机和中继器从默认的组件更改为由他控制的组件。
需要注意的是,这是为每个使用LayerZero的应用提供的机制,根植于LayerZero的架构中,它不是任何类型的后门,而是一种标准机制。
所以Bob将预言机更改为他控制下的EOA:https://ethtx.info/mainnet/0x4dc84726da6ca7d750eef3d33710b5f63bf73cbe03746f88dd8375c3f4672f2f/。
中继器也同样被更改:https://ethtx.info/mainnet/0xc1d7ba5032af2817e95ee943018393622bf54eb87e6ff414136f5f7c48c6d19a/。
现在奇怪的事情发生了。由于预言机和中继器现在在Bob的完全控制之下,他能够盗取Alice的代币。即使在Optimism上没有采取任何行动,Bob也能够说服以太坊上的MoonCarpet智能合约他在其他链上销毁了代币并且他能够提取在以太坊上的MoonCarpet代币。
首先,他使用由他控制的预言机更新以太坊的区块哈希:https://ethtx.info/0xde2edee2cc7f070120e96c9df90d86696970befcfc221e18c6ac4168bb5b1d92/。
现在他可以从托管合约中提取剩余的代币:https://ethtx.info/0xda695f374b375d5372efeca37aae4c5a17f114d5a76db1e86edebb0924bcdcc7/。
实验结果
Alice甚至不知道为什么以及什么时候发生了错误。突然之间,她在Optimism上的MoonCarpet代币不再得到以太坊上代币的支持。
智能合约不可升级,并且按预期运行。唯一可疑的活动是预言机和中继器的变化,但这是LayerZero内置的常规机制,因此Alice甚至不知道这种变化是否有意为之。即使Alice知道了这个变化,也已经太晚了——攻击者可以在她做出反应之前耗尽资金。
LayerZero也无能为力——这些都是他们机制的有效执行,他们无法进行控制。理论上,应用本身可以阻止自己更改预言机和中继器,但据我们所知,已经部署的应用都没有这样做。
我们做了这个实验来测试是否有人注意到它,但正如我们所料,没有人注意到。有效地监控所有使用LayerZero构建的应用来检查它们的安全策略是否发生改变,并在发生这种情况时警告用户是几乎不可能的。
即使有人能够及时发现预言机和中继器已经发生变化并带来了安全风险,但为时已晚。由于新的预言机和中继器现在可以自由选择传递的消息或简单地禁用链间通信,用户通常对此无能为力。我们的实验清楚地表明,即使Alice注意到应用配置的变化,她也不能用她的跨链代币做太多事情——新的预言机和中继器已不再在原始的通信链条上接受消息,所以不会将消息返回以太坊。
结论
正如我们所看到的,即使我们的代币是使用LayerZero构建并按预期使用其机制,我们还是能够从代币的托管中窃取资金。当然,这是应用的错误,而不是LayerZero本身的错误,但这证明LayerZero本身不提供任何安全保证。
当LayerZero描述他们关于预言机和中继器的安全模型时,他们假设应用所有者不会做任何不合理的事情。但在对抗性的环境中,这种假设是不正确的。此外,它要求用户将应用开发者作为可信赖的第三方来信任。
因此在实践中,人们不能对使用LayerZero构建的应用的安全性做出任何假设——每个应用都应该被认为是有风险的,直到证明不是这样。
实际上,整个故事是从我们计划在L2BEAT网站上包含所有omnichain代币的PR开始的——我们很难弄清楚如何评估它们的风险。在分析风险时,我们提出了实验的想法。
如果在L2BEAT上线,后果是我们必须在使用LayerZero构建的每个应用之上放置警报,警告可能存在的安全风险。但我们想就安全模型展开更广泛的讨论,因为我们认为独立的安全是一种应该避免的模式,尤其是在我们的领域。
我们相信,随着LayerZero等独立安全模型越来越流行,将会有越来越多的项目滥用它们,造成大量破坏并增加整个行业的不确定性。
郑重声明: 本文版权归原作者所有, 转载文章仅为传播更多信息之目的, 如作者信息标记有误, 请第一时间联系我们修改或删除, 多谢。