比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads
首頁 > BTC > Info

Poly Network攻擊關鍵步驟深度解析_HAI

Author:

Time:1900/1/1 0:00:00

北京時間2021年8月10日,跨鏈橋項目Poly Network遭遇攻擊,損失超過6億美金。雖然攻擊者在后續償還被盜數字貨幣,但是這仍然是區塊鏈歷史上涉及金額最大的一次攻擊事件。由于整個攻擊過程涉及到不同的區塊鏈平臺,并且存在合約以及Relayer之間的復雜交互,對于攻擊的完整過程和漏洞的根本原因,現有分析報告并未能梳理清楚。

整個攻擊分為兩個主要階段,包括修改keeper簽名和最終提幣。對于第二階段,由于keeper簽名已經被修改,因此攻擊者可以直接構建惡意提幣交易,具體可以參見我們之前的報告。然而對于修改keeper簽名的交易是如何最終在目標鏈執行的,目前并沒有詳細的文章闡明。而這一步是攻擊的最核心步驟。

本報告從修改keeper簽名交易入手(Ontology鏈上交易0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),分析了背后的原理和漏洞的本質。我們發現以下幾個原因是Keeper能被修改的原因:

源鏈上(Ontology)的relayer沒有對上鏈的交易做語義校驗,因此包含修改keeper惡意交易可以被打包到poly chain上

目標鏈上(以太坊)上的relayer雖然對交易做了校驗,但是攻擊者可以直接調用以太坊上的EthCrossChainManager合約最終調用EthCrossChainData合約完成簽名修改

攻擊者精心夠著了能導致hash沖突的函數簽名,從而調用putCurEpochConPubKeyBytes完成對簽名的修改

整個過程中的交互流程如下:

Apollo宣布與Hamilton Lane推出帶有Figure的區塊鏈投資工具:金色財經報道,資產管理公司Apollo Global Management和Hamilton Lane正在使用金融科技公司 Figure 開發的技術在區塊鏈上推出投資工具。Figure 在一份聲明中表示,這些投資公司將利用Figure的數字基金服務 (DFS) 平臺,該平臺將支持鏈上基金訂閱以及正在進行的基金運??營和管理。 該公司表示,投資者還將受益于DFS的通用護照功能,該功能可以將經過驗證的“了解你的客戶”憑證的匿名記錄存儲在鏈上并在多個基金中使用。[2022/11/23 7:57:45]

Ontology交易 -> Ontology Relayer -> Poly Chain -> Ethereum Relayer -> Ethereum

以太坊

0x838bf9e95cb12dd76a54c9f9d2e3082eaf928270: EthCrossChainManager

0xcf2afe102057ba5c16f899271045a0a37fcb10f2: EthCrossChainData

0x250e76987d838a75310c34bf422ea9f1ac4cc906: LockProxy

0xb1f70464bd95b774c6ce60fc706eb5f9e35cb5f06e6cfe7c17dcda46ffd59581: 修改keeper的交易

Ontology

0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c: 修改keeper的交易

Avalanche 允許用戶在交易中購買 Polygon或 BSC上的數字資產:金色財經報道,跨鏈消息傳遞系統路由器協議集成了 Avalanche 網絡的 C-Chain,以實現 Avalanche 與其他支持的區塊鏈之間的通信,例如 Polygon 和 Binance Smart Chain (BSC)。該集成使用戶能夠在單次交易中購買 Polygon 或 BSC 上的數字資產,而無需離開 Avalanche 網絡。跨鏈服務允許用戶在不同的區塊鏈之間傳輸數據,否則它們不會相互交互。(coindesk)[2022/3/4 13:36:20]

Poly

0x1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80: 修改keeper的交易

整個攻擊大致可以分為三個步驟。第一個步驟是在 Ontology 鏈生成一條惡意交易(0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),第二個步驟是修改以太坊EthCrossChainData合約中的keeper簽名,第三個步驟構造惡意交易發起最終攻擊和提幣。

步驟一

攻擊者首先在Ontology發起了一筆跨鏈交易(0xf771ba610625d5a37b67d30bf2f8829703540c86ad76542802567caaffff280c),里面包含了一個攻擊payload:

Fantom鎖倉量超越Polygon:12月27日消息,據最新數據顯示,Fantom(FTM)鎖倉量已經達到58.7億美元,24小時漲幅達到8.87%,目前已經超越Polygon(MATIC),成為鎖倉量排名第六的區塊鏈,Polygon當前鎖倉量為57.4億美元。[2021/12/27 8:06:35]

可以看出交易包含了精心設計的函數名(圖中以6631開頭的數字,轉換后即 f1121318093),目的在于通過造成哈希沖突(hash collision)的方式調用putCurEpochConPubKeyBytes函數(屬于以太坊上的EthCrossChainData合約)。關于哈希函數沖突的細節在網絡上已有很多討論,可以參考.

隨后,該筆交易被Ontology Relayer 接收,注意這里并沒有很嚴格的校驗。該交易會通過Relayer在Poly Chain成功上鏈(0x1a72a0cf65e4c08bb8aab2c20da0085d7aee3dc69369651e2e08eb798497cc80)。Ethereum Relayer會感知到新區塊的生成。

然而,這筆交易被Ethereum Relayer拒絕了。原因在于Ethereum Relayer對目標合約地址有校驗,只允許LockProxy合約作為目標地址,而攻擊者傳入的是EthCrossChainData地址。

因此,攻擊者攻擊之路在此中斷。但如前所述,包含惡意payload的攻擊交易已經在Poly Chain成功上鏈,可被進一步利用。

步驟二

攻擊者手動發起交易,調用EthCrossChainManager合約中的verifyHeaderAndExecuteTx函數,將之前一步保存在Ploy Chain區塊中的攻擊交易數據作為輸入。由于該區塊是poly chain上的合法區塊,因此可以通過verifyHeaderAndExecuteTx中對于簽名和merkle proof的校驗。然后執行EthCrossChainData合約中的putCurEpochConPubKeyBytes函數,將原本的4個keeper修改為自己指定的地址(0xA87fB85A93Ca072Cd4e5F0D4f178Bc831Df8a00B)。

NFT游戲項目Ethermon將于5月18日在Polkastarter進行IDO:據官方消息,NFT游戲項目Ethermon將于5月18日在Polkastarter進行IDO,將以0.10美元的單價出售200萬枚EMON代幣(價值20萬美元)。

Ethermon是在以太坊上建立的NFT游戲之一,由一個游戲生態系統組成,每個游戲都允許用戶用他們的以太坊 \"Mon \"NFT賺取EMON代幣。最初,Ethermon是一個2D自動戰斗平臺,專注于提高用戶收集的Mons NFTs。預計2021年5月底,Ethermon將擴展到最大的區塊鏈虛擬世界Decentraland。2021年第三季度將擴展到其他3D Metaverses。[2021/5/10 21:43:44]

步驟三

在keeper被修改之后,攻擊者直接調用目標鏈上的verifyHeaderAndExecuteTx函數(而不需要再通過poly chain -- 因為keeper已經被修改,攻擊者可以任意簽署在目標鏈看來合理的poly chain上的塊),最終調用至Unlock函數(屬于LockProxy合約),大量地轉移資金,給項目方帶來了嚴重的損失。具體的攻擊細節可參考我們之前的報告。

在本攻擊過程中,Ontology方和以太坊方均有Relayer負責將來自Ontology的交易在poly Chain上鏈,以及將poly chain上的交易放到以太坊。這兩個Relayer是由Go語言實現的服務進程。

然而我們發現,這兩個Relayer都缺乏有效的校驗。這導致

攻擊者可以在Ontology構造一條惡意的跨鏈交易,并且成功打包到poly chain上。

P網Poloniex已正式上線比特幣永續合約:據P網Poloniex最新消息顯示,P網已于香港時間2020年8月5日20:00正式上線BTC永續合約,支持最高100倍杠桿。此外,P網還將在8月6日舉辦BTC合約交易大賽,總獎池高達80,000 USDT。更多詳情見原文鏈接。

據悉,Poloniex成立于2014年,是注冊于塞舌爾的老牌國際性數字貨幣交易平臺,也是華爾街首批合規交易平臺。P網總部位于美國波士頓,并在愛爾蘭、塞舌爾、莫斯科、首爾、東京等世界各地設有獨立辦公室。P網曾獲得百度、高德、高盛等國際知名機構投資,并于2019年獲得波場TRON創始人兼BitTorrent CEO孫宇晨等投資人的注資, 資金實力雄厚。[2020/8/5]

雖然在以太坊的Relayer具有校驗功能,但是攻擊者可以直接同以太坊上的鏈上合約進行交互,直接執行惡意的函數。

Ontology Relayer完全信任來自Ontology上的跨鏈交易

Poly Network 的 ont_relayer(https://github.com/polynetwork/ont-relayer) 負責監聽 Ontology 鏈上的跨鏈交易并將其打包入傳入Poly Chain.

注:

在Ontology Relayer中,Side 指 Ontology Chain; Alliance 指 Poly Chain.

CrossChainContractAddress 是 Ontology 鏈上原生編號為 09 的智能合約.

上圖中,Ontology Relayer啟動時開啟三個 Goroutines 分別負責監聽 Ontology Chain 和 Poly Chain 的跨鏈交易,以及對 Poly Chain 上的跨鏈交易做狀態檢查。在本報告中,我們只關注69行的監聽Side的代碼邏輯。

在上圖中,Ontology Relayer 調用 Ontology 鏈提供的 RPC 接口(第 215 行,調用SDK函數 GetSmartContractEventByBlock) 獲取區塊中觸發的智能合約事件;然后在第 228 和 232 行表明 Ontology Relayer 只監聽 Ontology Chain 上由 CrossChainContractAddress 觸發的 makeFromOntProof 事件;

上圖中,在處理 Ontology Chain 上的跨鏈交易時,Ontology Relayer 總共做了五次校驗,分別是兩次向 Ontology Chain 發送的 RPC 請求校驗(check 1 和 check 4), 以及三次參數是否為空的校驗(check2, check3, 和check5)。這五次校驗都屬于常規校驗,并未對來自 Ontology Chain 上的跨鏈交易做語義上的校驗; 第 167 和 171 行取出了在目標鏈上執行所需要的交易參數信息(proof, auditPath);第 183 行向 Poly Chain 發送交易;

Ontology Relayer 在構造了 Poly Chain 上的交易后便向 Poly Chain 發起 RPC 請求發送交易(第 164 行,函數調用 SendTransaction);

這個名為 ProcessToAliianceCheckAndRetry 的 Goroutine 也僅僅是做了重發失敗交易的工作,仍然未對來自 Ontology Chain 上的跨鏈交易做任何語義上的校驗。

至此,我們可以看出 ont-relayer 監聽所有來自 Ontology Chain 由 CrossChainContractAddress 觸發的 makeFromOntProof 事件,并未對其做任何語義上的校驗,便向 Poly Chain 轉發了交易。而任何人向 Ontology 發送的任何跨鏈交易都會觸發 CrossChainContractAddress 的 makeFromOntProof 事件,所以 Ontology Relayer 會將所有來自 Ontology 上的跨鏈交易都轉發到 Poly chain 上。

Ethereum Relayer中的無效校驗

Ethereum Relayer 負責監聽 Poly Chain 并將目標鏈為 Ethereum 的跨鏈交易轉發到 Ethereum 上。

Ethereum Relayer 啟動一個 Goroutine 來監控 Poly Chain;

Ethereum Relayer監聽所有 Poly Chain 上目標鏈為 Ethereum 的跨鏈交易 (第 275 至 278 行); Ethereum Relayer會校驗跨鏈交易的目標合約是否為 config.TargetContracts中指定的合約之一,如果不是則不會發送這筆跨鏈交易到 Ethereum 上(第 315 行)。

雖然 Ethereum Relayer 對 Poly Chain 上的跨鏈交易做了部分校驗,比如限制了目標合約,但是與 Poly Chain 不同,任何人都可以向 Ethereum 上的EthCrossChainManager合約發送交易。換句話說,Ethereum Relayer 在這里做的校驗沒有實際的意義,只要包含惡意payload的跨鏈交易被成功打包進了 Poly Chain(雖然沒有被relay轉發到以太坊鏈上), 那么任何人都可以直接使用已經打包好的區塊數據將payload發送到以太坊EthCrossChainManager合約并執行(這個過程中,可以通過merkle proof的校驗,因為是已經正常上鏈的poly chain區塊數據)。

攻擊者正是利用了上述兩個缺陷,完成了攻擊流程中的步驟一和步驟二。

通過對整個攻擊流程的完整梳理和詳盡分析,我們認為Relayer的不完整校驗是攻擊得以發生的根本原因。其它(諸如利用hash沖突等)方面則更多地屬于比較精彩的攻擊技巧。總而言之,跨鏈的校驗和鑒權是跨鏈系統安全的關鍵所在,值得社區付出更多的努力。

Tags:CHAChainHAIAINblockchain的域名價值chain幣官網rushAI幣plugchain幣機制

BTC
如果弗里德曼和哈耶克還活著:他們會怎樣看待比特幣?_BTC

這是兩位20世紀貨幣經濟學巨人之間的一場傳奇性的辯論。爭論的焦點是,是否會有一種“挑戰者貨幣”能夠取代政府發行的法幣,成為全球范圍的一種新的支付媒介.

1900/1/1 0:00:00
比特幣定價的風險測度_BTC

摘要:本文探討了比特幣定價的風險測度,并簡要介紹了它在高頻量化策略和期貨保證金設定中的應用。對于比特幣市場更深入的認識,或許能為監管機構提供更多的參考。各現貨交易所的比特幣價格存在價差.

1900/1/1 0:00:00
數字人民幣專利數激增 “區塊鏈”領域大有可為_數字人

8月初中國人民銀行召開2021年下半年工作會議,在談到深化重點領域金融改革時,會議提出穩妥推進數字人民幣研發試點。此前,中國人民銀行數字人民幣研發工作組發布中國數字人民幣的研發進展白皮書.

1900/1/1 0:00:00
金色觀察|什么是zkopru?_ETH

以太坊基金會今日發布了以太坊目前資助支持的團隊名單,其中關于layer2擴容項里有重點提到了zkopru,這是一個綜合技術解決方案.

1900/1/1 0:00:00
游戲打金二十年 區塊鏈“侵入”傳統金融的特洛伊木馬_AXI

我在2005年曾經拍過關于網絡游戲里虛擬經濟的紀錄片,當時中國有數以萬計的年輕人在魔獸世界等游戲里謀生,他們在游戲里贏取的虛擬貨幣和裝備可以從國外玩家那里換來美金,這種行為在游戲圈被稱為打金.

1900/1/1 0:00:00
金色DeFi日報 | 攻擊Poly Network的黑客開始歸還資產_DEF

DeFi數據 1.DeFi總市值:1034.3億美元 市值前十幣種排名數據來源DeFiboxDeFi總市值數據來源:Coingecko2.過去24小時去中心化交易所的交易量:46.

1900/1/1 0:00:00
ads