Cointime

扫码下载App
iOS & Android

L2BEAT 用一个实验“破解”了 LayerZero:为什么“独立安全”不安全?

作者:Krzysztof Urbański,L2BEAT 团队成员

编译:Babywhale,Foresight News

L2BEAT 从成立以来就投入了大量精力来分析和理解与 Layer 2 协议相关的风险。我们始终以用户和生态系统的最大利益为出发点,尽最大的努力成为一个公正、独立的监督者,不会让我们对项目或相关团队的个人偏好影响事实。这就是为什么即使我们尊重项目团队投入项目的时间和努力,但也会对某些协议存在的潜在风险「拉响警报」或指出我们的担忧。尽早进行与安全相关的讨论可以让整个生态系统更好地为潜在风险做好准备,并对任何可疑行为更早地做出反应。

今天我们想就跨链应用的共享安全模型展开讨论。目前有两种安全模型:共享安全与独立应用安全。共享安全性就例如所有的 Rollup。独立应用安全性主要由「omnichain」项目使用,这类项目的主要使用的是 LayerZero。

共享安全与独立安全

共享安全性是指在给定基础架构上运行的特定代币或应用,而不是自由选择安全模型,他们必须遵守基础设施强加的任何安全要求。例如,Optimistic Rollups 通常会施加一个 7 天的最终窗口期——在此类 Rollups 上运行的应用不能简单地忽略或缩短这个期限。这虽然看起来像是一个障碍,但它是有原因的。这个期限为用户提供了安全保证,无论应用的内部安全策略是什么,都必须遵守这套安全政策,应用可能只会加强 Rollups 的安全性,而不会削弱它。

独立安全是指每个应用都负责定义其安全性,不受基础设施以任何方式进行的限制。这乍看之下似乎是个好主意,毕竟应用的开发人员最清楚应用可能需要哪些安全措施。但与此同时,它将评估与每个应用安全策略风险相关的责任转移给了终端用户。此外,如果应用开发者可以自由选择他们的安全策略,他们也可以随时更改。因此,对每个应用评估一次风险是不够的,每次应用的政策发生变化时都应该对其进行评估。

存在的问题

我们认为每个应用都可以自由定义其安全策略的独立安全模型会带来严重的安全问题。首先,它增加了终端用户的风险,因为他们必须验证他们打算使用的每个应用的风险。

独立安全还增加了使用这种模型的应用的风险,例如增加了有关安全策略更改的额外风险——如果攻击者要更改应用的安全模型,还不如简单地禁用它,从而耗尽资金或以任何其他方式进行攻击。应用之上没有额外的安全层来防止被攻击。

此外,由于安全策略能够随时且即时更改,因此几乎不可能实时监控应用并告知用户风险。

我们发现它类似于智能合约的可升级性,我们已经在 L2BEAT 上发出了警告。我们告知用户在其智能合约中具有可升级性机制的 Rollup 和跨链桥,以及在每种情况下管理可升级性的确切机制。这已经相当复杂了,加之使用独立的安全模型更会使得数目成倍增加,几乎不可能有效跟踪。

这就是为什么我们认为独立的安全模型本身就是一种安全风险,并且我们假设默认情况下将使用这种模型的每个应用都应被视为有风险,除非证明并非如此。

证明安全漏洞存在

我们决定在主网上测试我们的假设。选择 LayerZero 框架进行实验是因为它是最流行的以独立安全为核心的解决方案之一。我们部署了一个安全的 omnichain 代币,之后更新安全配置,允许恶意提取代币。代币的代码基于 LayerZero 提供的示例,与实际部署的许多其他 omnichain 代币和应用程序非常相似或相同。

但在我们深入细节之前,让我们简要了解一下 LayerZero 安全模型是什么样的。

正如 LayerZero 在白皮书上指出的,其「无需信任的链间通信」依赖于两个独立的参与者(预言机和中继器)共同行动以确保协议的安全。

LayerZero 在其网站上表示,其核心概念是「运行 ULN (UltraLightNode) 、可配置链上终端的用户应用」。LayerZero 的链上组件依赖于两个外部链下组件在链之间中继消息——预言机 和中继器。

每当任何消息 M 从 A 链发送到 B 链时,都会发生以下两个操作:

  • 首先,预言机等到在 A 链上发送消息 M 的交易完成,然后在 B 链上写入相关信息,例如 A 链包含消息 M 的区块头的哈希值(不同的链 / 预言机之间的确切格式可能有所不同)。
  • 然后中继器向 B 链发送一个「证明」(例如 Merkle Proof),证明存储的区块头包含消息 M。

LayerZero 假设中继器和预言机是独立、诚实的参与者。但 LayerZero 也在白皮书中表示,如果不满足该假设,例如中继器和预言机串通,导致「预言机提供的区块头和中继器提供的交易证明均无效,但仍然匹配」。

LayerZero 声称「LayerZero 的设计消除了合谋的可能性」。但事实上,这种说法是不正确的(我们在下面展示的实验中证明了这一点),因为每个用户应用程序都可以定义自己的中继器和 预言机。LayerZero 不通过设计保证这些组件是独立的并且无法串通,而是由用户应用提供这些保证。如果应用选择破坏它们,LayerZero 没有任何机制可以阻止。

此外,默认情况下,所有用户应用都可以随时更改 中继器 和 预言机,从而完全重新定义安全假设。因此,仅检查一次给定应用的安全性是不够的,因为它可能在检查后随时更改,正如我们将在实验中展示的那样。

实验设计

在我们的实验中,我们决定创建一个简单的 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 代币完全一样,使用默认配置,没有任何可疑之处。

我们向我们的「测试用户」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/

跨链的代币正在 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 上没有采取任何行动(MoonCarpet 代币仍在 Alice 的钱包中),Bob 也能够说服以太坊上的 MoonCarpet 智能合约(使用 LayerZero 机制)他在其他链上销毁了代币并且他能够提取在以太坊上的 MoonCarpet 代币。

首先,他使用由他控制的预言机更新以太坊的区块哈希:

https://ethtx.info/0xde2edee2cc7f070120e96c9df90d86696970befcfc221e18c6ac4168bb5b1d92/

现在他可以从托管合约中提取剩余的代币:

https://ethtx.info/0xda695f374b375d5372efeca37aae4c5a17f114d5a76db1e86edebb0924bcdcc7/

实验结果

Alice 甚至不知道为什么以及什么时候发生了错误。突然之间,她在 Optimism 上的 MoonCarpet 代币不再得到以太坊上代币的支持。

智能合约不可升级,并且按预期运行。唯一可疑的活动是预言机和中继器的变化,但这是 LayerZero 内置的常规机制,因此 Alice 甚至不知道这种变化是否有意为之。即使 Alice 知道了这个变化,也已经太晚了——攻击者可以在她做出反应之前耗尽资金。

LayerZero 也无能为力——这些都是他们机制的有效执行,他们无法进行控制。理论上,应用本身可以阻止自己更改预言机和中继器,但据我们所知,已经部署的应用都没有这样做。

我们做了这个实验来测试是否有人注意到它,但正如我们所料,没有人注意到。有效地监控所有使用 LayerZero 构建的应用来检查它们的安全策略是否发生改变,并在发生这种情况时警告用户是几乎不可能的。

即使有人能够及时发现预言机和中继器已经发生变化并带来了安全风险,但为时已晚。由于新的预言机和中继器现在可以自由选择传递的消息或简单地禁用链间通信,用户通常对此无能为力。我们的实验清楚地表明,即使 Alice 注意到应用配置的变化,她也不能用她的跨链代币做太多事情——新的预言机和中继器已不再在原始的通信链条上接受消息,所以不会将消息返回以太坊。

结论

正如我们所看到的,即使我们的代币是使用 LayerZero 构建并按预期使用其机制,我们还是能够从代币的托管中窃取资金。当然,这是应用(在我们的例子中是 CarpetMoon 代币)的错误,而不是 LayerZero 本身的错误,但这证明 LayerZero 本身不提供任何安全保证。

当 LayerZero 描述他们关于预言机和中继器的安全模型时,他们假设应用所有者(或拥有私钥的人)不会做任何不合理的事情。但在对抗性的环境中,这种假设是不正确的。此外,它要求用户将应用开发者作为可信赖的第三方来信任。

因此在实践中,人们不能对使用 LayerZero 构建的应用的安全性做出任何假设——每个应用都应该被认为是有风险的,直到证明不是这样。

实际上,整个故事是从我们计划在 L2BEAT 网站上包含所有 omnichain 代币的 PR 开始的——我们很难弄清楚如何评估它们的风险。在分析风险时,我们提出了实验的想法。

如果在 L2BEAT 上线,后果是我们必须在使用 LayerZero 构建的每个应用之上放置警报,警告可能存在的安全风险。但我们想就安全模型展开更广泛的讨论,因为我们认为独立的安全是一种应该避免的模式,尤其是在我们的领域。

我们相信,随着 LayerZero 等独立安全模型越来越流行,将会有越来越多的项目滥用它们,造成大量破坏并增加整个行业的不确定性。

评论

所有评论

推荐阅读

  • 加密交易生态系统LazyBear完成400万枚USDT战略融资

    加密货币交易生态系统LazyBear宣布完成400万枚USDT战略融资,Gogeko Labs、DWF Labs、Shadow Labs、Salad Labs、Bees Network、REI Network、IBIT、Crypto Bullish、SYNBO Protocol、Bazaars、Sypool、Bitcoin Gbox、GemX Crypto、Wikibit等参投。据悉,LazyBear是面向零售交易者的一个加密货币交易生态系统,致力于为用户提供行业低免费、普惠、愉悦的交易体验。

  • 4月29日晚间要闻速递

    1. BTC短时突破63000美元

  • Tether投资2亿美元收购医疗设备公司Blackrock Neurotech的多数股权

    稳定币USDT的发行方Tether周一表示,通过其风险投资部门Tether Evo,投资2亿美元收购了脑机接口公司Blackrock Neurotech的大部分股权。Blackrock Neurotech开发的医疗设备由脑信号驱动,旨在帮助受到瘫痪和神经系统疾病影响的人。该科技公司与资产管理巨头BlackRock无关。投资将用于推出和商业化医疗设备,并进行研究和开发。Tether是USDT的发行公司,是市值达1100亿美元的最大稳定币。最近,Tether成立了四个部门,以扩大稳定币发行之外的业务。

  • 欧盟至少有10个国家正在敲定或已经敲定地方立法,以促进将MiCA法规转换为当地法律

    针对稳定币发行商的《加密资产市场 (MiCA) 法规》专项规则将率先生效,随后将在12月针对整个加密货币行业的公司实施许可和其他要求。 MiCA法规于2023 年获得通过,此前欧盟各国政府花了三年时间制定监管框架。一旦生效,每个司法管辖区都必须将欧盟范围内的MiCA法规转换为当地法律,选择其监管机构中的哪一个来监管加密货币,并准备授权代币发行商和其他服务提供商。目前20个国家正处于不同的准备阶段,至少有10个国家正在敲定或已经敲定了地方立法

  • 纽约公司Turnkey获得1500万美元A轮融资,将用于扩大业务和开发工作。

    纽约市的加密开发人员钱包基础设施提供商Turnkey获得了1500万美元的A轮融资,由Lightspeed Faction和Galaxy Ventures领投,Sequoia、Coinbase Ventures、Alchemy、Figment Capital和Mirana Ventures参与。该公司打算利用这笔资金扩大业务和开发工作。Turnkey由Bryce Ferguson和Jack Kearney共同创立,提供钱包基础设施,为构建链上体验的团队提供低级原语。Turnkey的产品套件使开发人员能够构建任何涉及钱包或加密交易的东西,并已为Alchemy、Dynamic、Goldfinch、Halliday、Thunder Terminal和Kinto等行业中最好的开发人员工具和应用程序提供支持。

  • 加拿大总理提议对股票和加密货币征收资本利得税

    加拿大总理Justin Trudeau提出了一项新的资本利得税,该税率将从50%到67%不等。根据加拿大税务局网站,常见的资本财产包括别墅、证券(如股票、债券、加密货币和共同基金信托单位)、土地和建筑物。在加拿大纳税人购买或持有加密货币无需纳税,对来自加密货币销售、挖矿活动或其他加密货币相关交易的资本收益或商业收入征税,个人加密货币持有者需为其总资本收益的 50%纳税,而专业(日间)交易者则需为其利润的100%纳税。

  • 泰国监管机构将打击欺骗性加密货币广告

    据《曼谷邮报》报道,包含虚假、夸大、扭曲、隐瞒或误导性信息的加密货币广告违反了泰国法规。主要加密市场的监管机构也采取了类似措施,以尽量减少加密投资的损失。例如,英国金融行为监管局 (FCA)仅在 2023 年就发布了 450 条非法加密货币广告警报。此外,2023 年 11 月,西班牙主要证券市场监管机构国家股票市场委员会谴责了 X 上的欺诈性加密资产促销活动,并重申公司有遵守当地法律的义务。 泰国证券交易委员会提醒加密货币交易所纳入有关投资风险的适当警告,并避免通过特别促销来吸引新用户。他警告说,违反上述指导方针将招致“依法惩处”。

  • 俄罗斯将实施加密货币限制,豁免矿工和央行项目

    俄罗斯将实施加密货币限制,豁免矿工和央行项目。自9月1日起,俄罗斯将对比特币等加密资产的流通实施严格限制。仅允许在其管辖范围内发行数字金融资产。 国家杜马金融市场委员会主席Anatoly Aksakov领导了这一举措。这是在地缘政治紧张局势加剧的情况下政府控制加密生态系统的更广泛努力的一部分。Aksakov表示,即将出台的立法旨在限制非俄罗斯加密货币业务,以加强卢布的主导地位。 与此同时,最近的报告表明,俄罗斯实体已使用加密货币,特别是 Tether 的 USDT来采购军事技术的关键组件。

  • 4月迄今以太坊链上稳定币交易量超1万亿美元,创历史新高

    4月29日消息,The Block数据显示,截至4月28日,4月以太坊链上稳定币交易量达1.08万亿美元,创历史新高,其中DAI交易量为5780.7亿美元,排名第一;USDC以2681.5亿美元交易量位居第二,USDT以1986.2亿美元交易量排名第三。

  • 许正宇:香港政府今年稍后将发表金融市场应用AI政策立场和方针

    香港财经事务及库务局局长许正宇在北京2024中关村论坛金融科技平行论坛时指出,随着人工智能科技不断演进,香港政府会保持开放态度,密切监察市场发展,以及参考海内外的经验,以推动金融业负责任地使用人工智能。今年稍后,香港政府会发表政策宣言,阐述香港政府对于在金融市场应用人工智能的政策立场和方针。 许正宇还表示,推动人工智能技术生态圈方面,香港数码港正全速设立人工智能超算中心,协助研究机构和业界应付算力需求,首阶段设施最快于今年内投入服务。此外,香港政府会拨款30 亿港元推行为期3年的人工智能资助计划,资助大学、研发机构及企业等运用算力,推动科研突破;加强算力中心的网络安全和数据保护;以及进行推广和教育活动等,从而吸引海内外人工智能专家、企业及研发项目落户香港。