事件背景
北京時間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。
歐科云鏈胡超:Coinbase上市是數字資產進入主流資本市場的標志:針對Coinbase在納斯達克交易所掛牌,歐科云鏈集團副總裁胡超表示,近半年來,華爾街傳統資本巨頭和新興科技巨頭紛紛斥巨資戰略投資比特幣,甚至有消息說個別國家也將比特幣納入戰略儲備資產的籃子,低調卻大規模地布局比特幣及礦機產業,可以看到以比特幣為代表的區塊鏈數字資產已經進入了主流資產配置的行列,而此次Coinbase的成功上市,無疑將成為這條路上新的重要標志性事件。
?胡超進一步介紹,隨著近十年來比特幣等區塊鏈數字資產在全球范圍逐漸凝聚越來越多的共識,特別是比特幣的價格經歷數輪牛熊轉換后屢創新高,近日更是以6.4萬美元的單價再次刷新了歷史記錄,這在當前全球經濟艱難復蘇、許多國家主權貨幣大幅放水的大背景下,比特幣等區塊鏈數字資產的避險屬性和戰略儲備價值也更被越來越多的機構認可。[2021/4/14 20:19:07]
在后續IApplication(handlerContract).handleSynPackage處理中,合約給黑客增發100萬個BNB。
港股收盤:歐科云鏈收漲3.33%,火幣科技收跌2.01%:今日港股收盤,恒生指數收盤報26389.520點,收跌0.44%;歐科集團旗下歐科云鏈(01499.HK)報0.155港元,收漲3.33%;火幣科技(01611.HK)報3.420港元,收跌2.01%。[2020/12/14 15:08:35]
函數調用過程交易首先調用CrossChain合約0x2000的handlePackage函數:
handlePackage會進一步調用MerkleProof.validateMerkleProof對輸入的proof進行校驗:
MerkleProof相關代碼可以看到,實際的驗證邏輯是使用預編譯合約0x65完成:https://github.com/bnb-chain/bsc-genesis-contract/blob/master/contracts/MerkleProof.sol#L66
港股收盤:歐科云鏈收跌14.77%,火幣科技收跌5.33%:今日港股收盤,恒生指數收盤報24542.260點,收漲0.64%;歐科集團旗下歐科云鏈(01499.HK)報0.150港元,收跌14.77%;火幣科技(01611.HK)報4.260港元,收跌5.33%。[2020/10/19]
系統預編譯合約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
港股開盤:歐科云鏈下跌2.25%,火幣科技上漲1.09%:金色財經報道,港股開盤,香港恒生指數開盤上漲59.72點,漲幅0.25%,報23792.24點,歐科集團旗下歐科云鏈(01499.HK)報0.174點,開盤下跌2.25%;火幣科技(01611.HK)報2.77點,開盤上漲1.09%,雄岸科技(01647.HK)報0.236點,開盤上漲0.43%。[2020/6/2]
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
港股收盤:歐科云鏈收平,火幣科技收漲2.83%:今日港股收盤,恒生指數報26129.930點,收跌2.42%;歐科集團旗下歐科云鏈(01499.HK)報0.235點,收平;火幣科技(01611.HK)報4.00點,收漲2.83%。[2020/2/28]
根據上述分析,正常數據組織結構如下,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:PROROOProofBNBProject202Hamster GroomersProof Of MemesWBNB價格
中本聰在2009年發布了比特幣白皮書和開源代碼,從那時起,Crypto行業就一直保持著開放的精神。從一開始,任何人都可以復制代碼、改變營銷方式并推出他們“自己的”代幣和網絡.
1900/1/1 0:00:00原書章節 全書的引言內容摘要 這本書是要介紹VitalikButerin這位作者。神早期從事比特幣編輯工作,多年研究、訪談、寫作后,他成立了以太坊.
1900/1/1 0:00:00Devcon是由以太坊基金會主辦的一年一度的線下聚會,云集了以太坊社區最多、最核心的開發者,其歷史甚至可以追溯到以太坊區塊鏈啟動的一年以前、在德國柏林舉辦的一場小型聚會.
1900/1/1 0:00:00PolygonzkEVM由Polygon構建,為項目提供ZK證明的可擴展性優勢以及與以太坊虛擬機(EVM)的兼容性。EVM兼容性意味著開發人員可以通過最少的代碼更改輕松移植以太坊智能合約.
1900/1/1 0:00:00近日,火幣創始人李林退場,孫宇晨變身顧問登場而引爆了幣圈,令人不禁感慨一個時代的終結。將時間再往前撥動一點,9月22日,老牌加密貨幣交易所Kraken的聯合創始人JessePowell將卸任首席.
1900/1/1 0:00:002022年8月1日至9月17日,由清華大學學生區塊鏈協會學生發起的去中心化自治組織舉辦2022TSH夏季黑客松,共計60支項目參賽.
1900/1/1 0:00:00