freeBuf
主站

分类

云安全 AI安全 开发安全 终端安全 数据安全 Web安全 基础安全 企业安全 关基安全 移动安全 系统安全 其他安全

特色

热点 工具 漏洞 人物志 活动 安全招聘 攻防演练 政策法规

点我创作

试试在FreeBuf发布您的第一篇文章 让安全圈留下您的足迹
我知道了

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

默克尔树漏洞成因和链上资金追踪-BNBChain跨链桥攻击事件分析
2022-10-10 00:14:50
所属地 江苏省

一、事件描述

2022年10月7日,BNB Chain内置的跨链桥BSC Token Hub被黑客攻击。黑客利用跨链桥漏洞,通过CrossChain合约发起了两次攻击交易,每次获利100万枚BNB,BNB Chain被盗资金超过5亿美金。1665331424_6342f0e0e867340930fec.png!small?1665331423441

SharkTeam对漏洞具体成因进行了深入分析,并对黑客地址的资金流转进行了跟踪,希望能尽快定位黑客。

二、VM默克尔树漏洞成因分析

攻击者账户地址:0x489a8756c18c0b8b24ec2a2b9ff3d4d447f79bec,简记为0x489a

被攻击合约地址:0x0000000000000000000000000000000000002000,简记为0x2000,名称为CrossChain,该合约是BNB Chain内置的系统合约,功能是跨链转账。

攻击者发起了两笔攻击交易,每一笔交易都从跨链桥窃取了100万BNB,以第一笔交易为例,txHash:0xebf83628ba893d35b496121fb8201666b8e09f3cbadf0e269162baa72efe3b8b

1665331417_6342f0d939a4428334aa2.png!small?1665331415968

1665331412_6342f0d4a6394354b4c7d.png!small?1665331411485

从执行过程来看,交易调用了CrossChain合约中的handlePackage函数,该函数会调用validateMerkleProof函数来验证交易参数中提供的MerkleProof,而且返回值为true。在此过程中,validateMerkleProof函数访问了VM中地址0x65的validateMerkleProof预编译合约,

1665331398_6342f0c68d7e216a34525.png!small?16653313972301665331405_6342f0cdf0fd318c9738a.png!small?1665331406089

该预编译合约定义如下:

1665331391_6342f0bfbba6d7838c06e.png!small?1665331390370

该函数中通过调用kvmp.Validate()来验证MerkleProof,Validate()函数如下:

1665331384_6342f0b8ed03102f1e16a.png!small?1665331383524

其中的prt构造如下:

1665331378_6342f0b25b2f87a5a37ed.png!small?1665331377231

构造函数DefaultProofRuntime使用了IAVL库中的IAVLValueOp对Proof进行了验证。

1665331371_6342f0abda7f0b7ca34c7.png!small?1665331370810

其中的关键两个步骤就是计算和验证rootHash,即ComputeRootHash和Verify两个函数。

ComputeRootHash函数以及调用关系如下:

https://github.com/cosmos/iavl/blob/de0740903a67b624d887f9055d4c60175dcfa758/proof_range.go#L202

1665331359_6342f09f214b96b5b439d.png!small?1665331357807

1665331352_6342f0989544a119d842d.png!small?1665331352788

1665331341_6342f08d9f842f61b9f76.png!small?1665331340398

1665331322_6342f07a4a96555082c28.png!small?1665331320861

以上Hash函数中,我们发现,当pin.Left不为空时,并没有处理pin.Right是空值或者不是空值的情况。这里,pin.Right并没有参与Hash的计算,其值对计算的Hash完全没有影响。那么最终计算出的rootHash同样不会受到pin.Right的影响。

黑客正是利用了这一点,自行填充内部节点(InnerNode)的Right字段,同时不影响rootHash,这样可以保证rootHash验证通过。

实际上,内部节点的Right也不是随意填充的,因为除了IAVLValueOp对Proof进行了验证外,MultiStoreOp同样对rootHash进行了验证:

1665331314_6342f072950b1c64c6250.png!small?1665331313321

因此,通过伪造Merkle树发起攻击也不是一件容易的事情。

三、被盗资金流向分析

攻击者地址:0x489A8756C18C0b8B24EC2a2b9FF3D4d447F79BEc

资金转移路径如下:

1665331307_6342f06ba74338e3d36a4.png!small?1665331306239

(1)BNB Chain

当前链上攻击者地址余额为4.21亿美元,其中包括102万枚BNB,4128万枚vBNB,2881万枚BUSD,277万枚BSC-USD。

1665331302_6342f066aad92334b3f3b.png!small?1665331301428

攻击者地址0x489A累计向地址0x10ed...4e转入79955.8枚BNB(约2248万美元),当前该地址余额为0。后续将资金转移至地址0xfF3d...C9,该地址当前余额约为304万美元,尚存4,831枚WBNB(约135万美元)。此外,该地址中SAFEMOON代币持仓量为2,406,871.6亿(约169万美元)。

1665331293_6342f05dc9004a8d37a0d.png!small?1665331292782

(2)ETH

攻击者地址0x489A以太坊链上地址余额为763万美元。据统计,被盗资金中约有7739万美元的资产通过跨链桥的方式转入以太坊。

攻击者地址0x489A向地址0xFA0a...e9转移33772枚ETH(约4478万美元)。

1665331286_6342f0560e653f7346505.png!small?1665331284900

(3)Polygon

攻击者地址0x489A当前链上余额约为39.9万美元,其价值主要来源于代币USDC。

1665331281_6342f0510d51c880b2833.png!small?1665331279561

(4)Optimism

攻击者地址0x489A当前链上余额约为110万美元,其价值主要来源于代币USDC。

1665331276_6342f04c12503f5127d41.png!small?1665331274761

(5)AVAX

攻击者地址0x489A当前链上余额约为173万美元,其价值主要来源于代币USDT。

1665331270_6342f046d2177b76b7a4b.png!small?1665331270055

(6)FTM

攻击者地址0x489A当前链上余额约为5896万美元,其中包括3196万枚gUSDC,2700万枚gfUSDT。

1665331266_6342f0428ad2b5206c390.png!small?1665331266310

(7)Arbitrum

攻击者地址0x489A当前链上余额约为200万美元,其价值主要来源于代币USDT。

1665331261_6342f03d931ea84f57289.png!small?1665331260103

攻击者地址0x489A向地址0xc31e...43转移190万枚USDC,该地址当前余额为1041万美元,其中包括4810枚WETH,409万枚USDC。

黑客地址在攻击前与Uniswap、Curve等Defi协议有过交互,也在ChangeNow中心化交易所上提取过资金,ChangeNow具有KYC机制,但是否在平台上留下了KYC信息,SharkTeam正在跟踪与交涉中,希望能早日准确定位黑客。

四、安全建议

此次事件虽然是通过合约发起的攻击,但实际并不是合约漏洞造成的,而是黑客利用了区块链Merkle验证机制的漏洞,属于区块链层的较深层次漏洞,比常见的合约漏洞更隐蔽,漏洞挖掘难度相对较高。黑客的攻击手段复杂多变,涉及的层面也会越来越多,项目方和用户因对风险应时刻保持敬畏之心。

# 黑客 # web安全 # 系统安全 # 数据安全 # 网络安全技术
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录