原文作者:Cosmos聯合創始人EthanBuchman
關于幣安黑客事件的一些想法。Binance是Cosmos軟件的最大用戶,他們運營著一個價值數百億美元的平臺,但沒有對核心軟件做出有意義的貢獻或參與。從這里發生的事情中,我們可以學到很多。
你可能看到了samczsun的優秀推文貼展示了這個問題。https://twitter.com/samczsun/status/1578167198203289600?讓我們嘗試補充一些有關情況的詳細信息。
一個官方防御補丁已發布在這里:https://forum.cosmos.network/t/cosmos-sdk-security-advisory-dragonfruit/7614
數據:當前Cosmos生態總市值為668.5億美元:金色財經報道,據CoinGecko最新數據顯示,Cosmos生態總市值為668.5億美元(本文撰寫時為66,850,825,130美元),24小時交易額為2,851,024,184美元。目前按市值排名前三的項目分別是:Terra(34,118,093,708美元)、Cronos(10,184,667,283美元)和CosmosHub(8,115,288,674美元)。[2022/3/21 14:08:36]
友情提醒:如果你發現Cosmos軟件存在潛在漏洞,請遵循我們負責任的披露流程:
https://github.com/cosmos/cosmos-sdk/blob/main/SECURITY.md
問題的癥結在于黑客能夠偽造一個默克爾證明,這不應該是可實現的-默克爾證明應該是高度安全的。區塊鏈輕客戶端建立在默克爾證明之上,因此正確處理它們很重要。
Kava將通過Cosmos IBC為THORChain用戶提供DeFi服務:據官方公告,Cosmos跨鏈協議IBC將通過增加新的資產和用戶來增長Kava AUM和其應用及服務的使用量。Kava的DeFi應用和服務將通過Cosmos跨鏈協議IBC提供給RUNE持有人。
THORChain推出的BEPSwap為Cosmos的跨鏈交換提供了動力。目前,其交易額已超過20億美元。
Kava是一個跨鏈DeFi平臺,提供主流數字貨幣的抵押借貸。HARD Protocol是基于Kava區塊鏈發布的跨鏈加密貨幣市場,支持BTC、XRP、BNB、BUSD、KAVA和USDX等資產借貸和挖礦賺取收益。[2021/2/6 19:04:56]
默克爾證明是數據存儲中存在某些鍵值對的密碼學證明,我們可以稱之為“包含證明”。很多區塊鏈將其數據存儲在一棵默克爾樹中,以便可以生成證明某些數據包含在樹中的證明。
數據:基于Cosmos生態已有143個項目正在開發:1月28日,The Block統計數據顯示,當前基于Cosmos生態系統,已有17個不同垂直領域共計143個項目正在開發中。[2021/1/28 14:15:23]
默克爾證明在IBC中被大量使用,例如,一個區塊鏈可以證明它有一個指向另一個區塊鏈的數據包。當然,如果你可以證明某些數據在樹中,但實際上并沒有,那將是一個大問題。而這就是在Binance身上發生的事。
Cosmos鏈使用一種稱為IAVL的默克爾樹,它位于IAVL存儲庫中。它附有一首關于默克爾樹有多棒的詩。IAVL是一個自定義的默克爾化平衡二叉搜索樹,它類似于以太坊的帕特里夏樹。
https://github.com/cosmos/iavl/blob/master/POEM
Celo計劃搭建鏈接促進Cosmos和Celo網絡雙向通信:11月19 日消息,Celo已向利益相關方服務提供商Chorus One授予了一筆贈款,用于搭建促進Cosmos和Celo網絡之間互操作性的鏈接,該鏈接將允許Celo與Cosmos之間進行“雙向通信”,從而使Celo的cUSD穩定幣可以在Cosmos網絡上運行,而基于Cosmos的資產(包括ATOM,BAND和KAVA)可以存儲在Celo Reserve中。(cointelegraph)[2020/11/19 21:19:33]
每個區塊鏈開發人員在接觸這些結構的架構和算法時,都不得不陷入默克爾樹的瘋狂之中。
IAVL存儲庫公開了一個API,用于使用一個“RangeProof”對象構建和驗證證明。一個范圍證明用于證明某些范圍的key在默克爾樹中并列存在。
動態 | Cosmos已到達硬分叉升級指定區塊高度:金色財經報道,Cosmos(ATOM)已到達硬分叉升級指定區塊高度2902000,平均出塊速度約為7S。[2019/12/12]
一個范圍證明還可用于證明單個鍵值對,或證明某個鍵不在樹中。
IAVL存儲庫將RangeProof對象用于所有三種證明。但事實證明RangeProof的內部工作存在一個嚴重漏洞。
一個證明應該由一個子葉節點和一系列內部節點組成,這些節點勾勒出從子葉到根的路徑,并具有足夠的信息來計算樹的merkle根哈希并驗證子葉實際上是樹的一部分。
由于這是一棵二叉樹,所以每個內部節點都可以有一個左分支和右分支。但是在證明中,你是在樹中跟蹤路徑,因此內部節點應該只包含其左分支或右分支哈希。另一個是由證明中其他節點的哈希構造的。
這就是IAVLRangeProof的代碼遇到問題的地方。IAVLRangeProof允許填充InnerNode中的Left和Right字段。而這不應該發生。
攻擊者基本上利用了將信息粘貼到Right字段中的優勢,它們從未經過驗證,也從未影響哈希計算,從而使驗證者相信某些子葉是樹的一部分。因此,他們成功地偽造了一個默克爾證明。
值得注意的是,這個問題取決于攻擊者能否將子葉添加到單個證明中,因為RangeProof允許你一次證明多個子葉。因此,即使你的協議只希望一次證明一個key,使用RangeProof也會為攻擊者打開攻擊面。
所以使用RangeProof并不是一個好主意。但是我們也可以提出一個簡單的防御措施——如果任何內部節點同時填充了Left和Right字段,則預先拒絕證明。這樣做應該可以解決這個問題。
雖然RangeProof是一個核心Cosmos存儲庫(IAVL)的一部分,但它實際上并未用于Cosmos堆棧內的區塊鏈協議中。IAVL樹本身被所有CosmosSDK鏈使用,但RangeProofs并沒有。這是理解的關鍵!
相反,對于IBC中的默克爾證明,開發者按照IBC標準設定的更嚴格的流程開發了一個新規范。該規范稱為「ICS23」,它位于IBC規范存儲庫中:https://github.com/cosmos/ibc中。
那什么是ICS23?這是支持多種默克爾樹的默克爾證明的通用標準。ICS23定義了一種用于序列化和驗證默克爾證明的通用格式。
IBC沒有使用IAVL樹的內置RangeProof系統,而是使用ICS23標準來生成和驗證IAVL樹的默克爾證明。而ICS23代碼中并沒有這個漏洞。
這不僅僅是使用不同的代碼,并因此僥幸躲過一劫的問題。這代表了一種根本不同的軟件工程方法。
ICS23遵循更嚴格的設計流程,旨在最大限度地減少攻擊面,同時仍然是通用的,這是一項艱巨的任務!作為其中的一部分,它明確地拒絕了rangeproofs,ICS23中并沒有rangeproofs。
因此,該漏洞本身在ICS23規范中是不可接受的,這是好的,IBC的目標是使跨鏈通信更加安全。
當然,IBC規范和協議可能并不完善,并將繼續改進。作為一個復雜的協議和軟件實現,它甚至可能存在我們社區必須應對的尚未被發現的漏洞,安全需要一個社區。
我們都必須認真對待安全。如果發現潛在漏洞,請負責任地披露:https://github.com/cosmos/cosmos-sdk/blob/main/SECURITY.md。
如果你可以為改進軟件和協議做出貢獻,我們邀請您這樣做!
總的來說,這次事件是一個機會,它提醒了大家在軟件開發生命周期中加強安全實踐的重要性,傳播一些關于IBC是什么及其工作方式的一些認識,并邀請整個生態來幫助改進IBC。
跨鏈橋黑客對我們的行業來說是一個真正的問題,如果不認真致力于更高的安全性和標準流程,它們就不會變得更好。讓IBC成為一個光輝的例子。
這里還有一個關于使用開源軟件的重要教訓:遵循最佳實踐,保持最新狀態,并向上游貢獻資源!很高興看到binance成為更負責任和協作的生態參與者!
Tags:OSMOSMOCOSMcosmos3X Long Cosmos Tokenosmosis幣想要實現什么cosmos幣創始人cosmos幣官網
DeFi數據 1.DeFi代幣總市值:463.4億美元 DeFi總市值數據來源:coingecko2.過去24小時去中心化交易所的交易量39.
1900/1/1 0:00:00加密世界的焦點經歷了比特幣、以太坊、DeFi、NFT、元宇宙和Web3的多次變遷,唯獨缺少對加密技術本身的關注,除了比特幣的橢圓曲線加密算法還算有一點大眾認知度.
1900/1/1 0:00:00原文:CryptoAndrew推特用一籃子算穩作為抵押品的算穩。在進一步了解Hoar之前,這里我們需要把它分成2個部分:$USDH和$HRD.
1900/1/1 0:00:00「事件回顧」幣安鏈遭遇有史以來金額最大的黑客攻擊10月7日凌晨,BNBChain遭遇了黑客攻擊,攻擊涉及的總金額達到7億美元,其中包含5.7億美元的BNB.
1900/1/1 0:00:00隨著央視網孵化的數字藏品平臺“央數藏”于9月16日正式上線,國內央媒幾乎全員入局數藏市場,這對于國內該市場的發展至關重要!作為風向標般存在的最具影響力的媒體參與到數藏的發展中.
1900/1/1 0:00:00萬事達卡于周二首次推出一款新的軟件,幫助銀行識別和切斷來自易受欺詐的加密貨幣交易所的交易,該系統名為CryptoSecure.
1900/1/1 0:00:00