以太坊使用Rollup技術的安全風險在哪裡?

青州
2021-03-01 15:51:47
收藏
通過破壞Infrua,基本上可以破壞所有Rollup。

本文發布於公眾號白計劃,作者:Qingzhou。

image
以太坊已經確認了以Rollup為中心的2.0路線圖,這讓Rollup成為了炙手可熱的技術,也可以說已經成為了layer2擴容的主流技術。如果與零知識證明搭配起來,Rollup會是layer2技術裡解決方案的集大成者
但正所謂"沒有絕對安全的系統",Rollup同樣存在一定安全隱患,以太坊研究者論壇的開發者已經在討論此事。以下為白計劃團隊整理和修改以太坊開發者「jchancehud」此前發布的關於虛擬Rollup攻擊的討論。
Rollup的安全風險原因
模擬Rollup攻擊的基本原理是:只要虛擬狀態有效,任何以太坊節點都可以向Optimistic Rollup協調員撒謊。而協調員只有在嘗試發送交易或切換以太坊供應商時(意味著同步全節點狀態)才會發現這一點。
Optimistic Rollup是通過在以太坊網絡上使用calldata存儲塊信息來進行。這個過程允許任何人操作以太坊節點並下載Rollup狀態。但實際上,有些人不會操作他們自己的以太坊節點,而是依靠托管解決方案(例如Infura)。
需要驗證有效性
如果要快速低成本地構建有效的Rollup鏈,需要做的是進行交易、構建狀態並將其存儲在以太坊網絡以外的其他位置。當Rollup協調員從以太坊節點接收狀態歷史記錄時,協調員可以通過重播狀態交易來確定數據是否有效。然而,協調員不能確定鏈上是否存在該狀態,最好的辦法是詢問以太坊節點。
如果出現人為攻擊
如果想像一個名為Untrust的以太坊節點服務。Untrust為以太坊dapp提供了低成本的基礎架構。如果他們選擇不信任,則可以查看特定的Rollup並創建虛構的歷史記錄。他們甚至可以通過從某些真實交易中提取通信數據並將其與虛擬交易混合來創建半虛構歷史。這樣,他們將創建一個完全不同的當前狀態哈希,但只有在使用Untrust的Rollup運算符去(向鏈上)提交一個塊的情況下,這才會被發現(這將是欺詐性的)。
這種類型的攻擊並不是特別強大。攻擊者無法偽造簽名,不能直接竊取資金,但可以在Rollup中撒謊自己的活動。
想像一下,Untrust變得更加複雜。他們決定攻擊名為MoneyMover的Rollup。

當收到對MoneyMover地址的請求時,它們會從運行完全獨立的以太坊網絡的節點返回信息。在這個獨立的以太坊網絡中,Untrust鏡像了大多數交易(使賬戶餘額看起來相似),並在需要時注入自己的(假)交易。
現在說Untrust找到一個使用MoneyMoverRollup付款的網站。該網站運行自己的MoneyMover協調員,該協調員連接Untrust以訪問以太坊網絡。

Untrust可能會在其鏡像網絡中創建虛構的交易,MoneyMover協調員將其解釋為有效(只要狀態交易有效)。由於MoneyMover協調員未與任何對等方連接,因此確定鏈上存在的唯一方法是詢問以太坊節點(在本例中為Untrust)。
Untrust在其鏡像網絡上進行了一次虛構的交易,該網站運營的MoneyMover協調員將其檢測為有效付款。Untrust現在無需付費即可訪問該網站。網站只會在他們提交交易或切換到其他以太坊供應商(即要與其他節點同步數據)時才發現這種虛構的付款。
實際可能出現的風險
以上的攻擊是僅當協調員未運行其自己的以太坊節點時,此攻擊才有意義。有一些情況是有問題的:
1.協調員數據的下游使用者無法知道他們接收的數據是否(在鏈上)存在,他們不能信任協調員正在使用的eth節點,因為使用者沒有自己運行該節點。
2.欺詐證明者(去證明惡意交易的一方)尤其容易受到這種攻擊,因為它們僅在檢測到欺詐行為時才會提交交易。惡意的eth節點可能會從區塊鏈數據中剝離無效交易,並僅返回不同的狀態哈希。欺詐證明者將無法得知狀態哈希是虛構的,並且永遠不會提交欺詐聲明。
3.eth節點操作員向Rollup協調員撒謊,以誘使他們要麼提交無效的狀態交易,要麼提交無效的欺詐聲明。一旦發生這種情況,惡意的eth節點運營商就可以充當有效的交易對手並收集抵押的資金。
解決方案1
在工作量證明鏈的背景下,協調員可以請求塊數據並檢查其是否足夠困難。檢查當前難度的至少一半應該可以使大多數攻擊因為財務問題無法實現。
在權益證明鏈中,這個過程變得不可行,因為惡意的eth節點可能會從未投票的地址提供簽名。他們可以通過在查詢時質押抵押金額來做到這一點。
解決方案2
一個不太優雅的解決方案是:對信譽良好的節點不斷簽名,並發布已存在於鏈上的Rollup狀態哈希的列表。該列表可以在IPFS之類的服務上發布。協調員節點可以包括一個已知的信譽良好的公共密鑰的預設列表(Rollup創建者,EF等)。
如果出現以下情況,協調員會知道Rollup數據是真實的:
1.所有狀態交易均有效。
2.所有狀態散列均由信譽良好的來源(節點)進行簽名。
這將確保Rollup數據有效且非虛構,並且將允許Rollup節點使用任何以太坊節點來同步數據。
以上是「jchancehud」討論的Rollup安全攻擊的可能性。主要是因為Rollup是鏈下狀態,容易在很多狀態裡出現信息同步不及時的情況,據「jchancehud」表示的,需要驗證鏈下狀態是否有效的一方需要同步其他以太坊全節點的數據才可以確認最終安全性,這意味著很多平台需要運行一個以太坊節點。
對於上文舉出的虛擬攻擊方式,以太坊的layer2解決方案團隊SKALE Labs首席技術官「Konstantin Kladko」表示,"這真的很有趣!我認為這表明,通過破壞Infrua,可以基本上破壞所有Rollup。"
當然,這是代表著那些通過Infura來與以太坊通訊的產品,Infura承擔著很大的以太坊節點服務規模,此前也有關於Infura是否會是以太坊網絡最大單點漏洞的討論。而對於這個單點安全風險,主要是以多節點負載均衡的方式處理,盡力規避。
而對於「jchancehud」的討論,最有趣的是開發者「adlerjohn」提出,這種虛擬的"攻擊"似乎不僅適用於optimistic Rollup,而且還適用於zkRollup,實際上也適用於任何智能合約。
這一推論很可能是基於"只要存在信息不對稱危險"的協作過程,就會面臨「jchancehud」所說的攻擊風險。
所以「adlerjohn」提出,在比特幣的白皮書第8節,有如何驗證信息對錯的方式,即驗證者確定最長鏈,信任最長鏈,這個方式描述了一種眾所周知的方案,這個該方案可用於防止Sybil節點提供虛假信息,這樣可以不要求大多數計算是誠實的。

image

比特幣白皮書的第8節
此外,「adlerjohn」提出,Rollup的狀態根可以作為事件發出,甚至可以存儲在以太坊狀態中,也可以進行偽造交易的查詢(例如比特幣白皮書中第7節表示可通過驗證區塊頭進行確認)。

image

比特幣白皮書的第8節

另外,「adlerjohn」還提到了關於optimistic Rollup 方案中,還可以包含名為"最小可行合併共識"的設計,該設計可以通過發布有序數據來實現數據可用性,可以讓多個側鏈、分片使用。

但可以預見的是,使用「adlerjohn」提出的方式,是存在較大的設計難度的。
在討論的最後,「jchancehud」回覆「adlerjohn」表示,不能確定這種攻擊預測是否適用於ZKRollup。但因為ZK證明更難生成,至少會更加困難。如果Rollup被廣泛採用,那麼這樣考慮Rollup尤其重要。
Rollup協調員可以在使用節點之前驗證節點中的所有區塊頭,這是另一種潛在的解決方案,儘管時間和帶寬昂貴。但用戶最好運行自己知道可以信任的eth 輕節點。如果已經解決驗證問題,運行輕節點還可以查詢事件。

討論在最後,我們會發現為了實現安全性、可擴展性、效率,這些方案按工程化的思路是可以嘗試的,但實施過程一定是困難的,因為不同開發者的討論思路最後還要合成代碼,以及包含網絡結構、客戶端、語言、操作界面等多個挑戰。

時間戳向前,區塊不停,我們繼續期待吧。

鏈捕手ChainCatcher提醒,請廣大讀者理性看待區塊鏈,切實提高風險意識,警惕各類虛擬代幣發行與炒作,站內所有內容僅係市場信息或相關方觀點,不構成任何形式投資建議。如發現站內內容含敏感信息,可點擊“舉報”,我們會及時處理。
ChainCatcher 與創新者共建Web3世界