freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

点我创作

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

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

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

FreeBuf+小程序

FreeBuf+小程序

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

一、事件描述

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安全 # 系统安全 # 数据安全 # 网络安全技术
本文为 SharkTeam 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
SharkTeam LV.8
SharkTeam的愿景是全面保护Web3世界的安全。团队成员分布在北京、南京、苏州、硅谷,由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Huobi Global、OKC、polygon、Polkadot、imToken、ChainIDE等建立长期合作关系。
  • 172 文章数
  • 42 关注者
SharkTeam:2024年上半年度Web3安全报告
2024-07-08
SharkTeam:美国众议院FIT21法案解读
2024-06-26
SharkTeam:UwU Lend攻击事件分析
2024-06-13
文章目录