風險提示:防範以"虛擬貨幣""區塊鏈"名義進行非法集資的風險。——銀保監會等五部門
資訊
發現
搜索
登錄
简中
繁中
English
日本語
한국어
ภาษาไทย
Tiếng Việt
BTC
ETH
HTX
SOL
BNB
查看行情
如何評估“分叉版EVM”的安全風險?
Katie 辜
Odaily资深作者
2023-05-30 09:35
本文約2306字,閱讀全文需要約4分鐘
TVL前10的鏈中有9個支持EVM智能合約。

本文來自 Coinbase本文來自

為了加強對交易ERC-20 和其他基於智能合約的資產的客戶的安全和託管保證,Coinbase 區塊鏈安全團隊調查了定義這些資產行為的程序層:以太坊虛擬機(EVM)。在評估修改自身網絡的EVM 的項目時,Coinbase 的區塊鏈安全團隊會審查關鍵的EVM 更改,以確定修改後的EVM 是否能夠提供與原始EVM 實施相同的安全和託管保證。

二級標題

二級標題

二級標題

分叉EVM 現狀截至2023 年5 月,以太坊虛擬機(EVM)奪得最熱門智能合約執行平台“榜一大哥”頭銜。根據DefiLlama 的數據,總鎖倉價值(TVL)排名前10 位的鏈中有9 個支持EVM 智能合約。因此,深入了解EVM 對於支持整個區塊鏈生態系統中的智能合約至關重要。EVM 是一種虛擬機,用於在以太坊網絡上去中心化執行智能合約。許多兼容EVM 的區塊鏈在其協議軟件中直接利用不同語言的熱門Ethereum 執行客戶端的標準實施方案,如go-ethereum(Golang)和besu(Java)。

也就是說,合約在某些EVM 兼容鏈上的執行方式可能與在以太坊上的執行方式不同,EVM 智能合約行為的安全假設在不同協議之間也可能存在很大差異。

二級標題

二級標題

二級標題

  • 分叉EVM 安全框架

  • 為此,Coinbase 開發了一個Web3安全框架,用於評估一些分叉EVM 實施方案中的安全影響。我們稱之為Coinbase 的分叉EVM 框架,下面將對其進行詳細的解釋。

  • 確保在Coinbase 的Base L2區塊鏈上安全使用和執行EVM 智能合約。

二級標題

二級標題

我們將安全性總結為兩個安全標準,它們代表了任何分叉EVM 實施方案有資格獲得Coinbase 支持的最低要求。

二級標題

二級標題

二級標題

我們如何審計EVM 實施方案的安全風險?

我們的分叉EVM 框架在評估是否符合總體安全標準(即合約不變性和安全執行環境)時,主要關注以下審計要求。需要注意的是,以下風險成分並不是分叉EVM 審計的全部範圍。

修改EVM 操作碼的定義和編碼會導致合約執行方式的重大差異。例如,假設一些分叉的EVM 實施(EVM')將算術ADD 操作碼定義邏輯(x 1 + x 2 )改為減去兩個值(x 1 - x 2 )。

結果,偏離的EVM '在執行上與標準EVM 不相等且不兼容。修改操作碼的後果可能是有益的行為,比如防止算術操作碼中的整數溢出和下溢,也可能是更危險的行為,比如導致本地資產無限鑄造的自毀行為。

EVM 使用預編譯合約來定義復雜的功能(如加密函數),使用更方便和性能更強的語言,如Golang,而不是使用不太容易訪問的EVM 字節碼。

從根本上說,這些是通過節點軟件中表示的預定鏈地址來訪問的編程功能。以太坊黃皮書(截至2023 年5 月)中定義了9 個預編譯器,對這9 個預編譯器所做的任何更改或引入新的預編譯器都需要進行審計。

  • 讓我們再舉一個具體的例子——BNB 智能鏈漏洞。 BNB 智能鏈使用go-ethereum 的一個偏離的實施方案來運行節點。為此,引入了兩個新的預編譯合約(tmHeaderValidate,iavlMerkleProofValidate),利用第三方軟件(即Cosmos SDK)來執行輕客戶端區塊驗證和Merkle 證明驗證。問題是,Cosmos SDK 軟件在其IAWL 樹表示法中有一個實施錯誤,允許加密無效的證明通過驗證。換句話說,任何人都可以憑空產生資金。攻擊者能夠利用嵌套在iavlMerkleProofValidate 預編譯器中的這個實施漏洞,從幣安跨鏈橋中抽走數億美元。

  • 這個利用漏洞的例子是為了展示預編譯器安全性的必要性,以及為偏離的EVM 實施引入新的預編譯合約所帶來的潛在風險。

  • 引入額外的預編譯器可能帶來的致命風險包括:

  • 允許一方單方面修改任何已部署合約的狀態;

這包括所有存儲修改(插入、更新、刪除);

使用不受信任、未經驗證或未經審計的第三方依賴項;

  • 提供對不確定節點內值的訪問。

  • 儘管將編譯器和EVM 視為完全獨立的實體,但值得注意的是,Solidity 編譯器確實對前三個預編譯合約(ecrecover、sha 256 和&ripemd)的行為做出了嚴格的假設,這些合約通過Solidity 語言中的本機語言關鍵字函數表示。在後台,Solidity 編譯器實際上將這些關鍵字處理成字節碼,字節碼執行合約間靜態調用操作。下圖進一步說明了這種合約間的溝通方式。

  • 修改標準預編譯器會帶來的安全風險包括:

  • 允許中心化的交易對手單方面修改任何已部署合約的狀態;

  • 這包括所有存儲修改(插入、更新、刪除);

Solidity 編譯器預編譯位置假設不一致;

  • 提供對不確定節點內值的訪問;

  • 使用不受信任、未經驗證或未經審計的第三方依賴項。

  • 修改EVM 基本組成部分所帶來的關鍵風險包括:

  • 使用不受信任、未經驗證或未經審計的第三方依賴關係。

二級標題

二級標題

安全
分叉