比特幣行情 比特幣行情
Ctrl+D 比特幣行情
ads
首頁 > BNB > Info

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

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。

歐科云鏈副總裁:鏈上天眼已協助成功追回百億元資產:5月26日,歐科云鏈“星途計劃”系列沙龍上海站圓滿落幕。活動上,歐科云鏈副總裁Michael表示,區塊鏈與物聯網、5G、人工智能等技術等共同構成了智慧經濟時代“新基建”的核心技術。區塊鏈本身具有高容災、不可篡改性、動態網絡擴展、可擴展權限控制等基礎優勢,在數據應用與數據安全方面具有核心優勢,在節能減排、自動駕駛、投票選舉、打擊犯罪等眾多場景大有用武之地。

近年來,全球數字貨幣犯罪案件呈現高發態勢,中國已成為2020年全球虛擬貨幣犯罪案件第二高發的國家。為協助公檢法機關打擊加密犯罪活動,歐科云鏈集團推出“鏈上天眼”產品,深度整合“區塊鏈+大數據”技術,覆蓋比特幣、泰達幣、以太坊等常用加密數字貨幣,依托上億條地址標簽,貼合一線偵查人員的實戰業務。自2020年9月起,歐科云鏈鏈上天眼已協助內蒙古、四川、陜西、山東、江蘇、浙江等多地偵破數字貨幣犯罪案件,成功追回百億元資產。[2021/5/26 22:45:47]

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

港股收盤:歐科云鏈收漲3.08%,火幣科技收漲3.81%:今日港股收盤,恒生指數收盤報28698.800,收跌1.07%;歐科集團旗下歐科云鏈(01499.HK)報0.670港元,收漲3.08%;火幣科技(01611.HK)報21.800港元,收漲3.81%。[2021/4/9 20:02:26]

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

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

歐科云鏈獲評“最佳安全服務機構”:11月24日,區塊鏈產業集團歐科云鏈憑借行業領先的OKLink區塊鏈瀏覽器和今年9月上線區塊鏈安全系統“鏈上天眼”優異表現,斬獲“2020年度最佳安全服務機構”稱號。據悉,該獎項由專業評審團多輪、多維度評審而來,由歐科云鏈與區塊鏈行業知名安全企業慢霧科技、北京鏈安共同摘得。?

今年9月1日,歐科云鏈OKLink正式上線“鏈上天眼”功能,用戶通過“鏈上天眼”可以更輕松快捷地獲取地址和交易的來龍去脈和資金流轉情況。同時,依托OKLink瀏覽器豐富的地址標簽數據,“鏈上天眼”功能對流入交易所的資金進行重點提示,方便用戶進行追蹤。“鏈上天眼”是目前全網首個向所有用戶免費開放的鏈上數據監測工具,操作簡單,交易行為可視化,可查詢維度深度更廣。[2020/11/24 21:56:52]

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

港股收盤:歐科云鏈收跌7.86%,火幣科技收平:今日港股收盤,恒生指數收盤報26169.380點,收跌0.22%;歐科集團旗下歐科云鏈(01499.HK)報0.129港元,收跌7.86%;火幣科技(01611.HK)報3.270港元,收平。[2020/11/12 14:06:54]

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

港股收盤:歐科云鏈收漲0.98% 火幣科技收跌2.19%:今日港股收盤,恒生指數報23831.33點,收跌0.61%;歐科集團旗下歐科云鏈(01499.HK)報0.206點,收漲0.98%;火幣科技(01611.HK)報3.130點,收跌2.19%;雄岸科技(01647.HK)報0.220點,收跌0.90%。[2020/4/24]

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黑客地址進行風險標簽標記,關于此次被盜后續,鏈上衛士團隊將進一步追蹤案件細節并及時同步。

Tags:PROROOProofBNBPaycer ProtocolgROOT價格Evident Proof Transaction TokenSTKBNB幣

BNB
DAO:Web3和DAO會有數據治理問題更好解決方案嗎?

數據治理是當今世界的熱門話題之一,這已不是什么新鮮事。隨著有大量數據每天被生成和分享,平臺/企業/組織對于跟蹤所有數據并確保正確使用數據的需求越來越大.

1900/1/1 0:00:00
OSM:Bankless:Cosmos會是區塊鏈的終極形態嗎?

在4.2億年前志留紀末期,有顎魚分化為軟骨鯊和硬骨魚。后者的其中一些爬出海洋,征服土地和空氣,最后變成了兩棲動物,也就是后來的恐龍和原始哺乳動物.

1900/1/1 0:00:00
INC:Messari:1inch三季度市場表現和生態進展報告

要點 1inch在第2層擴展解決方案Arbitrum和Optimism上的實施,每個關鍵指標上都有所增長,同時表現優于其他所有鏈.

1900/1/1 0:00:00
區塊鏈:對話XEN創始人:目標是挑戰比特幣,成為世界上占主導地位的點對點現金

本文來自SevenUpDAO。XENCrypto,一場突然在加密世界爆火的社會實驗,引起了以太坊又一場gaswar.

1900/1/1 0:00:00
NFT:對話BendDAO聯合創始人:流動性危機事件的復盤與反思

采訪:念青,ChainCatcher受訪者:Crylipto,BendDAO聯創一個多月前,因無聊猿地板價持續下跌,直接觸發列出無聊猿數量最多的NFT抵押借貸協議BendDAO的系列清算.

1900/1/1 0:00:00
UNI:IOSG Ventures:Uniswap治理代幣估值模型的最優解構

投資者經常使用相對估值法/比較估值法來評估早期階段的項目,這對于項目/公司的總收入的估計通常是最直接有效的方法.

1900/1/1 0:00:00
ads