前言
北京時間2021年8月10日,跨鏈橋項目PolyNetwork遭遇攻擊,損失超過6億美金。雖然攻擊者在后續償還被盜數字貨幣,但是這仍然是區塊鏈歷史上涉及金額最大的一次攻擊事件。由于整個攻擊過程涉及到不同的區塊鏈平臺,并且存在合約以及Relayer之間的復雜交互,對于攻擊的完整過程和漏洞的根本原因,現有分析報告并未能梳理清楚。
整個攻擊分為兩個主要階段,包括修改keeper簽名和最終提幣。對于第二階段,由于keeper簽名已經被修改,因此攻擊者可以直接構建惡意提幣交易,具體可以參見我們之前的報告。然而對于修改keeper簽名的交易是如何最終在目標鏈執行的,目前并沒有詳細的文章闡明。而這一步是攻擊的最核心步驟。
本報告從修改keeper簽名交易入手(Ontology鏈上交易0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),分析了背后的原理和漏洞的本質。我們發現以下幾個原因是Keeper能被修改的原因:
源鏈上(Ontology)的relayer沒有對上鏈的交易做語義校驗,因此包含修改keeper惡意交易可以被打包到polychain上
目標鏈上(以太坊)上的relayer雖然對交易做了校驗,但是攻擊者可以直接調用以太坊上的EthCrossChainManager合約最終調用EthCrossChainData合約完成簽名修改
攻擊者精心夠著了能導致hash沖突的函數簽名,從而調用putCurEpochConPubKeyBytes完成對簽名的修改
Polygon聯合創始人:未來非托管人的問題是安全問題:金色財經聯合Coinlive現場報道,“Token 2049”峰會活動在新加坡舉辦,在題為 \"未來之路 \"的圓桌討論中。Ledger主席兼首席執行官Pascal Gauthier表示,要吸引人們進入加密貨幣,必須對他們有意義,而不像僅僅從應用商店下載一個應用程序。他認為NFT是驚人的,因為用戶并不關心比特幣和以太坊之間的戰爭,他們關心的反而是收藏。在過去的10年里,所有的品牌都開始了數字之旅,而我們現在所處的位置,已經是Web3了。 這是一個非常自然的業務擴展;他們明白NFT確實有實用性。
Polygon的聯合創始人Jaynti Kanani指出,目前正在發生的是,Web2公司正在想辦法與Web3平臺整合,給用戶提供Web3層面的東西。他認為未來非托管人的問題是安全問題。錢包的第二個安全問題是賬戶提取和智能合約錢包,這對用戶來說是很難理解的。[2022/9/29 6:01:18]
涉及交易和合約
整個過程中的交互流程如下:
Ontology交易->OntologyRelayer->PolyChain->EthereumRelayer->Ethereum
以太坊
0x838bf9e95cb12dd76a54c9f9d2e3082eaf928270:EthCrossChainManager
0xcf2afe102057ba5c16f899271045a0a37fcb10f2:EthCrossChainData
Polygon鏈游Dragoma疑似發生RugPull,其代幣DMA暴跌超99%:8月8日消息,Polygon鏈游Dragoma疑似發生RugPull,其代幣DMA從1.8美元暴跌至0.003美元左右,跌幅超99%。據悉,Dragoma是一款類似于STEPN的PlaytoEarn鏈游,玩家可免費領取恐龍蛋,并在40天后孵化成NFT用于賺取收益。[2022/8/8 12:08:55]
0x250e76987d838a75310c34bf422ea9f1ac4cc906:LockProxy
0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581:修改keeper的交易
Ontology
0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c:修改keeper的交易
Poly
0x1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80:修改keeper的交易
攻擊流程
整個攻擊大致可以分為三個步驟。第一個步驟是在Ontology鏈生成一條惡意交易(0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),第二個步驟是修改以太坊EthCrossChainData合約中的keeper簽名,第三個步驟構造惡意交易發起最終攻擊和提幣。
P網Poloniex模擬合約交易大賽正式開啟:據P網Poloniex最新消息顯示,P網Poloniex已經上線BTC/USDT永續合約測試版并開啟模擬交易大賽,參賽者可憑借活動期間的合約盈利瓜分15,000 USDT獎池。每位參與者可獲得10,000USDT虛擬體驗金作為比賽初始資金,比賽將通過PnL(總盈利)進行排名。比賽時間于2020年7月16日10:00開始至7月27日19:59(香港時間)結束。[2020/7/16]
步驟一
攻擊者首先在Ontology發起了一筆跨鏈交易,里面包含了一個攻擊payload:
可以看出交易包含了精心設計的函數名,目的在于通過造成哈希沖突的方式調用putCurEpochConPubKeyBytes函數。關于哈希函數沖突的細節在網絡上已有很多討論,可以參考.
隨后,該筆交易被OntologyRelayer接收,注意這里并沒有很嚴格的校驗。該交易會通過Relayer在PolyChain成功上鏈。EthereumRelayer會感知到新區塊的生成。
然而,這筆交易被EthereumRelayer拒絕了。原因在于EthereumRelayer對目標合約地址有校驗,只允許LockProxy合約作為目標地址,而攻擊者傳入的是EthCrossChainData地址。
動態 | 5000枚BTC從未知地址轉入Poloniex交易所:據whale-alert監測,今日08:44:59,34qiifSf開頭的未知地址將5000枚BTC轉入了Poloniex交易所,價值約5723萬美元,交易哈希為:4df40544cca5fe4e12130ef53aeb105b153213dde82224ff5aa748b7f5bcf08c。[2019/8/11]
因此,攻擊者攻擊之路在此中斷。但如前所述,包含惡意payload的攻擊交易已經在PolyChain成功上鏈,可被進一步利用。
步驟二
攻擊者手動發起交易,調用EthCrossChainManager合約中的verifyHeaderAndExecuteTx函數,將之前一步保存在PloyChain區塊中的攻擊交易數據作為輸入。由于該區塊是polychain上的合法區塊,因此可以通過verifyHeaderAndExecuteTx中對于簽名和merkleproof的校驗。然后執行EthCrossChainData合約中的putCurEpochConPubKeyBytes函數,將原本的4個keeper修改為自己指定的地址。
步驟三
在keeper被修改之后,攻擊者直接調用目標鏈上的verifyHeaderAndExecuteTx函數,最終調用至Unlock函數,大量地轉移資金,給項目方帶來了嚴重的損失。具體的攻擊細節可參考我們之前的報告。
Relayer代碼分析
聲音 | Polychain Capital 創始人 :解決PoW 受到攻擊會摧毀所有人 而 PoS 只需要把攻擊者移除:Olaf Carlson-Wee,Polychain Capital 創始人兼 CEO接受采訪時表示:大家認為 PoW 有投入真正的能源,那會讓 PoW 更安全,但我們從加密貨幣經濟學的角度來看,如果想要對 PoS 網絡進行攻擊,其他誠實的人可以把協議分叉,然后把攻擊者移除,原來的鏈變成他自己一個人玩的死鏈。如果 PoW 受到攻擊,你要解決的話會還是會摧毀所有人,而 PoS 你只需要把攻擊者移除。[2019/5/22]
在本攻擊過程中,Ontology方和以太坊方均有Relayer負責將來自Ontology的交易在polyChain上鏈,以及將polychain上的交易放到以太坊。這兩個Relayer是由Go語言實現的服務進程。
然而我們發現,這兩個Relayer都缺乏有效的校驗。這導致
攻擊者可以在Ontology構造一條惡意的跨鏈交易,并且成功打包到polychain上。
雖然在以太坊的Relayer具有校驗功能,但是攻擊者可以直接同以太坊上的鏈上合約進行交互,直接執行惡意的函數。
OntologyRelayer完全信任來自Ontology上的跨鏈交易
PolyNetwork的?ont_relayer(https://github.com/polynetwork/ont-relayer)?負責監聽Ontology鏈上的跨鏈交易并將其打包入傳入PolyChain.
注:
在OntologyRelayer中,Side指OntologyChain;Alliance指PolyChain.
CrossChainContractAddress是Ontology鏈上原生編號為09的智能合約.
上圖中,OntologyRelayer啟動時開啟三個Goroutines分別負責監聽OntologyChain和PolyChain的跨鏈交易,以及對PolyChain上的跨鏈交易做狀態檢查。在本報告中,我們只關注69行的監聽Side的代碼邏輯。
在上圖中,OntologyRelayer調用Ontology鏈提供的RPC接口(第215行,調用SDK函數GetSmartContractEventByBlock)獲取區塊中觸發的智能合約事件;然后在第228和232行表明OntologyRelayer只監聽OntologyChain上由CrossChainContractAddress觸發的makeFromOntProof事件;
上圖中,在處理OntologyChain上的跨鏈交易時,OntologyRelayer總共做了五次校驗,分別是兩次向OntologyChain發送的RPC請求校驗(check1和check4),以及三次參數是否為空的校驗(check2,check3,和check5)。這五次校驗都屬于常規校驗,并未對來自OntologyChain上的跨鏈交易做語義上的校驗;第167和171行取出了在目標鏈上執行所需要的交易參數信息;第183行向PolyChain發送交易;
OntologyRelayer在構造了PolyChain上的交易后便向PolyChain發起RPC請求發送交易(第164行,函數調用SendTransaction);
這個名為ProcessToAliianceCheckAndRetry的Goroutine也僅僅是做了重發失敗交易的工作,仍然未對來自OntologyChain上的跨鏈交易做任何語義上的校驗。
至此,我們可以看出ont-relayer監聽所有來自OntologyChain由CrossChainContractAddress觸發的makeFromOntProof事件,并未對其做任何語義上的校驗,便向PolyChain轉發了交易。而任何人向Ontology發送的任何跨鏈交易都會觸發CrossChainContractAddress的makeFromOntProof事件,所以OntologyRelayer會將所有來自Ontology上的跨鏈交易都轉發到Polychain上。
EthereumRelayer中的無效校驗
EthereumRelayer?負責監聽PolyChain并將目標鏈為Ethereum的跨鏈交易轉發到Ethereum上。
EthereumRelayer啟動一個Goroutine來監控PolyChain;
EthereumRelayer監聽所有PolyChain上目標鏈為Ethereum的跨鏈交易;EthereumRelayer會校驗跨鏈交易的目標合約是否為config.TargetContracts中指定的合約之一,如果不是則不會發送這筆跨鏈交易到Ethereum上。
雖然EthereumRelayer對PolyChain上的跨鏈交易做了部分校驗,比如限制了目標合約,但是與PolyChain不同,任何人都可以向Ethereum上的EthCrossChainManager合約發送交易。換句話說,EthereumRelayer在這里做的校驗沒有實際的意義,只要包含惡意payload的跨鏈交易被成功打包進了PolyChain,那么任何人都可以直接使用已經打包好的區塊數據將payload發送到以太坊EthCrossChainManager合約并執行。
攻擊者正是利用了上述兩個缺陷,完成了攻擊流程中的步驟一和步驟二。
寫在最后
通過對整個攻擊流程的完整梳理和詳盡分析,我們認為Relayer的不完整校驗是攻擊得以發生的根本原因。其它方面則更多地屬于比較精彩的攻擊技巧。總而言之,跨鏈的校驗和鑒權是跨鏈系統安全的關鍵所在,值得社區付出更多的努力。
Tags:ChainCHAHAIAINVIPchainGame X Change PotionBinance Smart Chain Girlrubychain
頭條 ▌美國參議員敦促國會阻止財政部挑選加密貨幣的贏家和輸家8月7日消息,在白宮批準加密稅修正案之后,人們擔心美國政府正在挑選加密貨幣領域的贏家和輸家.
1900/1/1 0:00:00當前,NFT已經從小眾的區塊鏈空間“出圈”,在全世界引起了病營銷般的關注。除了動輒創出天價“吸睛”外,NFT在當今日益虛擬的世界以及不久的未來所扮演的角色,也成為熱議的話題之一.
1900/1/1 0:00:00我們正在進入一個所有權的新時代,在這個時代,投資越來越分散,散戶投資者也越來越容易參與投資機會.
1900/1/1 0:00:00周二,?PolyNetwork?官方推特稱該項目遭到黑客攻擊,直接損失了價值超過6億美元的加密資產.
1900/1/1 0:00:00今天,我們已經發現付款方式的習慣和模式正在改變。雖然現金還是普遍存在于我們生活當中,但是在新一代年輕當中,現金支付已經不是這代人的主要支付手段,它正在被電子支付和數字支付以及其他不同類型的支付所.
1900/1/1 0:00:00截至8月8日,今年全球已有30筆區塊鏈項目融資規模過億美元。2021年以來,NFT行業取得了前所未有的發展,NFT成為繼DeFi之后第二個「明星賽道」,受到資本方青睞.
1900/1/1 0:00:00