链资讯 链资讯
Ctrl+D收藏链资讯
首页 > 以太坊 > 正文

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

作者:

时间:

事件背景

北京时间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。

港股收盘:欧科云链收涨1.08% 火币科技收2.94%:今日港股收盘,恒生指数收盘报24732.76点,收涨0.38%;欧科集团旗下欧科云链(01499.HK)报0.187港元,收涨1.08%;火币科技(01611.HK)报4.20港元,收涨2.94%。[2020/9/15]

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

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

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

港股收盘:欧科云链收涨1.48%,火币科技收跌1.95%:今日港股收盘,恒生指数收盘报25281.15点,收跌0.83%;欧科集团旗下欧科云链(01499.HK)报0.206港元,收涨1.48%;火币科技(01611.HK)报4.02港元,收跌1.95%。[2020/8/27]

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

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

港股收盘:欧科云链收跌3.13%,火币科技收涨0.20%:金色财经报道,今日港股收盘,恒生指数收盘下跌171.96点,跌幅0.69%,报24930.58点,欧科集团旗下欧科云链(01499.HK)报0.217港元,收跌3.13%,火币科技(01611.HK)报5港元,收涨0.20%,雄岸科技(01647.HK)报0.232港元,收平。[2020/8/6]

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

IAVL代码问题

欧科云链集团向首都防疫志愿者捐赠物资:7月9日,首都高校学生志愿者投身防疫检测一线座谈会举行。会上,共青团北京市委副书记李健向爱心企业代表、欧科云链集团副总裁胡超颁发了感谢状。李健副书记在讲话中表示,欧科云链集团此前为奋战在一线的防疫志愿者无偿捐赠1000个爱心物资包,非常及时和实用,体现了企业高度的社会责任感,感谢欧科云链集团为首都打赢疫情防控人民战争、总体战、阻击战作出的贡献。

欧科云链副总裁胡超表示,欧科云链集团始终视服务社会、服务公众为重要使命,一直积极践行企业的社会责任,我们对在这次首都疫情防控中日夜奋战的一线工作者满怀感激之情,他们义无反顾、辛勤付出,向他们致敬。[2020/7/9]

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

港股收盘:欧科云链收涨1.72%,火币科技收涨7.36%:金色财经报道,今日港股收盘,恒生指数收盘上涨404.11点,涨幅1.66%,报24770.41点,欧科集团旗下欧科云链(01499.HK)报0.177港元,收涨1.72%,火币科技(01611.HK)报3.50港元,收涨7.36%,雄岸科技(01647.HK)报0.240港元,收涨1.69%。[2020/6/5]

根据上述分析,正常数据组织结构如下,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黑客地址进行风险标签标记,关于此次被盗后续,链上卫士团队将进一步追踪案件细节并及时同步。

标签:PROROOWEBBNBRepublic ProtocolShrooms Aicoinweb交易所PEPEBNB

以太坊热门资讯
ETH:Bankless:如何使用Delta中性策略在加密「蟹市」中赚钱?_DELTA

原文作者:WadeProspere 原文来源: Bankless 原文编译: DeFi 之道 经验丰富的 投资 者喜欢 期权 ,因为它们可以适用于任何投资理论.

ETH:如何查看自己是否有资格优先参与Chainlink v0.1版权益质押_DELTA

Chainlink权益质押是实现加密经济安全机制的关键要素,质押者可以将LINK通证放入智能合约中,为预言机服务质量进行质押担保.

STE:金融科技应用Step完成3亿美元债务融资,同时推出加密投资产品_ISTEP

本文来自BusinessWireOdaily星球日报译者|念银思唐面向下一代提供一体化金融解决方案的公司Step宣布获得由TriplepointCapital和EvolveBank&Tr.

WEB:每周编辑精选 Weekly Editors'' Picks(1022-1028)_WEB3

「每周编辑精选」是Odaily星球日报的一档“功能性”栏目。星球日报在每周覆盖大量即时资讯的基础上,也会发布许多优质的深度分析内容,但它们也许会藏在信息流和热点新闻中,与你擦肩而过.

GAM:a16z、Binance、前IDG资深投资人解析GameFi 3.0 | Ambrus Studio Gamefi Summit_GameFi

AmbrusStudio举办的首届GameFi3.0峰会于10月1日在TwitterSpace、Binance直播等多个平台同步举行,实时在线观看人数峰值达3,000人,首日累计观看次数6.

ROND:美联储主席鲍威尔演讲分析 :美国如何度过美林周期后半阶段?_ELR

北京时间8月26日晚上10点,美联储主席鲍威尔如约进行了8分钟的公开演讲。Dr.dodo也对鲍威尔的演讲进行了分析.