区块见闻 区块见闻
Ctrl+D收藏区块见闻

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

作者:

时间:

事件背景

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

Web3及“机器经济”风投Generative Ventures旗舰基金获Bertelsmann Investments投资:金色财经报道,Web3及“机器经济”风险投资公司Generative Ventures宣布其旗舰基金已获得贝塔斯曼集团旗下全球风险投资Bertelsmann Investments的投资,但具体金额暂未披露,据悉Bertelsmann Investments也是该基金的首个机构投资者,贝塔斯曼旗下Web3团队和Web3平台B3 - The Hub也将与Generative Ventures团队密切合作以推动增长和新的投资机会,并使用Web3技术解决业务问题。Generative Ventures目前专注于投资“机器经济”初创公司,该领域通常涉及由金融科技驱动、并以Web3区块链网络为基础和人工智能技术的新经济活动,Generative Ventures将支持创业者在这种经济架构的基础上进行建设。[2023/9/7 13:25:12]

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

声音 | Telegram:不认同SEC提起的诉讼 已于过去18个月里尝试与其沟通:据The Block消息,Telegram表示,它不认同美国证券交易委员会(SEC)对其代币交易提起的诉讼,对SEC选择提起诉讼感到惊讶和失望,并声称自己“在过去18个月里”一直试图与SEC接触,就其TON区块链项目征求反馈意见,但没有具体说明SEC是否提供了任何反馈。Telegram告诉投资者,它将“稍作休息”,以便更清楚地了解TON项目及其Gram令牌的法律地位。公司正在评估是否需要推迟原定于10月31日上市的TON。此前10月12日消息,美国证券交易委员会(SEC)对Telegram发出临时限制令,防止其代币流入美国市场。[2019/10/14]

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

动态 | IBM利用Stellar网络提供跨境支付服务:据coincryptorama报道,IBM最近推出了一项计划,允许南太平洋地区的消费者和商家进行跨境支付。不过,IBM使用的是Stellar Lumens (XLM),而不是比特币(BTC)或Ripple等其他项目。这将使IBM和Stellar挑战Ripple成为全球支付行业领导者的目标成为可能。[2018/11/17]

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

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

港股收盘:欧科云链收跌6.45% 火币科技收涨0.73%:今日港股收盘,恒生指数收盘报24918.78点,收涨0.54%;欧科集团旗下欧科云链(01499.HK)报0.145港元,收跌6.45%;火币科技(01611.HK)报4.130港元,收涨0.73%。[2020/10/23]

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

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

欧科云链OKLink上线“链上天眼”功能:北京时间9月1日,欧科云链OKLink区块链浏览器上线“链上天眼”功能,基于对海量链上数据的深度分析和持续更新,“链上天眼”为用户提供交易图谱、地址分析以及链上监控功能,同时它也是全网首个向所有用户免费开放的链上数据监测和交易行为可视化工具。

OKLink“链上天眼”旨在通过利用区块链技术协助执法部门进行链上执法、打击黑产、智慧助警等工作,持续拓展区块链多元化应用场景,推进基于区块链的新基建产业,为探索“区块链+”赋予产业新价值。?[2020/9/1]

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黑客地址进行风险标签标记,关于此次被盗后续,链上卫士团队将进一步追踪案件细节并及时同步。

标签:ROOPROProofBNBgrowth Root Tokenkucoinpro是哪国的交易所0XPROOF币bnb是哪个国家的币

比特币最新价格热门资讯
NFT:以9家风投公司为例,谈谈如何对加密VC进行尽调?_APT

免责声明:本篇文章中提到的所有信息都仅做科普用途,不应被解释或视为财务、法律、投资或任何其他形式的建议.

NFT:详谈AMM模型的长期可行性,Uniswap如何适应未来的金融发展?_区块链工程专业学什么女生好

图片来源:由无界版图AI工具生成。Uniswap刚刚完成了1.65亿美元的B轮融资。在本周的报告中,我们研究了自动做市商模型的长期可行性,以及Uniswap等DeFi协议如何适应未来的金融发展.

UNI:Telegram即将在TON链上推出用户名拍卖平台_Uniswap

Odaily星球日报译者|余顺遂 摘要: 即时通讯软件Telegram即将推出用户名拍卖平台。该市场以后也可能支持Telegram生态系统的其他元素,包括频道、贴纸或emoji表情符号.

BNB:回顾50年游戏简史,Web3游戏的未来将如何发展?_PRO

我阅读了400多页关于电子游戏经济设计的书籍、学术论文和博客,所以你就不必这样做了!其中一些发现会让你吃惊。注:这个主题是我今天通过@glxyresearch发表的33页报告的浓缩摘要.

NFTG:NFT数据日报 | Azuki24小时成交量增长281.38%(10.13)_FTG

NFT数据日报是由Odaily星球日报与NFT数据整合平台NFTGO合作的一档栏目,旨在向NFT爱好者与投资者展示近24小时的NFT市场整体规模、交易活跃度.

NFT:OpenSea首次推出工具帮助新NFT系列创作者强制执行链上版税_Punchword

Odaily星球日报译者|念银思唐 摘要: -OpenSea计划帮助其平台上的创作者强制执行版税支付。-“我们有兴趣开发一个更好的系统.