月亮链 月亮链
Ctrl+D收藏月亮链

ROO:欧科云链链上卫士:BNBChain遭攻击事件深度解析_Proof

作者:

时间:1900/1/1 0:00:00

事件背景

北京时间2022年10月7日凌晨,BNBChian跨链桥BSCTokenHub遭遇攻击。黑客利用跨链桥漏洞分两次共获取200万枚BNB,价值约5.66亿美元。漏洞分析

BSCTokenHub是BNB信标链和BNB链之间的跨链桥。BNB链使用预编译合约0x65验证BNB信标链提交的IAVL的Proof,但BNB链对提交的Proof边界情况处理不足,它仅考虑了Proof只有一个Leaf的场景,对多个Leaves的处理逻辑不够严谨。黑客构造了一个包含多Leaves的Proof数据,绕过BNBChain上的校验,从而在BNB链造成了BNB增发。以其中一次攻击交易为例:0xebf83628ba893d35b496121fb8201666b8e09f3cbadf0e269162baa72efe3b8b黑客构造输入数据payload和proof,输入参数通过validateMerkleProof校验,返回值为true。

欧科云链推出首款链上安全主题数字藏品:5月11日消息,据欧科区块链官方公众号消息,首个以链上安全为主题的数字藏品:MITA正式发布。据悉,该藏品以欧科云链旗下链上天眼产品为原型,基于趣链&红洞科技技术开发,首次发行500份。本次发布为公益行为,用户仅可通过官方渠道参与活动免费获得,获取后仅可用于收藏,不支持转赠与交易。[2022/5/11 3:06:38]

在后续IApplication(handlerContract).handleSynPackage处理中,合约给黑客增发100万个BNB。

函数调用过程交易首先调用CrossChain合约0x2000的handlePackage函数:

handlePackage会进一步调用MerkleProof.validateMerkleProof对输入的proof进行校验:

欧科云链OKLink正式上线BSC区块链浏览器:1月19日,欧科云链OKLink官网正式上线BSC区块链浏览器。目前,OKLink多公链浏览器覆盖了12条主流公链。此次BSC区块链浏览器的上线,将为BSC生态用户带来流畅、准确、即时、丰富的BEP20/721/1155链上数据和指标服务。

欧科云链是领先的区块链大数据服务商,目前已推出OKLink多公链浏览器、链上天眼、链上大师等产品。BSC区块链浏览器是欧科云链2022年交付上线的第一个浏览器产品。未来,欧科云链将陆续上线Polygon、Solana等浏览器,为海内外区块链用户提供更为丰富、流畅、准确的全公链数据服务。[2022/1/20 9:01:14]

MerkleProof相关代码可以看到,实际的验证逻辑是使用预编译合约0x65完成:https://github.com/bnb-chain/bsc-genesis-contract/blob/master/contracts/MerkleProof.sol#L66

欧科云链报告:比特币不属于避险资产 更具有风险资产属性:1月6日消息,欧科云链链上大师正式发布了《2021年度数据报告》。在《比特币未来走向的指标框架》一章中,报告指出,比特币不属于避险资产,更具有风险资产的属性。鉴于比特币市值的规模,其很难真正走出独立行情,必定会受到市场对于经济环境的预期和整体情绪的影响,而比特币的资产定位决定了这种判断或情绪对它的看法。2022年,加息预期、实际加息幅度以及通胀率的走势,都会决定比特币的风险资产属性和对冲通胀属性在行业外的共识。

欧科云链链上大师《2021年度数据报告》基于上万个链上数据指标,内容涵盖比特币、以太坊、公链、DeFi、NFT与GameFi等多个方向,在回顾2021年加密市场重要事件与创新的同时,就2022年加密产业前景发表了多个前瞻性观点。[2022/1/6 8:28:58]

系统预编译合约0x65对应iavlMerkleProofValidate功能:https://github.com/bnb-chain/bsc/blob/f3fd0f8bffb3b57a5a5d3f3699617e6afb757b33/core/vm/contracts.go#L81

欧科云链:链上天眼已监控BXH相关地址集:10月30日消息,去中心化交易协议 BXH 今日通过 Twitter 发表声明,宣称在币安智能链(BSC)上遭到攻击。BXH官方出于谨慎考虑,已暂停了在Heco,OEC相关存取款服务。天眼团队正在密切关注BXH在Heco&OEC合约部署情况,并将发出预警提示,链上天眼团队根据BSC链上数据已知黑客通过跨链操作将 4000ETH 和 300BTC 转移到了以太坊和比特币链上。天眼团队目前监控了黑客在 BSC 和以太坊上的地址: 0x48c94305bddfd80c6f4076963866d968cac27d79,以及比特币地址 1JwQxqfcHJn3nRgjFv3ZJD2MqUywbKu9oU。

链上天眼团队将持续关注黑客地址动态,并预警交易所和钱包注意加强地址监控,避免相关恶意资金流入平台,并建议用户注意链上资金安全,可通过授权管理工具,检查授权状态,保护自己的链上资金安全。以下是本次事件部分已被监控地址:[2021/10/30 6:21:57]

港股收盘:欧科云链收涨0.51%,火币科技收跌1.44%:今日港股收盘,恒生指数收盘报25184.85点,收涨0.03%;欧科集团旗下欧科云链(01499.HK)报0.198港元,收涨0.51%;火币科技(01611.HK)报4.110港元,收跌1.44%。[2020/9/1]

系统合约0x65实现代码如下,主要逻辑为使用DecodeKeyValueMerkleProof解码输入参数,并调用Validate进行校验:https://github.com/bnb-chain/bsc/blob/master/core/vm/contracts_lightclient.go#L106

IAVL代码问题

IAVL的Proof校验过程中,Hash计算存在漏洞,导致黑客可以在Proof添加数据,但计算Hash时并没有用到添加的数据。详细分析如下:在len(pin.Left)不为0的分支中,计算Hash并没有使用pin.Right数据。黑客利用该处漏洞构造数据,添加proof.LeftPath.Right数据,但是该数据并不参与Hash计算。https://github.com/cosmos/iavl/blob/master/proof.go#L79-L93

根据上述分析,正常数据组织结构如下,proof.LeftPath.Right为空值,计算得到正确的Hash。proof.LeftPath=len(2)proof.LeftPath是一个正常数据,proof.LeftPath.Left是一个正常数据,proof.LeftPath.Right空值proof.InnerNodes=len(0)proof.Leaves=len(1),proof.Leaves是一个正常数据黑客构造攻击数据结构如下,添加proof.LeftPath.Right数据,且该数据不参与Hash计算。proof.LeftPath=len(2)proof.LeftPath是一个正常数据,proof.LeftPath.Left是一个正常数据,proof.LeftPath.Right是一个伪造数据proof.InnerNodes=len(1),InnerNodes=nilproof.Leaves=len(2),proof.Leaves是一个正常数据,proof.Leaves是一个伪造数据且proof.LeftPath.Right=COMPUTEHASH(proof.Leaves)IAVL的Proof校验代码如下,主体逻辑为COMPUTEHASH递归调用。由于lpath.Right也为黑客输入数据,使得黑客构造的数据能够通过bytes.Equal(derivedRoot,lpath.Right)的校验,并返回上一轮COMPUTEHASH通过proof.Leaves计算的结果,该结果为正常数值,从而绕过了IAVL的Proof校验。https://github.com/cosmos/iavl/blob/master/proof_range.go#L222-L309

黑客攻击构造的数据中,包括了IAVL:V和multistore相关数据,multistore数据也是基于IAVL进行操作,原理是一样的,不再进行详细分析。这次IAVLProof暴露的问题在于,数据局部的变化无法反应到整体,使得校验发生错误。在Cosmos生态中,IBC使用ICS23来做数据的校验处理,ICS23与IAVLProof校验不同点在于,ICS23会对所有的“叶子节点”的值进行数据校验,最后计算得出的根Hash再与链上数据进行校验,OKC采用的是ICS23的Prove,因此不存在BNBChain这次遇到的安全漏洞。测试验证代码

利用黑客攻击交易数据,基于BNBChain单元测试代码,增加了基于黑客攻击交易的测试用例,可以完整复现黑客的攻击交易。单元测试代码利用iavlMerkleProofValidate.Run接口验证输入数据,即相当于调用预编译合约。https://github.com/BananaLF/bsc/blob/bsc-hack/core/vm/contracts_lightclient_test.go#L99-L100

利用黑客攻击交易数据,构造新的payload数据为value:=byte(“okctesthack”),并对proof相应数据进行了修改,即修改proof.LeftPath.Right和proof.Leaves对应的数据,新构造的数据可以通过okcIavlMerkleProofValidate校验,即修改了黑客数据也能通过校验。另外,如下单元测试代码对原始黑客数据和修改后的数据两种case都进行了校验,且校验都能成功,从而说明如下测试代码利用本文所述漏洞成功进行了复现。https://github.com/BananaLF/bsc/commit/697c5cd73a755a7c93c0ed6c57d069e17f807958

事件过程

被攻击全过程可查看上一篇文章:链上卫士:BNBChain遭攻击时间轴梳理。OKLink多链浏览器已对BNBChain黑客地址进行风险标签标记,关于此次被盗后续,链上卫士团队将进一步追踪案件细节并及时同步。

标签:ROOPROProofBNBROOK币DEIP Protocol0XPROOFtogetherbnb手游下载中文版

币安app官方下载最新版热门资讯
WEB:从社交图谱看Web3.0在社交领域的探索_web3.0币怎么提现到账号

亨利·梅因《古代法》里的一句话:“所有进步社会的运动,到此处为止,都是一个‘从身份到契约’的运动”.

1900/1/1 0:00:00
ITA:星球日报 | dydx的SDK存在凭据泄露风险;Acala关于恢复运营的第一阶段投票已启动(9月26日)_PIT

头条斯坦福大学研究员推出“可逆交易”标准ERC-20R、ERC-721R,以解决日趋严重的安全问题Odaily星球日报讯斯坦福大学研究员kaili.eth今日发推称.

1900/1/1 0:00:00
OBI:掌舵火币九年,「李林时代」正式宣告结束_PEPECEO

10月8日,加密交易平台HuobiGlobal宣布HuobiGlobal控股股东公司已向百域资本旗下基金转让所持有的全部HuobiGlobal股份.

1900/1/1 0:00:00
COI:CoinMarketCap报告精编:8月加密市场分析_COIN

本文来自CoinMarketCapResearch,经其独家授权发布,由Odaily星球日报译者Katie辜编译。 仅在8月份,加密市场总市值就下降了9.97%,目前已降至1万亿以下.

1900/1/1 0:00:00
WEB:Web3渐进式变革:5个Web3工具赛道分析_NEWW

TL;DR1,Web3愿景的实现还比较遥远,但是一些Web3工具正在奠定基础,如链上通讯、Web3邮箱、财库管理、文件签署、数据索引.

1900/1/1 0:00:00
以太坊:定量分析:以太坊合并后去中心化和抗审查究竟如何?_Slash Token

共识是加密货币的根基,但同时也会引起质疑。合并后的以太坊也不例外:有人担心权益证明(PoS)验证者过于集中,并且失去抗审查能力。这并不是一场新的辩论.

1900/1/1 0:00:00