加密貨幣交易所 加密貨幣交易所
Ctrl+D 加密貨幣交易所
ads

歐科云鏈鏈上衛士:BNBChain遭攻擊事件深度解析_ROO:STKBNB幣

Author:

Time: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。

歐科云鏈張超:數字經濟迎來新機遇新挑戰:9月26日,歐科云鏈副總裁張超受邀參加烏鎮世界互聯網大會開幕式。同日晚,在參加鈦媒體烏鎮咖薈企業家高峰論壇中,張超表示,數字經濟現在迎來了新的機遇與挑戰,歐科云鏈集團過去通過做基礎設施服務,沉淀了大量的基礎數據和技術資本,未來希望將區塊鏈大數據賦能征信或風控領域,成為行業巨頭領軍者。

歐科云鏈集團是領先的區塊鏈產業集團,亦是中國本土成立時間最早的區塊鏈企業之一。[2021/9/26 17:08:13]

在后續IApplication(handlerContract).handleSynPackage處理中,合約給黑客增發100萬個BNB。

函數調用過程交易首先調用CrossChain合約0x2000的handlePackage函數:

歐科云鏈副總裁:虛擬貨幣帶來的詐騙已成金融詐騙主流:5月26日消息,在歐科云鏈“星途計劃”系列沙龍上海站現場,歐科云鏈副總裁張超表示,2020年中國已經成為全球虛擬貨幣犯罪第二高發國家,虛擬貨幣帶來的詐騙已成為金融詐騙的主流,造成人均損失超13萬元,位居各類金融詐騙犯罪損失金額之首。

自2020年9月起,歐科云鏈鏈上天眼已協助內蒙古、四川、陜西、山東、江蘇、浙江等地偵破數字貨幣犯罪案件,追回資產百億元。(《科創板日報》)[2021/5/26 22:47:21]

handlePackage會進一步調用MerkleProof.validateMerkleProof對輸入的proof進行校驗:

MerkleProof相關代碼可以看到,實際的驗證邏輯是使用預編譯合約0x65完成:https://github.com/bnb-chain/bsc-genesis-contract/blob/master/contracts/MerkleProof.sol#L66

歐科云鏈李煉炫:人民幣數字化將助力人民幣國際化:歐科云鏈研究院首席研究員李煉炫表示,人民幣的數字化無疑將提高交易便捷性,從而方便跨境支付和交易,提高了人民幣境外流通普及度,助力人民幣國際化。除了相關部門在技術操作層面需要與海外金融機構、海外金融監管部門做好對接,還需兩個國家擁有雙邊貨幣互換協議,從而確保央行法定數字貨幣能實現有效的回流與兌換。所幸的是,目前不少中小國家都希望引入官方數字貨幣解決本國貨幣流通透明度不高、資金流向難跟蹤等問題,從而為央行法定數字貨幣境外流通創造一定的機遇。(21世紀經濟報道)[2020/10/14]

系統預編譯合約0x65對應iavlMerkleProofValidate功能:https://github.com/bnb-chain/bsc/blob/f3fd0f8bffb3b57a5a5d3f3699617e6afb757b33/core/vm/contracts.go#L81

港股收盤:歐科云鏈收跌1.48%,火幣科技收跌4.13%:金色財經報道,今日港股收盤,恒生指數收盤下跌65.38點,跌幅0.27%,報24180.30點,歐科集團旗下歐科云鏈(01499.HK)報0.200點,收跌1.48%,火幣科技(01611.HK)報3.02點,收跌4.13%,雄岸科技(01647.HK)報0.300點,收漲5.26%。[2020/5/13]

系統合約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

港股開盤:歐科云鏈平盤,火幣科技上漲5%:金色財經報道,港股開盤,香港恒生指數開盤上漲438.21點,漲幅2.02%,報22147.34點,歐科集團旗下歐科云鏈(01499.HK)報0.203點,開盤上漲1.50%;火幣科技(01611.HK)報3.36點,開盤上漲5%,雄岸科技(01647.HK)報0.208點,開盤上漲1.46。[2020/3/20]

根據上述分析,正常數據組織結構如下,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黑客地址進行風險標簽標記,關于此次被盜后續,鏈上衛士團隊將進一步追蹤案件細節并及時同步。

Tags:ROOPROProofBNBROOT幣Republic Protocol0XPROOF價格STKBNB幣

歐易交易所
星球日報 | 幣安成為UNI最大委托地址;4400名投資者成立URG組織追查Do Kwon(10月20日)_DAI:ILY

頭條 Uniswap創始人:幣安成為UNI最大委托地址之一,希望CZ表明治理觀點Odaily星球日報訊Uniswap創始人HaydenAdams發推稱,Binance于昨日委托13,242.

1900/1/1 0:00:00
Aptos上線首日的流言與澄清(持續更新)_APT:TPS

10月18日凌晨,曾斬獲3.5億美元巨額融資的“天王級”Layer1項目Aptos宣布正式上線主網AptosAutumn.

1900/1/1 0:00:00
星球日報 | 香港證監會支持元宇宙、NFT、GameFi創新;馬斯克要求Twitter解決機器人賬戶問題(11月1日)_DAI:ODA幣

頭條 香港證監會:支持元宇宙、NFT、GameFi創新,積極探索適當的代幣化資產監管框架Odaily星球日報訊CrossSpace創始人0xLeon發推稱,在香港金融科技周活動中.

1900/1/1 0:00:00
空投埋伏日記:zkSync將于28日上線主網,不用我多說了吧(10月24日)_SYNC:SYN

熊市漫漫,熱點分散。在缺乏明確投資機會的當下,本著“寧可錯付gas,不能放過大毛”的原則,我將視線與精力投向了優質項目交互,說不定還能提前發現下一價值標的,是吧.

1900/1/1 0:00:00
摩根大通首次執行DeFi交易,都做了什么?_DEFI:DeFireX

10月19日,新加坡金融管理局宣布啟動「守護者項目」,該項目將與金融業展開合作,旨在測試資產Token化和DeFi應用的可行性,同時也對金融穩定性和完整性進行風險控制.

1900/1/1 0:00:00
Yuga Labs IP帝國雄起:三個月版圖擴張140%_APE:BAYC Vault (NFTX)

該文中文版本為ForesightNews獲ForjNetwork授權獨家發布 八月,Forj團隊第一次對YugaLabsIP生態內的項目進行了研究和整理.

1900/1/1 0:00:00
ads