以太坊價格 以太坊價格
Ctrl+D 以太坊價格
ads
首頁 > 幣安幣 > Info

RET:以太坊遭到攻擊而導致分叉事件的技術分析

Author:

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

北京時間2021年8月27日20點50分左右,以太坊突然出現分叉。我們通過分析Geth的代碼版本修改和這筆造成分叉的交易厘清了以太坊分叉的根本原因:Geth舊版本在處理預編譯合約調用時,并未考慮特殊情況下參數值的處理,從而引發重疊拷貝,導致返回值異常。該漏洞已提交Geth官方,目前尚未披露細節,但攻擊者已經利用漏洞實施了攻擊。我們認為及時的分析和披露是必要的,也希望我們的分析能夠為社區提供必要的理解和幫助。

攻擊分析

運用我們的在線分析工具,可以看出:

以太坊客戶端OpenEthereum被正式棄用,所有維護和更新均已停止:5月25日消息,以太坊客戶端OpenEthereum支持已結束,存儲庫現已存檔,所有維護和更新均已停止。團隊表示,OpenEthereum遺留代碼庫已有7年歷史,并且越來越難以管理,合并即將到來,需要有據可查且流線型的執行層客戶端來為成功轉移到PoS導航。GnosisChain上Nethermind是受支持的客戶端,在GnosisChain和GnosisBeaconChain合并后,Erigon還將支持GnosisChain;以太坊主網上支持的客戶端包括GoEthereum、Nethermind、Erigon。

以太坊客戶端Parity于2015年首次推出,是一個用Rust編程語言實現的客戶端,于2019年過渡到OpenEthereum并由DAO接管支持和維護。[2022/5/25 3:39:43]

圖一

近一月以太坊上錨定的BTC數量增幅超過110%:據歐科云鏈OKLink數據顯示顯示,截至今日17時,以太坊上錨定的比特幣數量達85883枚。其中錨定數量前三的分別為WBTC 57987枚BTC,RenBTC枚21604 BTC以及HBTC 4810枚BTC。近30日以太坊上錨定的比特幣總量由39500枚漲至當前超過8.5萬,增長速度明顯加快。[2020/9/15]

這筆交易執行了一個精心構造的STATICCALL,攻擊者將addr設為0x04,inOffset為0,inSize為32,retOffset為7,retSize為32。

數據:以太坊中值交易量創5個月來的新高:Glassnode數據顯示,以太坊中位交易量達到0.174ETH,創5個月來的新高,此前的紀錄是在8月13日的0.171ETH。[2020/8/30]

圖二

由于STATICCALL的目標地址是預編譯合約,所以會執行圖二中的RunPrecompiledContract。

圖三

圖四

根據圖三和圖四的代碼,可以看到預編譯合約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等公鏈的基礎,因此該漏洞影響范圍甚廣。目前各公鏈也先后推出了升級和補丁,我們也呼吁各相關節點盡早升級打上補丁,以確保基礎設施的安全。

Tags:ETHRETMEM以太坊Ethereum Platinumsecret幣價格MEMEN幣如何購買以太坊幣

幣安幣
NFT:Matter Labs:為什么我們未能如期在8月上線zkSync 2.0 ?

今年3月,MatterLabs表示將在8月上線zkSync2.0,但如今并沒有順利上線,因而撰文談及具體原因,以及接下來的上線計劃.

1900/1/1 0:00:00
BIT:NFT元宇宙游戲SpaceY 2025聯合CoinMarketCap順利完成空投

2021年7月29日至8月8日,NFT元宇宙游戲SpaceY2025聯合CoinMarketCap,進行了總計40000個SPAY的代幣空投計劃.

1900/1/1 0:00:00
INF:Axie Infinity開啟PVP競技場第18賽季,PVE和每日任務SLP獎勵減半

巴比特訊,8月9日,Axie?Infinity宣布開啟PVP競技場第18賽季,該賽季相較之前將延長了兩周,并獎勵排行榜前1000位的玩家.

1900/1/1 0:00:00
TOKEN:慢霧分析Poly Network被黑:事件原因并非keeper私鑰泄露,而是跨鏈合約keeper可被修改

巴比特訊,8月10日晚間,跨鏈互操作協議PolyNetwork遭到黑客攻擊,共計超6.1億美元轉出至3個地址,受此影響導致O3Swap跨鏈池大額資產被轉出.

1900/1/1 0:00:00
LOOT:NFT驗證平臺Ethernity發布拳擊手Manny Pacquiao系列NFT

據Cryptonews近日消息,NFT驗證平臺Ethernity正在發布一套數字藝術NFT和交易卡,以紀念著名拳擊手、家和慈善家MannyPacquiao.

1900/1/1 0:00:00
ETH:數據:Loot項目地板價跌至8枚ETH

巴比特訊,OpenSea數據顯示,最近大火的Loot項目地板價跌至8枚ETH,地板價附近10枚ETH左右的Loot有較多賣單.

1900/1/1 0:00:00
ads