以太坊核心開發者在本週二(2019年1月15日)宣佈他們將推遲他們期待已久的君士坦丁堡硬分叉。
該團隊此前已確定1月16日(大約北京時間1月17日上午作為以太坊網路升級的正式日期,但在ChainSecurity(區塊鏈安全公司)發現(新版本中的)程式碼存在潛在漏洞後決定推遲。總部位於瑞士的區塊鏈安全審計公司表示,目前公佈的君士坦丁堡分叉將引入「重入攻擊」(簡單來說,就是智慧合約呼叫時,多次傳送以太坊代幣到外部的智慧合約,導致使用者資產被盜取)的漏洞,即一對駭客可以使用該程式碼來模擬安全的資金共享服務。
圖片內容:以太坊官方團隊在推特發推遲公告
更便宜的Gas費用可能導致安全問題
回顧整個漏洞攻擊過程,當智慧合約與外部智慧合約進行通訊時,就會發生「重入攻擊」。如果外部智慧合約被證明是惡意的,它可以利用回撥函式控制第一個智慧合約。該漏洞可能允許外部智慧合約在主機程式碼中進行意外修改。例如,這樣的攻擊者可能透過「重新進入」程式碼中的特定行來重複撤銷以太坊代幣。
就君士坦丁堡分叉而言,ChainSecurity指出更便宜的Gas費用將助長了「重入攻擊」的可能性。據該公司稱,雙方可以共同接收資金,決定如何分配資金。他們僅僅只需要透過利用硬分叉程式碼中提到的「PaymentSharer合約」達成協議就可以獲得支付。
君士坦丁堡版本寫道:“在君士坦丁堡分叉之前,每次儲存都會耗費至少5000Gas。”
“這遠遠超過了使用「轉賬」或「傳送」來簽訂智慧合約時傳送的2300的Gas。”
圖片內容:共識聯盟感謝ChainSecurity發現的漏洞
該公司補充說,在君士坦丁堡版本之後將儲存更改為只需要200Gas。攻擊者可以控制受害者合約程式碼轉換為被篡改的程式碼:在公共函式的支援下更改所需的變數。
“隨後,透過容易被攻擊的智慧合約呼叫攻擊者的智慧合約,例如利用msg.sender.transfer(…)函式,合約可以使用2300Gas成功控制安全防範較弱的合約變數。”ChainSecurity推測。
迄今沒有發現智慧合約被攻擊
ChainSecurity對以太坊進行了全鏈式審計,發現「重入錯誤」並未影響任何智慧合約。Core還補充說,在與安全研究人員、以太坊利益相關者、開發人員、節點運營商和社羣其他類似的重要角色進行詳細討論後,他們決定推遲硬分叉。
以太坊聯合創始人Vitalik Buterin強調,出現的這一點安全漏洞並不一定意味著底層程式碼存在缺陷。
“如果你有N個協議的特徵,那麼有N的平方個方法,可能有攻擊的可能性。”他在Reddit上寫到。“我會說,我個人對此的看法是更明確地寫下我們所依賴的不變數(由協議保證的屬性),這樣我們就可以在改變時檢查它們。”
MyCrypto.com是一個開源的區塊鏈專案,也支援V神的觀點。
圖片內容:MyCrypto.com在推特上支援V神的言論。
“EIP1283的實施是合理的,”該公司在其中一篇推文中寫道。
“程式碼很好。它背後的想法很好。此EIP的程式碼中沒有“錯誤”。它完成了預期的目標。潛在的漏洞在於合約級別 - 而不是EVM /操作碼/ EIP級別。”
本文翻譯自:https://www.newsbtc.com/2019/01/16/what-caused-ethereum-to-delay-their-much-awaited-hard-fork/
譯者:區塊鏈中文字幕組林煒鑫
翻譯時間:2019年1月17日
我是區塊傭兵,只寫對讀者有用的文字。熊市漫漫,我依舊保持風雨前程,願我們可以一起走在這條創造未來的道路上。 尋覓同行者,歡迎加入上手區塊鏈。我的微信:wxlinzju。