“黑客拿著房主證明找物業拿鑰匙,證明是假的,卻從物業那里拿到了真的鑰匙”
事件回顧
2021年8月10日,PolyNetwork遭受了跨鏈攻擊,被轉移了6億美金的加密資產。攻擊者在多條公鏈上進行了攻擊交易,并通過跨鏈管理合約和中繼器組件完成了攻擊。
用上面物業的例子來解釋的話,黑客用假房主證明,從物業那里拿到了真的鑰匙(AllianceChain上經過簽名的Merkle證明)。
Balancer生態收益治理平臺Aura Finance將于6月9日開啟LBP和上線:金色財經消息,SushiSwap聯合創始人0xMaki將要推出的Balancer生態收益治理平臺Aura Finance發推稱,將于6月10日2:00進行為期5天的LBP,同時Aura合約和網站也將上線。在前兩周,AURA總供應量的2%將分配給auraBAL質押者(包括選擇鎖定空投的用戶)。Aura Finance將在6月16日開啟aura BAL存款和加速流動性激勵,同時開始向Balancer、Convex Finance和lobsterdao社區發放空投,不想鎖定AURA的用戶將需要為其空投認領支付30%的罰款,這些空投罰款將在協議啟動一個月后累積并自動分配給vlAURA持有者。6月23日,vlAURA持有者將能夠投票決定Aura的veBAL投票權應投向何處。[2022/6/5 4:02:59]
攻擊解析
UENC公鏈與CertiK、北京鏈安達成戰略合作:據官方消息,UENC公鏈智能合約預計將于7月上線測試網,待測試網各項指標達標,將在第三季度部署主網,合約審計業務已與CertiK和北京鏈安達成戰略合作,運用UENC鏈上特性,雙方將共同推動應用生態的安全規范發展。
UENC(United Engine Chian,引擎鏈)是一個高效節能的去中心化公有鏈系統,通過DPOW的共識算法,實現了CPU低能耗的工作模式,實現了鏈上快速,高并發的支付交易,目前任何可用的計算機都可以參與網絡的基礎建設。[2021/6/11 23:30:09]
一、黑客在源鏈上初始化了一個本應是無效的攻擊交易。
二、攻擊交易在沒有被充分檢查的情況下被寫入源鏈,之后被中繼器納入了AllianceChain的Merkletree并簽字,然后發布到AllianceChain區塊中。
HubDAO已通過美國安全團隊CertiK智能合約安全審計:據官方消息,美國安全團隊Certik已完成對韓國 DAO項目 HubDAO 智能合約的審計,依報告所述:HubDAO項目代碼庫嚴格遵守OpenZeppelin開源庫所規定的標準和接口,可以認為是高安全性和高質量的智能合約。
HubDAO 是來自韓國的 DAO 組織,旨在打破DeFi借貸市場存在的信息割裂和利率孤島,聚合全網借貸的流動性,并采用漸進式地方式去實現 DAO 的治理與組織方式。[2020/9/23]
三、黑客在目標鏈上用步驟二的有效Merkle證明,調用PolyNetwork的ECCM合約,將keepers改成黑客控制的公鑰。
四、獲得keepers權限后,黑客就可以在多條公鏈上任意解鎖資產了。
這里值得注意的是,PolyNetwork在有些鏈上的中繼器沒有通過攻擊交易,所以即使智能合約相似,某些目標鏈上資產并未受影響。
火幣全球站將于8月8日18:00上線BAL (Balancer):據火幣全球站公告,將于2020年8月8日18:00 (GMT+8) 開放BAL (Balancer) 充幣業務。8月9日11:00 (GMT+8) 開放BAL/USDT、BAL/BTC、BAL/ETH幣幣交易。8月9日11:00 (GMT+8) 開放BAL提幣業務。[2020/8/8]
細節分析
一、黑客于北京時間2021年8月10日17:32:32在源鏈發起了一筆攻擊交易。
https://explorer.ont.io/tx/F771BA610625D5A37B67D30BF2F8829703540C86AD76542802567CAAFFFF280C#
動態 | BlockCerts BlockChain和NextHash建立合作伙伴關系:BlockCerts BlockChain和NextHash-Nexinter Exchange宣布建立區塊鏈互用性合作伙伴關系,這將使基于代幣的企業能夠在兩個平臺上線和交換。這將包括代幣產品、智能合約、業務和企業資本以及身份認證工作(從KYC到協作)。(PRWeb)[2019/11/9]
我們對交易進行了解碼,得到了以下參數映射。
二、此攻擊交易調用了一個method"66313231333138303933",其對應的簽名等于0x41973cd9。這筆交易應該是無效交易,可是卻被寫入源鏈并被中繼器納入了AllianceChain的Merkletree并簽字,然后發布到AllianceChain區塊中。Merkletree是用來證明交易是否真實存在的。其產生的跨鏈交易如下:
https://explorer.poly.network/tx/1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80
三、跨鏈交易在目標鏈上調用了PolyNetwork合約的EthCrossChainManager.verifyHeaderAndExecuteTx(),第一個參數包含了Merkle證明,解析如下:
四、這個函數解析了Merkle證明,發現證明是有效的,此攻擊交易確實存在于已被簽名的Merkletree中。之后調用了EthCrossChainManager._executeCrossChainTx()函數去執行此交易,即調用toContract指向合約(0xcf2afe102057ba5c16f899271045a0a37fcb10f2)中的method(0x6631313231333138303933),傳入參數args(010000000000000014a87fb85a93ca072cd4e5f0d4f178bc831df8a00b)。而這個method指向putCurEpochConPubKeyBytes(bytes),因為其函數簽名與步驟二中提到的method簽名相同(均為0x41973cd9,此處為哈希碰撞),所以被順利執行,將keepers的公鑰改成了黑客的公鑰。以太坊上的交易如下:
https://etherscan.io/tx/0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581
五、黑客改變公鑰后,即可以隨意解鎖資產。
事件總結
此次攻擊是由一連串交易構成的,其攻擊根源分析如下:
一、攻擊交易在沒有充分檢查的情況下被寫入源鏈。
二、中繼器會接收任意含有"makeFromOntProof"事件的交易。
三、中繼器將步驟一中的交易發布到了AllianceChain上。
四、在步驟二中,此攻擊交易被納入到AllianceChain的Merkletree上,產生了有效的Merkle證明。
五、原鏈上的ECCM合約通過步驟二產生的Merkle證明,驗證了該交易在源鏈上“確實存在”,原始數據并未被破壞、未被修改。不過需要強調的是,在構建將被發送到目標鏈的Merkle證明之前,應該對交易進行全面驗證。正如設計文檔中所示。
“ThemanagementcontractfetchestheblockheadersfromchainA,verifieswhetherornotthecrosschainparametersandtheproofarevalid,andthentransmitsthenecessaryinformationtochainBintheformofanevent;”
"管理合約從A鏈獲取區塊頭,驗證跨鏈參數和證明是否有效,然后將必要的信息以事件的形式傳送給B鏈;"
因此,目標鏈應使用Merkle證明來驗證所收到的信息是未被破壞和未被改變的,而交易信息應在發送至目標鏈之前進行全面驗證。
附:Merkletree定義如下:哈希樹可以用來驗證計算機中和計算機之間存儲、處理和傳輸的任何種類的數據。它們可以幫助確保從點對點網絡中的其他對等體收到的數據塊是未被破壞和未被改變的,甚至可以檢查其他節點是否撒謊和發送假塊。
Tags:NCEANCCHAHAITartarus FinanceANCTBlockchainSpaceMedicalchain
本文將探討: a)我們如何辨別MicroStrategy(MSTR)的價值,這是一家在加密貨幣領域處于獨特情況的公司,以及價值投資者如何運作的基礎知識.
1900/1/1 0:00:00加入PolkaWorld社區,共建Web3.0! Kusama的第一輪插槽拍賣結束已經有3周的時間.
1900/1/1 0:00:002021年5月19日-20日,第三屆世界數字資產峰會在上海寶麗嘉酒店成功舉行,在5月20日WDAS21×HuobiCharity的NFT拍賣晚宴中.
1900/1/1 0:00:00歐易OKEx情報局行業周報帶你快速回顧行業動態,厘清產業動向。 目錄: 行情概覽 機構與公司動態 加密資產市場 DeFi/NFT/Layer2動態 行業聲音 行情概覽 根據CoinGecko數據.
1900/1/1 0:00:00作者:Jackson AMM貫穿著DeFi世界的始終,同時AMM模型也構建了DeFi世界繁榮的基礎.
1900/1/1 0:00:003月以來FIL幣價一度暴漲,Filecoin賺足眼球的同時,也帶動著去中心化存儲板塊持續吸引著大眾的視線;Beeple加密藝術品在佳士得創下6900萬美元天價,加密市場隨之掀起一陣NFT熱潮.
1900/1/1 0:00:00