web3: 跨链桥为何频遭攻击,40亿美元损失从何而来

摘要
跨链桥依赖外部验证在不同链间转移资产,这一环节也成为主要攻击面。Ronin、Wormhole 等案例显示,密钥集中和验证漏洞是损失扩大的核心原因 。
不同区块链彼此独立运行,无法直接读取对方状态。用户若想把资产从一条链转到另一条链,就需要依赖跨链桥。这个需求推动了大量桥接协议出现,但也让跨链桥成为加密行业最容易遭受攻击的基础设施之一。
文章指出,跨链桥的核心难点不在“转移资产”本身,而在“如何证明转账已经发生”。一旦验证机制出现漏洞,攻击者就可能在目标链上铸造没有真实资产支持的代币,或直接提走锁仓资金。多起事件累计下来,跨链桥相关损失已达到约 40 亿美元。
三种常见跨链方式
最早也最常见的模式是“锁定并铸造”。用户先把资产存入源链合约,资产被锁住后,由验证者、预言机或中继者向目标链证明这笔存款存在,再由目标链合约铸造对应的封装资产。用户若要转回原链,则需要先销毁封装资产,再解锁原始资产。
这种模式的问题在于,目标链是否放行,完全取决于验证步骤是否可靠。理论上,锁仓资产与目标链铸造资产应保持 1:1 对应。一旦攻击者伪造存款证明,就会出现没有真实抵押的“空气资产”。消息传开后,持有人通常会集中赎回,最后进入的人可能发现金库已经被掏空。
第二种是“销毁并铸造”。在这种模式下,源链资产会被直接销毁,目标链再铸造原生版本的新资产。由于不存在封装代币,这种方式可以减少流动性割裂。USDC 的跨链转移协议 CCTP 就采用了这一思路。
不过,这种模式只适用于发行方能同时控制多条链上铸造权限的代币。也就是说,它并不适合所有通用代币。每接入一条新链,通常都需要发行方直接参与部署和维护。
第三种是流动性池模式。用户把资产存入源链池子后,协议会从目标链预先准备好的池子中支付等值资产,之后再定期做跨链再平衡。Stargate 和 Across 等协议采用了类似设计。它的优点是到账更快,用户拿到的是目标链上的原生资产;缺点则是需要在多条链上提前铺设大量资金,资本占用较高。
Ronin损失6.24亿美元
2022 年 3 月,连接以太坊与 Ronin 侧链的 Ronin Bridge 遭攻击,损失约 6.24 亿美元,涉及 ETH 和 USDC。这是跨链桥历史上最严重的攻击之一。
Ronin 当时采用 9 个验证节点组成的多签机制,任意 5 个签名即可批准提款。表面上看,这意味着攻击者需要同时攻破多数验证者,成本应当很高。但实际情况是,Axie Infinity 开发商 Sky Mavis 控制了其中 4 个节点,而另一个外部验证者此前曾临时授权 Sky Mavis 代签,之后并未撤销权限。
攻击者随后入侵 Sky Mavis 系统,拿到 5 个验证节点的私钥,并据此批准了两笔虚假提款,分别提走 173,600 枚 ETH 和 2,550 万枚 USDC。事件在 6 天后才被发现,原因是一名用户尝试提取 5,000 枚 ETH 时,发现桥内资金已经不足。
这一案例说明,多签结构是否安全,不只取决于签名数量,更取决于签名方是否真正独立。如果多数密钥实际掌握在同一机构手中,多签就会退化为单点风险。
Wormhole验证失误放大损失
2022 年 2 月,Wormhole 遭攻击,攻击者在未向以太坊存入真实 ETH 的情况下,在 Solana 上铸造了 120,000 枚 wETH,按当时价格计算约值 3.26 亿美元。
Wormhole 依赖 19 个 guardian 节点验证跨链消息。正常流程是,这些节点观察到源链存款后,会签发一份证明,再由 Solana 侧合约验证签名并完成铸造。问题出在 Solana 侧的签名验证逻辑。由于合约使用的系统指令存在缺陷,未能正确校验传入账户,攻击者得以伪造 guardian 集合,并提交一份虚假的签名证明。
结果是,合约把并不存在的授权当成了真实授权,最终放行了无抵押铸造。事后,Wormhole 背后的 Jump Crypto 用自有储备补上了被盗的 120,000 枚 ETH,避免了 Solana 生态内更多协议因持有 wETH 而出现连锁损失。
这类事件表明,跨链桥的验证代码本身就是高价值攻击面。只要签名校验、消息验证或权限判断存在一个逻辑漏洞,攻击者就可能绕过整个安全模型。