北京時間2021年8月27日20點50分左右,以太坊突然出現分叉。我們通過分析Geth的代碼版本修改和這筆造成分叉的交易厘清了以太坊分叉的根本原因:Geth舊版本在處理預編譯合約調用時,并未考慮特殊情況下參數值的處理,從而引發重疊拷貝,導致返回值異常。該漏洞已提交Geth官方,目前尚未披露細節,但攻擊者已經利用漏洞實施了攻擊。我們認為及時的分析和披露是必要的,也希望我們的分析能夠為社區提供必要的理解和幫助。
攻擊分析
運用我們的在線分析工具,可以看出:
以太坊累計質押量突破2100萬枚ETH,價值約合400億美元:金色財經報道,據以太坊官方數據顯示,以太坊信標鏈已質押ETH總量已突破2100萬枚,本文撰寫時達到21079233枚(按照當前價格計算約合400億美元),活躍驗證者數量為 658732個。[2023/7/11 10:48:03]
圖一
這筆交易執行了一個精心構造的STATICCALL,攻擊者將addr設為0x04,inOffset為0,inSize為32,retOffset為7,retSize為32。
數據:Arbitrum和Optimism上2/3的地址在以太坊主網上也有使用:8月16日消息,Delphi Digital統計數據顯示,目前以太坊二層網絡Arbitrum和Optimism上2/3的地址在以太坊主網上也有使用,或由于缺乏CEX的集成,用戶進入這些L2的唯一方法是從L1上的使用地址進行跨鏈。[2022/8/16 12:28:03]
圖二
由于STATICCALL的目標地址是預編譯合約,所以會執行圖二中的RunPrecompiledContract。
動態 | 以太坊聯合創始人Anthony Di Iorio將辭去Jaxx CEO一職:以太坊聯合創始人、Jaxx錢包制造商的創始人Anthony Di Iorio將辭去Jaxx CEO一職,并專注于慈善事業。與此同時,前任產品經理Maggie Xu、Di Iorio的女友將擔任該公司的新CEO。(coindesk)[2019/9/3]
圖三
圖四
根據圖三和圖四的代碼,可以看到預編譯合約0x04真正執行的邏輯只是簡單地把in返回。
圖五
圖六
圖五是STATICCALL的執行過程,753行是執行預編譯合約的入口,751行的args指向EVM的Memory中inOffset~inOffset+inSize這篇區域的指針,也就是說args指向Mem。
根據圖六以及前文對預編譯合約0x04的分析,我們可以知道753行的返回值ret是與args完全相同的指針,也指向Mem。
在1.10.7版本的Geth中:762行將ret指向的值賦給EVM的Memory中retOffset~retOffset+retOffset這篇區域,也就是將Mem的值賦給Mem,而由于ret是一個指向Mem的指針,這次Memory.Set修改了Mem的值,也就修改了ret所指的值。所以在第771行返回的ret已經不是預編譯合約執行結束時的ret了。在1.10.8版本的Geth中:增加了766行:ret=common.CopyBytes,將Mem中的值做了一次深拷貝賦給ret,那么在767行執行的Memory.Set只會修改Memory而不會修改ret,在771行返回的ret就是正確的ret。總結
通過對整個攻擊流程的梳理和Geth源代碼的分析,我們認為根本原因在于Geth舊版本在處理預編譯合約的調用時并未考慮異常值的處理,導致攻擊者利用該漏洞實施了重疊拷貝,影響了返回值,最終導致分叉的出現。由于Geth是BSC、HECO、Polygon等公鏈的基礎,因此該漏洞影響范圍甚廣。目前各公鏈也先后推出了升級和補丁,我們也呼吁各相關節點盡早升級打上補丁,以確保基礎設施的安全。
據CNBC8月31日報道,根據CNBC和Acorn、Momentive合作開展的“InvestinYou:NextGenInvestor”調查,美國投資加密貨幣的男性比例是女性的兩倍.
1900/1/1 0:00:00巴比特訊,在《星際迷航》創作者吉恩·羅登伯里誕辰100周年即將到來之際,RNDR渲染網絡母公司OTOY與吉恩·羅登伯里莊園.
1900/1/1 0:00:002021年7月29日至8月8日,NFT元宇宙游戲SpaceY2025聯合CoinMarketCap,進行了總計40000個SPAY的代幣空投計劃.
1900/1/1 0:00:00據CoinDesk8月19日消息,被監禁的暗網比特幣混合服務HelixCEO拉里·迪恩·哈蒙周三在華盛頓地區法院承認一項串謀洗錢的罪名.
1900/1/1 0:00:00相信看過我們公眾號文章《黑暗森林:一個將《三體》融入以太坊的區塊鏈游戲》的伙伴都知道,DarkForest是一個基于零知識證明技術zkSNARKS所構建的去中心化實時戰略游戲.
1900/1/1 0:00:00巴比特訊,8月14日,PolyNetwork攻擊者再次留下鏈上信息,主要內容如下:1.FBI沒有試圖聯系我。我很高興他們和其他安全團隊可能會從這場“游戲”中受益.
1900/1/1 0:00:00