SharkTeam独家分析:默克尔树漏洞成因和链上资金追踪-BNBChain跨链桥攻击事件分析
一、事件描述
2022年10月7日,BNB Chain内置的跨链桥 BSC Token Hub 被黑客攻击。黑客利用跨链桥漏洞,通过CrossChain合约发起了两次攻击交易,每次获利100万枚BNB,BNB Chain被盗资金超过5亿美金。
SharkTeam对漏洞具体成因进行了深入分析,并对黑客地址的资金流转进行了跟踪,希望能尽快定位黑客。
二、VM默克尔树漏洞成因分析
攻击者账户地址:0x489a8756c18c0b8b24ec2a2b9ff3d4d447f79bec,简记为0x489a
被攻击合约地址:0x0000000000000000000000000000000000002000,简记为0x2000,名称为CrossChain,该合约是BNB Chain内置的系统合约,功能是跨链转账。
攻击者发起了两笔攻击交易,每一笔交易都从跨链桥窃取了100万BNB,以第一笔交易为例,txHash:0xebf83628ba893d35b496121fb8201666b8e09f3cbadf0e269162baa72efe3b8b
从执行过程来看,交易调用了CrossChain合约中的handlePackage函数,该函数会调用validateMerkleProof函数来验证交易参数中提供的MerkleProof,而且返回值为true。在此过程中,validateMerkleProof函数访问了VM中地址0x65的validateMerkleProof预编译合约,
该预编译合约定义如下:
该函数中通过调用kvmp.Validate()来验证MerkleProof,Validate()函数如下:
其中的prt构造如下:
构造函数DefaultProofRuntime使用了IAVL库中的IAVLValueOp对Proof进行了验证。
其中的关键两个步骤就是计算和验证rootHash,即ComputeRootHash和Verify两个函数。
ComputeRootHash函数以及调用关系如下:
以上Hash函数中,我们发现,当pin.Left不为空时,并没有处理pin.Right是空值或者不是空值的情况。这里,pin.Right并没有参与Hash的计算,其值对计算的Hash完全没有影响。那么最终计算出的rootHash同样不会受到pin.Right的影响。
黑客正是利用了这一点,自行填充内部节点(InnerNode)的Right字段,同时不影响rootHash,这样可以保证rootHash验证通过。
实际上,内部节点的Right也不是随意填充的,因为除了IAVLValueOp对Proof进行了验证外,MultiStoreOp同样对rootHash进行了验证:
因此,通过伪造Merkle树发起攻击也不是一件容易的事情。
三、被盗资金流向分析
攻击者地址:0x489A8756C18C0b8B24EC2a2b9FF3D4d447F79BEc
资金转移路径如下:
(1)BNB Chain
当前链上攻击者地址余额为4.21亿美元,其中包括102万枚 BNB ,4128万枚vBNB,2881万枚BUSD,277万枚BSC-USD。
攻击者地址0x489A累计向地址0x10ed...4e转入79955.8枚BNB(约2248万美元),当前该地址余额为0。后续将资金转移至地址0xfF3d...C9,该地址当前余额约为304万美元,尚存4,831枚WBNB(约135万美元)。此外,该地址中SAFEMOON代币持仓量为2,406,871.6亿(约169万美元)。
(2)ETH
攻击者地址0x489A以太坊链上地址余额为763万美元。据统计,被盗资金中约有7739万美元的资产通过跨链桥的方式转入以太坊。
攻击者地址0x489A向地址0xFA0a...e9转移33772枚ETH(约4478万美元)。
(3)Polygon
攻击者地址0x489A当前链上余额约为39.9万美元,其价值主要来源于代币USDC。
(4)Optimism
攻击者地址0x489A当前链上余额约为110万美元,其价值主要来源于代币USDC。
(5)AVAX
攻击者地址0x489A当前链上余额约为173万美元,其价值主要来源于代币USDT。
(6)FTM
攻击者地址0x489A当前链上余额约为5896万美元,其中包括3196万枚gUSDC,2700万枚gfUSDT。
(7)Arbitrum
攻击者地址0x489A当前链上余额约为200万美元,其价值主要来源于代币USDT。
攻击者地址0x489A向地址0xc31e...43转移190万枚USDC,该地址当前余额为1041万美元,其中包括4810枚WETH,409万枚USDC。
黑客地址在攻击前与Uniswap、Curve等Defi协议有过交互,也在ChangeNow中心化交易所上提取过资金,ChangeNow具有KYC机制,但是否在平台上留下了KYC信息,SharkTeam正在跟踪与交涉中,希望能早日准确定位黑客。
四、安全建议
此次事件虽然是通过合约发起的攻击,但实际并不是合约漏洞造成的,而是黑客利用了区块链Merkle验证机制的漏洞,属于区块链层的较深层次漏洞,比常见的合约漏洞更隐蔽,漏洞挖掘难度相对较高。黑客的攻击手段复杂多变,涉及的层面也会越来越多,项目方和用户因对风险应时刻保持敬畏之心。
关于我们: SharkTeam 的愿景是全面保护Web3世界的安全。团队成员分布在北京、南京、苏州、硅谷,由来自世界各地的经验丰富的安全专业人士和高级研究人员组成,精通区块链和智能合约的底层理论,提供包括智能合约审计、链上分析、应急响应等服务。已与区块链生态系统各个领域的关键参与者,如Polkadot、Moonbeam、polygon、OKC、Huobi Global、imToken、ChainIDE等建立长期合作关系。
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
Bitcoin Price Consolidates Below Resistance, Are Dips Still Supported?
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
XRP, Solana, Cardano, Shiba Inu Making Up for Lost Time as Big Whale Transaction Spikes Pop Up
Justin Sun suspected to have purchased $160m in Ethereum
Justin Sun suspected to have purchased $160m in Ethereum