电脑疯子技术论坛|电脑极客社区

微信扫一扫 分享朋友圈

已有 474 人浏览分享

为什么黑客如此“钟爱”跨链桥

[复制链接]
474 0
0x1 背景介绍

随着区块链及链上程序的增长,多链资金转换需求迫切,跨链桥业务随之增加,有业务的地方就会
有安全问题跨链桥为用户提供便利的同时,可能也为黑客提供了另一扇大门,Poly Network攻击
事件发生后跨链桥安全问题也随之显露出来。

0x2 什么是跨链桥?

区块链桥,也称为跨链桥,连接两条区块链 允许用户将加密货币从一条链发送到另一条链。
跨链桥通过在两个独立平台之间启用代币转移、智能合约和数据交换以及其他
反馈和指令来进行资金跨链操作。

普通跨链桥运行如下:

用户将资产 A 发送到原始链上的一个存款地址并支付过桥费;

资产 A 被随机选择的智能合约中的验证者锁定或受信任的托管人;

在目标链上发行等量的资产A1,并将资产 A1 被发送到目标链上的用户地址;

貌似并不复杂的跨链资金转移操作,但在多个跨链桥项目中,不同步骤均发生过安全漏洞。

0x3 跨链桥发生过哪些漏洞

QQ截图20220507111141.png

0x4 跨链桥常见漏洞分析

ChainSwap 攻击事件

2021年7月,跨链资产桥梁项目ChainSwap遭到攻击,该跨链桥上的二十多个项目遭到攻击损失了近 800
万美元资产,并使十多个项目暴跌 99%。
该攻击事件主要由于协议未对signatures合法性进行严格检查,导致攻击者使用自己生成的
签名可进行签名交易。

Factory合约

上图receive方法主要功能是将用户跨链之后的资金转移给目标链用户地址需要验证
发送链的签名。当前需要验证的签名个数为1。
由于receive方法逻辑及调用的ecrecover,_decreaseAuthQuota方法未对调用的signatures做严格检查
攻击者传入了自己生成的签名,后续合约逻辑对signatures的映射值及其他计算时,也并未有严格判断
导致攻击者成功执行receive方法为自己转移资金签名。

Poly Network 攻击事件

2021年8月,跨链互操作协议 Poly Network 突遭黑客攻击,使用该协议的 O3 Swap 损失惨重,在以太坊
币安智能链、Polygon 三条网络上的资产几乎被洗劫一空,黑客在不到1小时时间内,分别盗走了 2.5 亿
2.7 亿、8500 万美元的加密资产,损失总额高达 6.1 亿美元。

该攻击事件主要由于中继链验证人公钥被替换。也就是跨链的中间验证人被攻击者替换为自己可控。

协议内部关系:

中继链验证人的公钥存在 EthCrossChainData 合约;

EthCrossChainData 合约存在 putCurEpochConPubKeyBytes 方法可以直接修改中继链验证人公钥;

EthCrossChainData 合约 owner 为 EthCrossChainManager 合约;

EthCrossChainData 合约的 putCurEpochConPubKeyBytes 方法可修改中继链验证人角色。

EthCrossChainManager合约

QQ截图20220507111459.png

上图中,_executeCrossChainTx 方法未对传入参数做严格限制,导致攻击者传入toContract,method参数均由攻击者可
控由于协议内部关系,攻击者传入经过hash碰撞与putCurEpochConPubKeyBytes方法相同方法签名,成功调用EthCross
ChainData 合约的 putCurEpochConPubKeyBytes 方法直接修改中继链验证人公钥为自己可控,之后利用该验证人签名
恶意的资金转移,获取大量资金。

Multichain(AnySwap) 攻击事件

2022年1月,Multichain官方声明协议跨链桥存在安全风险部分代币存在被黑的风险,督促用户尽快取消授权。
事件核心原因:协议调用的底层代币合约没有实现 permit 方法,但包含回退功能
所以调用 permit 方法合约正常运行。

左AnyswapV4Router合约,右WETH9合约。

1617.png

上图中anySwapOutUnderlyingWithPermit方法中,前三个参数均由调用者传入,也就是from,token等参数均由攻击者
可控当参数可控后,攻击者部署攻击合约,将受影响的代币合约地址设置为底层代币参数。核心问题是,由于WETH9不存
在permit 方法,但会调用WETH9的fallback方法进行deposit操作,故调用不会发生错误(交易不会回滚) 所以当用户
将资金授权给协议后,攻击者会迅速将用户资金转移。

Qubit Bridge 攻击事件

2022 年 1 月,Qubit Finance 跨链桥Ethereum-Binance 被黑客入侵,损失超过 8000 万美元。
核心问题:deposit方法中资金地址为address(0)时而safeTransferFrom未发生错误
导致存款功能正常执行。

QBridge合约

1805.png

上图中,deposit为正常存款方法,调用该方法中的IQBridgeHandler(handler).deposit时,当用户传入的resourceID
映射tokenAddress地址为0地址时,后续的tokenAddress.safeTransferFrom(depositer, address(this), amount);转
账会正常执行,导致方法及事件运行正常,调用者可以成功存款。

这里比较重要的是官方 tokenAddress的ETH为零地址是官方所为(官方已声明deposit功能为忽略的遗弃功能)

Meter Bridge 攻击事件

2022 年 2 月 ,Meter.io 跨链协议遭到攻击,合约并没有阻止封装的 ERC20 代币与原生 gas 代币的
直接交互损失约 430 万美元。

事件核心问题:deposit方法进行存款时未验证WBNB存款情况 导致攻击者绕过判断条件不
进行任何存款而正常获取资金。

Bridge合约

1999.png

上图中,deposit和depositETH方法均为存款方法,而deposit方法存款时,未验证存款为原生代币的情况。攻击者利用
deposit存款时,传入WBNB地址,由于该方法未验证WBNB存款的情况,未进行资金存储转移,之后调用depositHan
dler.deposit方法成功绕过判断条件,最后攻击者利用该缺陷,成功获取大量资金。

Wormhole 攻击事件

2022 年 2 月 ,Ethereum和Solana两大区块链的重要桥接“虫洞”(Wormhole)遭黑客攻击,损失超过3.2亿美元。
漏洞核心原因:verify_signatures调用的load_instruction_at方法中未验证instruction合法性
导致攻击者可伪造,从而利用验证签名获取资金。

verify_signature.rs 接口合约

200.png

上图中verify_signatures方法是跨链验证时所调用的签名方法,由于verify_signatures方法调用了load_instruction
at方法,load_instruction_at方法为协议更新后的废弃方法,该方法中未对传入的instruction做严格检查导致攻击
者传入了自己可控的值,攻击者利用该签名方法对自己的跨链请求进行签名,获取大量资金。

Li Finance 攻击事件

2022 年3 月,以太坊上分布式跨链协议Li.Finance 受到了攻击,攻击者执行了 37 次 call 注入获取
了多个钱包中约 60 万美元的资产(204 个 ETH)。
该攻击事件的核心问题是未对传入的外部数据进行严格限制,导致攻击者传入了自己可控call调用逻辑。

CBridgeFacet合约

198.png

上图swapAndStartBridgeTokensViaCBridge 方法中,对传入的_swapData参数未进行严格限制,同样的LibSwap.swap
调用中,也未对该值进行严格限制,导致swap方法中,_swapData可成功调用call方法进行恶意操作,攻击者利用该缺陷
进行多次call调用获取资金。

Ronin Network 攻击事件

2022 年 3 月, Axie Infinity侧链Ronin验证器节点和 Axie DAO 验证器节点遭到破坏导致在两笔交
易中从 Ronin 桥接了 173,600 个以太坊和 2550 万美元的 USDC。

攻击发生原因:

Sky Mavis 的 Ronin 链目前由 9 个验证节点组成。为了识别存款事件或取款事件,需要九个验证者签名中的五个攻击者
控制了 Sky Mavis 的四个 Ronin 验证器和一个由 Axie DAO 运行的第三方验证器。( 2021 年11月 - 12 月Axie DAO
允许 Sky Mavis 代表其签署各种交易,该事件停止后未撤销许可名单访问权限,攻击者获得了 Sky Mavis 系统的访问
权限并使用无Gas RPC 从 Axie DAO 验证器获取签名)。

0x5 总结及建议

通过上述跨链桥攻击事件可以发现,从去年两个重要的跨链桥攻击到今年目前为止已发生多个跨链桥攻击事件跨
链桥攻击明显增多,被盗资金也颇为庞大,貌似黑客已经盯上了跨链桥这块肥肉。从表格总结来看,攻击主要发
生在跨链之前和签名处,普遍均为合约漏洞,也存在官方马虎大意造成的被盗事件。

对于越来越多的跨链项目及项目合约安全,可遵循以下安全建议:

项目上线前对合约进行安全审计

合约调用接口需要严格排查其适配性

版本更新时需要对相关接口及签名安全进行重新评估

需要对跨链签名者进行严格审查以保证签名不被恶意人员控制

您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

关注

0

粉丝

9021

主题
精彩推荐
热门资讯
网友晒图
图文推荐

Powered by Pcgho! X3.4

© 2008-2022 Pcgho Inc.