比特幣交易所 比特幣交易所
Ctrl+D 比特幣交易所
ads

Cobo安全團隊:ETH硬分叉里的隱藏風險和套利機會_ETH

Author:

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

隨著 ETH 升級 PoS 共識系統,原有的 PoW 機制的 ETH 鏈在部分社區的支持下成功硬分叉(下文簡稱 ETHW)。但是,由于某些鏈上協議在設計之初沒有對可能的硬分叉做好準備,導致對應的協議在 ETHW 分叉鏈存在一定的安全隱患,其中最為嚴重的安全隱患則是重放攻擊。

在完成硬分叉后,ETHW 主網出現了至少 2 起利用重放機制進行的攻擊,分別是 OmniBridge 的重放攻擊和 Polygon Bridge 的重放攻擊。本文將以這兩個事件作為案例,分別分析重放攻擊對分叉鏈的影響,以及協議應如何防范此類攻擊。

首先,在開始分析之前,我們需要先對重放攻擊的類型做一個初步的了解,一般而言,我們對重放攻擊分成兩類,分別是 交易重放 和 簽名消息重放。下面,我們來分別說下這兩類重放機制的區別

交易重放指的是將在原有鏈的交易原封不動的遷移到目標鏈的操作,屬于是交易層面上的重放,重放過后交易也是可以正常執行并完成交易驗證。最著名的案例莫過于 Wintermute 在 Optimism 上的攻擊事件,直接導致了超 2000 萬 OP Token的損失。但是在 EIP 155 實施以后,由于交易的簽名本身帶有 chainId (一種用于鏈本身區別與其他分叉鏈的標識符),在重放的目標鏈 chainId 不同的情況下,交易本身是無法完成重放的。

簽名消息重放區別于交易重放,是針對的用私鑰簽名的消息 (e.g. Cobo is the best) 進行的重放,在簽名消息重放中,攻擊者不需要對整個交易進行重放,而只需將簽名的消息進行重放即可。在消息簽名中,以 Cobo is the best 為例,由于該消息中并不含任何和鏈相關的特殊參數,所以該消息在簽名后理論上是可以在任意的分叉鏈中均是有效的,可以驗簽通過。為了避免該消息在分叉上的重放,可以消息內容中添加 chainId,如 Cobo is the best + chainId()。在帶上特定的鏈標識符之后,在不同分叉鏈上的消息內容不同,消息簽名不同,因此無法直接進行重放復用。

加密托管服務商Cobo宣布已獲得美國MSB牌照,2022將推動DeFi合規:據官方消息,亞太加密貨幣托管服務商Cobo積極與監管對話,推動Defi業務合規,Cobo始終積極擁抱合規,其中香港TCSP牌照于2019年獲得并已提交牌照續展申請,并續展美國FinCEN頒發的MSB牌照,公布持牌編號“31000197415541”。自去年10月冷啟動DeFi基金業務后,自營DeFi基金TVL8.31億美金,是目前亞太最大的機構DeFi資管產品。[2022/2/15 9:53:06]

下面我們來分析 OmniBridge 和 Polygon Bridge 的攻擊原理。首先拋出結論,這兩起攻擊事件本身都不是交易重放 攻擊,原因在于 ETHW 使用了區別于 ETH 主網的 chainId,所以直接重放交易無法被驗證通過。那么剩下的選項就只有消息重放了,那下面我們就來逐個分析它們各自是如何在 ETHW 分叉鏈上被消息重放攻擊的。

OmniBridge 是用于在 xDAI 和 ETH 主網之間進行資產轉移而使用的橋,主要依賴橋的指定的 validator 提交跨鏈消息完成跨鏈接資產的轉移。在 OmniBridge 中,validator 提交的驗證消息的邏輯是這樣的

在這個函數中,首先會根據 #L2 行的簽名檢查來確定提交的簽名是不是由指定的 validator 進行簽名,然后再在 #L11 行對 data 消息進行解碼。從解碼內容上看,不難發現,返回字段中包含了 chainId 字段,那么是不是說明無法進行簽名消息重放呢?我們繼續分析。

聲音 | Dexon聯合創始人:并沒有拋售DXN;Cobinhood沒有破產:Dexon聯合創始人黃偉寧在采訪時就“Cobinhood破產”“拋售Dexon” 等傳聞回應表示: 1. 并沒有拋售Dexon(DXN),5月20日DXN跌破0.02美元是由于當時交易量不到5萬,剛好買盤小于賣盤,并非基金會拋售砸盤,如果砸盤可以清空掛單簿。解押之后DXN從Dexon的治理合約打入foundation的多簽錢包,是為了減少跑節點的數量,降低機器運維成本,在鏈上都可以看到;COB并沒有被移動,外媒看到的也不是公司的操作。 2. 團隊確實已經解散,但Cobinhood并沒有破產,只是結束臺灣公司的營運,但母公司還在,有一個小一點的團隊接手營運,現在還是正常營運的狀態;而Dexon會以open source基金會的方式營運,像以太坊一樣,不會再有這麼多的商業色彩。減少成本以及減少商業色彩這主要是考慮Dexon因為此次風波,接下來可能很難募資。(星球日報)[2019/5/25]

通過追查 _executeMessage 函數,發現函數在 #L11 行對 chaindId 進行了合法性的檢查

通過繼續分析后續的函數邏輯,不難發現其實針對 chainId 的檢查其實并沒有使用 evm 原生的 chainId 操作碼來獲取鏈本身的 chainId,而是直接使用存儲在 uintStorage 變量中的值,那這個值很明顯是管理員設置進去的,所以可以認為消息本身并不帶有鏈標識,那么理論上就是可以進行簽名消息重放的。

聲音 | 眼鏡蛇Cobra:帳戶因“可疑活動”被禁止關注列表曾被清除:據ambcrypto消息,近日,眼鏡蛇Cobra受到了Monero項目負責人Riccardo Spagni的質疑,Riccardo質疑其是否會轉變立場加入澳本聰的BSV陣營。Cobra回應稱,他的帳戶因“可疑活動”(關于比特大陸的一條推特)被禁止,并且他的關注列表曾被清除。然后,他攻擊推特首席執行官Jack Dorsey,暗示他的推特的審查很快也將適用于CashApp中,限制用戶訪問他們的資金。[2019/2/22]

由于在硬分叉過程中,分叉前的所有狀態在兩條鏈上都會原封不動的保留,在后續 xDAI 團隊沒有額外操作的情況下。分叉后 ETHW 和 ETH 主網上 Omni Bridge 合約的狀態是不會有變化的,也就是說合約的 validator 也是不會有變化的。根據這一個情況,我們就能推斷出 validator 在主網上的簽名也是可以在 ETHW 上完成驗證的。那么,由于簽名消息本身不包含 chainId,攻擊者就可以利用簽名重放,在 ETHW 上提取同一個合約的資產。

和 Omni Bridge 一樣,Polygon Bridge 是用于在 Polygon 和 ETH 主網進行資產轉移的橋。與 Omni Bridge 不同,Polygon Bridge 依賴區塊證明進行提款,邏輯如下:

聲音 | Cobra:BTC最大資產是成千上萬社區成員:眼鏡蛇Cobra發推文表示,比特幣最大的資產不是大公司或機構投資者,而是我們社區里成千上萬以小方式做出貢獻的人;這些人們通過運行完整的節點、討論想法、保持消息靈通、將比特幣存儲在交易所之外、向親朋好友介紹比特幣等等作出一系列貢獻。[2018/10/7]

通過函數邏輯,不難發現合約通過 2 個檢查確定消息的合法性,分別是通過檢查 transactionRoot 和 BlockNumber 來確保交易真實發生在子鏈 (Ploygon Chain),第一個檢查其實可以繞過,因為任何人都可以通過交易數據來構造屬于自己的 transactionRoot,但是第二個檢查是無法繞過的,因為通過查看 _checkBlockMembershipInCheckpoint 邏輯可以發現:

對應的 headerRoot 是從 _checkpointManager 合約中提取的,順著這個邏輯我們查看 _checkpointManager 設置  headerRoot 的地方

不難發現在 #L2 行代碼中,簽名數據僅對 borChianId 進行了檢查,而沒有對鏈本身的 chainId 進行檢查,由于該消息是由合約指定的 proposer 進行簽名的,那么理論上攻擊者也可以在分叉鏈上重放 proposer 的消息簽名,提交合法的 headerRoot,后續再通過 Polygon Bridge 進行在 ETHW 鏈中調用 exit 函數并提交相應的交易 merkle proof 后就可以提現成功并通過 headerRoot 的檢查。

COBINHOOD現已上線INS Ecosystem:COBINHOOD剛發布推特稱,現已上線INS Ecosystem(INS),開放INS/BTC和INS/ETH交易對。COBINHOOD是美國零手續費的數字貨幣交易所。[2018/1/26]

以地址 0x7dbf18f679fa07d943613193e347ca72ef4642b9 為例,該地址就成功通過以下幾步操作完成了對 ETHW 鏈的套利

首先依靠鈔能力主網交易平臺提幣。

在 Ploygon 鏈上通過 Polygon Bridge 的 depositFor 函數進行充幣;

ETH 主網調用 Polygon Bridge 的 exit 函數提幣;

復制提取 ETH 主網 proposer 提交的 headerRoot;

在 ETHW 中重放上一步提取的 proposer 的簽名消息;

在 ETHW 中的 Polygon Bridge 上調用 exit 進行提幣

從上面分析的兩個例子中,不難發現這兩個協議在 ETHW 上遭遇重放攻擊是因為協議本身沒有做好防重放的保護,導致協議對應的資產在分叉鏈上被掏空。但是由于這兩個橋本身并不支持 ETHW 分叉鏈,所以用戶并沒有遭受任何損失。但我們要考慮的事情是為什么這兩個橋在設計之初就沒有加入重放保護的措施呢?其實原因很簡單,因為無論是 OmniBridge 還是 Polygon Bridge,他們設計的應用場景都非常單一,只是用于到自己指定的對應鏈上進行資產轉移,并沒有一個多鏈部署的計劃,所以沒有重放保護而言對協議本身并不造成安全影響。

反觀 ETHW 上的用戶,由于這些橋本身并不支持多鏈場景,如果用戶在 ETHW 分叉鏈上進行操作的話,反而會在 ETH 主網上遭受消息重放攻擊。

以 UniswapV2 為例,目前在 UnswapV2 的 pool 合約中,存在 permit 函數,該函數中存在變量 PERMIT_TYPEHASH,其中包含變量 DOMAIN_SEPARATOR。

此變量最早在 EIP712 中定義,該變量中含有 chainId,在設計之初就包含可能的多鏈場景的重放預防,但是根據 uniswapV2 pool 合約的邏輯,如下:

DOMAIN_SEPARATOR 在構造函數中已經定義好,也就是說在硬分叉后,就算鏈本身的 chainId 已經改變,pool 合約也無法獲取到新的 chianId 來更新 DOMAIN_SEPARATOR,如果未來用戶在 ETHW 上進行相關授權,那么 ETHW 上的 permit 簽名授權可以被重放到 ETH 主網上。除了 Uniswap 外,類似的協議還有很多,比如特定版本下的 yearn vault 合約,同樣也是采用了固定 DOMAIN_SEPARATOR 的情況。用戶在 ETHW 上交互的時候也需要防范此類協議的重放風險。

對于開發者而言,在為協議本身定制消息簽名機制的時候,應該考慮后續可能的多鏈場景,如果路線圖中存在多鏈部署的可能,應該把 chainId 作為變量加入到簽名消息中,同時,在驗證簽名的時候,由于硬分叉不會改變分叉前的任何狀態,用于驗證簽名消息的 chainId 不應該設置為合約變量,而應該在每次驗證前重新獲取,然后進行驗簽,保證安全性。

普通在協議不支持分叉鏈的情況下,應盡量不在分叉鏈上進行任何操作,防止對應的簽名消息重放到主網上,造成用戶在主網上損失資產

隨著多鏈場景的發展,重放攻擊從理論層面逐步變成主流的攻擊方式,開發者應當仔細考量協議設計,在進行消息簽名機制的設計時,盡可能的加入 chainId 等因子作為簽名內容,并遵循相關的最佳實踐,防止用戶資產的損失。

Cobo 是亞太地區最大的加密貨幣托管機構,自成立以來已為超過 500 家行業頂尖機構以及高凈值人士提供卓越的服務,在保證加密資產安全存儲的前提下,同時兌現了加密資產的穩健增益,深受全球用戶信賴。Cobo 專注于搭建可擴展的基礎設施,為機構管理多類型的資產提供安全托管、資產增值、鏈上交互以及跨鏈跨層等多重解決方案,為機構邁向 Web 3.0 轉型提供最強有力的技術底層支持和賦能。Cobo 旗下包含 Cobo Custody、Cobo DaaS、Cobo MaaS、Cobo  StaaS、Cobo Ventures、Cobo DeFi Yield Fund 等業務板塊,滿足您的多種需求。

區塊律動BlockBeats

媒體專欄

閱讀更多

財經法學

成都鏈安

金色早8點

Bress

鏈捕手

PANews

Odaily星球日報

Tags:ETHCOBAINETHWeth學校COBRA幣plugchain幣是那國發行的ethw幣總量多少

芝麻開門交易所
一分鐘讀懂Arbitrum三個版本區別:One、Nitro與Nova_NOV

撰文:yyy 這條推文希望用通俗易懂的語言講清楚 Arbitrum @arbitrum 三個版本的區別:One、Nitro 和 Nova.

1900/1/1 0:00:00
金色Web3.0日報 | 歐洲AML規則可能涉及DeFi、DAO和NFT_DEFI

1.DeFi代幣總市值:443.35億美元 DeFi總市值 數據來源:coingecko2.過去24小時去中心化交易所的交易量34.

1900/1/1 0:00:00
那些奇怪的中文 ENS 域名:會賺錢的肉體與搞笑的靈魂_數字貨幣

撰文:Brise.eth分析 NFT 交易數據時,經常能看到一些有趣的中文 ENS 域名。ENS 作為 WEB3 的身份標識,從域名的字眼間也能看出持有者的個性而對于在 NFT 交易信息流中出現.

1900/1/1 0:00:00
LayerZero的生態項目與多鏈野心_ZERO

原文作者:Tiga,W3.Hitchhiker;修訂:  Evelyn,W3.HitchhikerLayerZero 是一個跨鏈通訊協議,可以將一條鏈上的"信息"傳遞到另一條鏈.

1900/1/1 0:00:00
融資1290萬美元的Stacked 會為創作者經濟帶來什么?_TAL

原文標題:《融資 1290 萬美元的「Web3 版 Twitch」的 Stacked,能否改變創作者經濟?》 撰文:Chloe Twitch 自推出的十幾年來,逐漸開發出各種功能.

1900/1/1 0:00:00
Solana生態觀察:全面盤點DAO工具及生態中的挑戰與機遇_SOL

當市場還在抓著“宕機問題”不放的時候,Solana上DAO生態已經具有相當的規模了。原文:《Solana DAO tooling: Ecosystem, Challenges and Oppor.

1900/1/1 0:00:00
ads