買比特幣 買比特幣
Ctrl+D 買比特幣
ads

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

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。

歐科云鏈2021年中期收入1.912億港元 區塊鏈相關業務占比3.76%:11月26日消息,港股歐科云鏈發布截至9月30日中期業績報告,報告期內收入1.912億港元,同比下降19.15%;虧損0.289億港元,同比增加21.42%。區塊鏈相關業務占比3.76%,其中技術服務收入為848.7萬港元,加密資產和法定貨幣信托貢獻253.2萬港元。(新浪財經)[2021/11/26 22:26:55]

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

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

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

歐科云鏈發布2021財年年度報告:營收4.53億港元,區塊鏈技術服務業務收益增長15%:北京時間7月26日,歐科云鏈控股(01499.HK)發布了2021財年年度報告。報告顯示,截至2021年3月31日,歐科云鏈實現總營收4.53億港元,較上一年減少約20%,主要受傳統業務的負面影響。財報顯示,集團未來將專注的技術服務、證券投資及信托和托管服務表現亮眼,推動全年毛利率提升2.8個百分點至百分之10.3,盈利能力增長勢頭強勁。年內,來自技術服務部分的收益增加約2800萬港元,較去年增長約15%,成為拉動歐科云鏈營收增長的新引擎。

年內,歐科云鏈集團審時度勢,加快布局金融科技領域、重點發力區塊鏈技術的研發與應用。未來,歐科云鏈也將繼續加大以區塊鏈為主的金融科技相關方面的投入,不斷推進區塊鏈相關技術創新,拓寬區塊鏈技術應用場景。2021年是我國“十四五”計劃的開局之年,關于區塊鏈技術的政策紅利也不斷增加,未來區塊鏈技術或將與實體經濟深度結合,這將為歐科云鏈帶來更多利好,商業價值可期。業內人士認為,憑借領先的技術實力以及對區塊鏈行業前景的準確預判,歐科云鏈將為更多產業的健康發展保駕護航,其增長空間已經打開。[2021/7/26 1:15:59]

歐科云鏈任煜男:“螞蟻鏈”升級將對互聯網和新經濟龍頭企業產生刺激和引領效應:7月23日,螞蟻區塊鏈正式升級為“螞蟻鏈”,歐科云鏈總裁任煜男對此評論稱,螞蟻集團在區塊鏈技術開發和業務布局上已經積累多時,此次升級一方面標志著阿里內部已經肯定團隊的努力和階段性成果,通過品牌加持把區塊鏈業務正式定位為螞蟻核心業務之一,另一方面也是阿里對外明確螞蟻的定位,充實螞蟻即將上市的資本故事,對阿里系區塊鏈業務發展必定是里程碑式的事件。

任煜男同時指出,這對于互聯網和新經濟的龍頭企業大廠們必將產生刺激和引領效應,對于包括歐科云鏈在內的區塊鏈技術企業,也是行業格局和趨勢的重大階梯性跨越。[2020/7/24]

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

港股開盤:歐科云鏈下跌6.36%,火幣科技上漲5.94%:金色財經報道,港股開盤,香港恒生指數開盤上漲801.44點,漲幅3.69%,報22497.57點,歐科集團旗下歐科云鏈(01499.HK)報0.206點,開盤下跌6.36%;火幣科技(01611.HK)報3.21點,開盤上漲5.94%,雄岸科技(01647.HK)報0.20點,開盤下跌2.44%。[2020/3/24]

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

港股開盤:歐科云鏈下跌1.62%,火幣科技上漲1.46%:金色財經報道,港股開盤,香港恒生指數開盤上漲126.09點,漲幅0.48%,報26348.16點;歐科集團旗下歐科云鏈(01499.HK)報0.243點,開盤下跌1.62%;火幣科技(01611.HK)報4.18點,上漲1.46%。[2020/3/5]

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:ROOPROProofBNBShroom.Financepros幣如何Proof Of Pepetogetherbnb換裝都有什么衣服

酷幣下載
QUO:Dragonfly合伙人:如何創造出一個優秀的Web3創意?_TAM

你是否正在為尋找Web3產品的好想法而苦惱?在加利福尼亞大學伯克利分校WEB3MOOC課程中,Dragonfly合伙人Haseeb最近進行了一個關于如何在Web3領域找到一個好主意的講座.

1900/1/1 0:00:00
CAP:新項目 | SOLID:想做生態重建后的“Terra版DAI”_LID

隨著今年五月UST嚴重脫錨、LUNA價格崩潰,Terra生態的大多項目也隨之“信譽破產”,逐漸淡出了大家的視野.

1900/1/1 0:00:00
BNB:趙長鵬的15條原則_UNIM價格

Odaily星球日報譯者|Moni Binance首席執行官趙長鵬發布了自己遵循的一些原則,他表示并非所有原則都有對錯,大多數只是他個人做事看事的方式.

1900/1/1 0:00:00
ARCX:177萬美元就能買斷流通代幣,ARCx會在私有化后重生嗎?_DeFiStarter

10月28日,鏈上身份協議ARCx宣布,由于近期的市場變化,其代幣ARC缺乏流動性,目前ARC代幣的整體估值并不能反應團隊認可的實際價值,因此ARCx決定“私有化”市場上所有的ARC代幣.

1900/1/1 0:00:00
Foresight Ventures: 入坑第一站,加密法幣出入金商業模式盤點

引言 用法定貨幣購買加密貨幣是大多數用戶進入Web3世界的第一站,無論是通過中心化的交易所還是比特幣ATM。用法幣交易加密幣稱為”入金”,反過來用加密幣交易法幣稱為”出金“.

1900/1/1 0:00:00
WOR:Solana生態預言機Pyth Network的下一站_Santiment Network Token

本文來自Medium,Odaily星球日報譯者|Moni 作為Solana生態預言機服務提供商,PythNetwork的目標其實非常簡單,即:讓每條鏈上的每項資產價格都能輕松可用.

1900/1/1 0:00:00
ads