广告

跨链桥为什么会有这么多低级事故?

近期频发的跨链安全问题吸引市场的广泛关注,本文希望从产品设计的角度入手,给读者讲述为什么这个赛道的产品安全问题这么多。需要声明的是,文章中所指出的问题并不是每个项目都会存在的,大部分问题在设计时都已经有了相关的应对策略,本文的目的主要还是希望更多人可以理解这个赛道的复杂程度。

文章的撰写逻辑是:先讲清楚通用的跨链桥都是怎么设计的,加深读者对跨链桥的理解,再总结这些跨链桥可能会遇到的安全问题。

一:万变不离其宗的跨链方案

之前的研报实际上已经向大家阐述过几种不同类型的信息跨链方案,不论最终的呈现是什么样的,从产品设计的角度来说,只有侧链(广义上的侧链,在文中讲 rollup 也归纳为侧链,别杠),哈希时间锁定,公证人这三种机制。

(一)侧链

这三种方案中侧链方案的安全性最高,比如各种不同的 rollup 和 polkadot 的平行链。主链和侧链之间共享安全性。

但是侧链方案一般要求原链和目标链同构,这样一来可适用的场景就要少得多。这也是为什么 V 神认为赞同多链,但不认可跨链的原因所在,因为无法共享安全性的跨链方案实在是问题太多了。

(二)哈希时间锁定

这种方案号称是点对点的最去中心化的异构跨链方案,但是成本较高,用户等待时间过长,导致当前的采用率并不高。且当我们依然需要一个第三方充当换币中间节点时,也需要一个所谓的中间共识层去满足安全性和去中心化的要求。

(三)公证人机制

这是当前最常用的异构跨链桥方案,市场上的大多数产品基本都同根同源,从产品设计的角度来说几乎没有区别。主要的区别可能集中在信息校验的方式步骤,公证人的共识算法,托管钱包的签名算法等。从使用体验和安全性上的差别也都不太大。因此,从安全的角度来说,所面临的安全风险也是有很多共性的。

本文将着重总结和分析公证人机制的跨链桥所面临的一些具有共性的安全风险。

二:公证人机制的产品逻辑流程

在了解公证人机制所面临的各类风险之前,我们需要先了解这种类型的方案从产品的角度来看,主要是什么样的设计逻辑。

(一)简述

这种方案从设计哲学的角度来说其实非常简单。当我们面向异构资产跨链的需求,最直观的方案其实是「映射」。映射的意思是当用户 A 将 ETH 从以太坊跨到 Fantom 上时。我们并不需要将资产实际转移,或者在 Fantom 上重新发行(这也做不到)。而是先将用户 A 的 ETH 存到一个不能移动的地址,然后根据存在这个地址中用户 A 的 ETH 数量,再在 Fantom 上发行对应的 1:1 的映射资产。映射资产代表了以太坊原链上那些 ETH 的使用权。因为有 1:1 的锚定,Fantom 上的用户也认可这个资产的价值。

最简化的跨链流程

(二)设计的难点

这里面会存在很多问题,其中最大的问题是多签钱包的管理问题,因为 ETH 从以太坊跨到 Fantom 上是充币,而如果用户 A 还想跨回来那就会涉及到提币的问题。

充币和提币的去中心化和安全性就成为了最大的难点。

1:谁来管钱?

2:谁来发起?

3:谁来监听交易?

4:怎么确认确实有用户转钱进来了?

5:怎么确认用户的钱确实是用户本人想提出去?

6:怎么防止重放攻击?

7:发起失败的交易怎么再次提交?

8:多签管理者作恶怎么办?

9:宕机怎么办?

不敢想,越想感觉越复杂。跨链桥的技术不仅仅涉及到多签,还涉及到资产发行,跨链监听,异步验证,甚至需要发行一个独立的中间共识层(一条新链)。

因此为了进一步简化用户的理解难度,我将整个跨链的流程分为充币和提币两个部分进行讲解。以帮助大家更进一步了解:

(三)流程的进一步细化

1:充币

先声明一下,下图所画的流程只是我自己经过推演后的设计方案,没有经过仔细的论证,目的是为了探究设计逻辑中所可能出现的安全问题,并不可以作为成型的方案去采用,全是瞎扯。

如图所示:一笔从原链到目标链的充币交易原则上会包含这些步骤:

(1)用户充值到托管地址

(2)监听器监听到这笔交易后由 BP(共识节点也是多签管理员)发起交易

(3)合约验证 BP 签名的正确性

(4)是否有通过节点容错机制

(5)如果没有打回去,如果有的话根据映射地址的关系为目标链地址充值

(6)BP 确认这笔充值交易

(7)通过拜占庭后将映射代币转给用户在目标链上的地址

需要特别注意的是,这个流程旨在讨论通用的异构跨链,所以相比于 anyswap 等方案增加了一步在中间共识层上让用户绑定地址关系的步骤。这主要是不同异构链交易附带信息的方式不一样,为了统一处理,干脆先让用户绑定好映射关系。

如果处理的都是 EVM 链的交易则不需要这步,直接在发起交易时附带目标链地址即可。

回到正题:从上述的流程中可以看出,从第二步开始,就会遇到各类的逻辑验证问题,和不同情况下的处理问题。

主要的验证逻辑包括:

(1)监听到交易后对发起资产映射和转出到用户 A 的目标链交易的验证

(2)目标链交易的发起以及交易结果的验证

当然除了我流程中所画的验证逻辑之外,还应该包括对假币充值问题的校验,以及调用不同 token 时所需做的特殊处理问题。为了在后续更好的总结可能会出现的安全隐患,我们先继续来理解提币的流程。

2:提币

提币所演示的流程是目标链映射资产换回原链资产的逻辑,需要特别注意的是,当前很多代币都发现了多个链的版本,也就是说很多代币都在多个链上拥有原生代币。因此,一些桥的项目往往会设立资产池。在资金池充足的情况下,让用户感受不到 anyDAI 这样的映射资产的存在,而是直接换成目标链版本的 token,但这并不影响整体的逻辑。所以,分析继续:

如图所示:一笔从目标链提币到原链的交易流程如下:

(1)用户发起交易(转等量的映射资产到目标链上的托管钱包)

(2)验证 BP 身份,由某个 BP 发起提币请求

(3)确认提币权限和签名

(4)通过拜占庭后完成请求在原链提币,把钱从原链的托管钱包里转出来到用户 A

(5)如果这中间因为节点验证出错或者宕机等问题还要回滚重新发起

从上述流程可以看出,这里面涉及的主要验证逻辑有:

(1)发起和签名权限的验证

(2)问题出现后的容错机制

(四)安全风险

1:设计逻辑上的安全问题

较为仔细的了解了跨链桥的设计后,我们可以发现在设计逻辑上跨链桥面临的挑战非常多,总结一下主要包含三个方面的问题(相关的被盗案例标注在问题最后)

(1) 充币

a) 充币合约权限漏洞,导致充进去的钱直接被转走。这是一个几乎所有合约项目都会遇到的愚蠢的问题,

b) 假币充值问题,某些项目未对跨链 Token 的真实性做验证,导致 fakeTOKEN -> realTOKEN(anyswap),说实话这个也有点蠢。

c) 假币充值问题,ETH 等原生资产不同于 ERC20 合约,很多攻击都是由于对 ETH 特殊处理不当,导致 fakeETH -> realETH,这也是为什么 WETH 等 wrapped 资产流行的原因。(thorchain)

d) 不同的 Token 虽然都是 ERC20 标准,但具体的实现方式不一样,或者额外有别的逻辑(rebase,fallback 等),开发者没有在适配时做好调研,像(WETH、PERI、OMT、WBNB、MATIC、AVAX) 等在转账完成后还会去调用 sender 自定义的 fallback 函数做额外的操作,增加了跨链桥判断的复杂性 (anyswap 2022.1.18)

(2) 跨链消息转移

在 a 链充币完成后,到 b 链资产到账前,跨链桥的处理像是一个独立的区块链系统,即需要一个共识机制,一般用 dpos,以下都是假设用 dpos 的情况下需要考虑的问题,但我怀疑所有的节点都是项目方的,首先就具有中心化风险。

a) 充币消息监听,谁来第一个发起跨链处理提案,随机?还是轮流?还是按照中间共识层的出块顺序?

b) 多个公证人如何验证充币的正确性,倘若数据源都来自 infura 等数据提供商,则 infura 是一个单点风险,最稳妥的是各自维护节点,这样成本巨大。

c) 如何确认跨链处理完了(b 上到账了),没处理完有几种情况:

i. 跨链桥没有发起处理

ii. 跨链桥发起处理了,但是验证&共识没有通过

iii. 跨链桥验证通过,但没有在 b 链上发起交易

iv. b 链上有交易,但失败了(资金不够或者别的情况)

(3)多重签名验证问题

问题多发的重灾区,大多数都是代码逻辑问题

a) 3/5 签名,我随便构造不在多签列表里的签名,也算+1(chainswap)。

b) 中心化问题,名义上是多签,其实掌握在项目方手中,巨大的中心化风险。

c) 签名验证方法,不同链上的开发模式不一样,导致开发者在对接的时候难免会有遗漏,wormhole 例子: solana 上的验证签名函数是系统合约里的一个函数, 正常应该去调用系统合约,系统合约的地址应该写死在代码里, 他们这里把系统合约地址是当做参数传进来的, 黑客提币时传了个假的系统合约地址,就绕过了验签,顺利把币提走。

(4) 退款

a) 如同(2)-c 中讨论的,跨链状态有很多种可能,在任何情况下都需要给用户提供一个退款的方式,比如 anyswap 在充币时会先在源链上给用户发 anyToken,然后再在目标链上给用户发 anyToken,然后把源链的 anyToken burn 掉,这样的目的就是不管问题出在哪,用户都可以通过持有 anyToken 表示自己持有的资产。这个过程中有 3 条链(源、目标、跨链桥)和 4 个资产(源链和目标链上的原始 Token/anyToken),非常容易出现代码逻辑的问题。

b) Thorchain 在 2021.7.23 爆出的漏洞,黑客利用代码逻辑问题,构造了一笔巨额假充值,跨链桥无法处理,就进入了退款逻辑,导致黑客拿到巨额退款。

2:其他的安全风险

但是通过逻辑流程所能展示的问题只是业务逻辑上的问题,并不是全部。

从安全的角度出发,我们还应该考虑另外三个方面的风险:

(1)系统性的风险

比如原链的充币一开始成功,后来回滚了,这是一个巨大的问题,v 神讨论过,资产从 Solana 跨到 Ethereum,跨链完成后 solana 回滚,则用户资产翻倍,没有任何解法。

但比如 rollup 这种和 Ethereum 共享安全性的 layer2,就不会有这种问题。

(2)前端的风险

a) 伪造的网址,比如 oxdao.fi 0xdao.fi oxdai.fi 等。

b) Xss 攻击,即跨站脚本攻击,是一种代码注入攻击,比如www.xxxx.finance/?params=hackerscode12345, 虽然网址确实是官方网址,但是网址中携带了黑客的代码,如果前端开发没有注意防止 xss,则这段代码会在页面上执行,导致用户对黑客的转账交易授权签名,因此不要打开来历不明的链接。

c) Cors 跨站服务攻击,在严格的同源策略中,浏览器只允许加载来自本站点的内容,即www.xxxx.finance站点显示的所有内容、调用的接口,都应该来自于 xxxx.finance 域名下,但目前绝大多数项目,都允许跨站调用,即 xxxx 前端可以调用 quickswap 的接口,反之亦然,这给开发上带来了便利,但也带来了风险:

假如我访问了 xxxx.finance,在浏览器缓存里存入了一些敏感数据,然后我访问了一个恶意网址,如果 xxxx 的同源策略没有限制,则这个恶意网址可以随意获取 xxxx 存在缓存中的数据。

(3)额外功能的风险

有些跨链桥项目,不止提供资产跨链,还提供跨链合约调用,这就带来了额外的复杂性。

攻击者在 a 链发起一笔对 b 链上 x 合约的调用,跨链桥不管 x 合约是啥就直接调用了,没想到 x 合约是跨链桥在 b 链上的多签合约,这笔调用是将多签账户改为攻击者自己的地址,执行成功后,黑客可以随意支配跨链桥在 b 链上的资金了(poly network)。

三:结语

1:本报告的目的在于帮助用户较为明确的理解跨链桥的安全风险所在,并非恶意的渲染跨链桥有多容易遭受攻击。

2:公证人机制的跨链桥方案至少从目前来看是体验最好,适用范围最广且成本最低的方案。并且任何产品都会经历从伤痕累累到成熟的过程,区块链产品所遭受的攻击往往都是「逻辑问题」。这些问题随着时间的推移和经验的增加一定会越来越好。

24小时热点

OEX全球站交易所介绍

OEX(www.oex.com)隶属于OEX Interna ...

277185

Cointelegraph Bitcoin

一文教会新人如何进行trc20钱包搭建

在数字货币领域,TRC20是波场(Tron)网络上一种非常流 ...

10197

波场区块链浏览器

《图灵完备》游戏攻略第二章:算术运算和存储器——二进制速算

第二章:算术运算和存储器——二进制速算:你可以通过《图灵完备 ...

30582

币格

盘点比特币加密钱包排行榜前十名

目前全球的加密货币规模快速的呈上涨趋势,其中为了更安全储存加 ...

4175

波场区块链浏览器

区块链usdt钱包注册教程及使用说明

在数字货币的众多类型中,USDT因其稳定性和广泛的应用场景而 ...

16075

波场区块链浏览器

FTN和FTE的区别,分别是什么意思?

Ftn和fte在平台、适用的数字货币种类、功能这几个方面都存 ...

1773

波场区块链浏览器

PKT币(Playkey)挖矿原理?

PKT币是Playkey项目的原生代币,主要用于激励用户参与 ...

995

区块链网快讯

赛迪智库

赛迪智库是赛迪研究院(IDC)旗下的智库咨询机构,是行业共享 ...

31700

摩点

传销不敢骗的五类人

1.老人:老人受过多年的教育教育,有良好的道德素养,坚守原则 ...

103066

ZPLAN元宇宙

区块链应用产品evm钱包是哪个钱包

在区块链技术不断发展和应用领域不断拓宽的当下,各种加密货币钱 ...

18918

波场区块链浏览器
广告

热点专题

区块链网是什么

中国区块链价值评价中心 中国区块链价值评价中心于2 ...

5256652

知信链

元界(Metaverse)

元界(Metaverse)是一个去中心化的公有区块链项目,元 ...

950891

WEEX数字货币

BTC123

BTC123(www.btc123.com)成立于2011年 ...

725271

Kusama 测试网

DAC币——达芬奇Davinci Coin

达芬奇项目的平台是通过叫作"Dchain"的自身区块链把可以 ...

686681

Mechanism Capital

Bitfinex(香港B网)

Bitfinex交易平台目前仍处于试运营阶段,该平台由iFi ...

659623

Hi元宇宙

MCO币

MCO,前为Monaco,朝着让每个钱包都载有加密货币的愿景 ...

647986

第九空间

熊猫矿机(PandaMiner)

熊猫矿机(PandaMiner),企业文化背景为:其一,熊猫 ...

627345

金融界区块链频道

陈景润证明哥德巴赫猜想1+2的论文

大偶数表为一个素数及一个不超过二个素数的乘积之和 。 本 ...

594597

鲸探

中币网zb——中币交易所

ZB.com是一个全球化的数字货币交易所,目前已获得泰国和迪 ...

570556

中币交易所

五大区块链骗局揭露

从古至今,骗子这个行当一直都是经久不衰,上至皇宫贵族,下至农 ...

515442

DeRace