Ethereum 君士坦丁堡安全漏洞對 FOD 的影響

FOD 與 Ethereum 的前世今生

FOD 是 FIBOS 生態中的穩定幣,與 USDC 1:1 錨定,其服務於需要穩定價值衡量的應用場景。FOD 通過跨鏈網關將 ETH 鏈上的 USDC 與 FIBOS 鏈上的 FOD 價值綁定。這相當於 1:1 鎖定了流通 FOD 同等數量的 USDC,並提供穩定即時的雙向兌換。

Ethereum 君士坦丁堡升級對 FOD 的影響

本次 Ethereum 君士坦丁堡升級是 Ethereum 由大都會轉向寧靜前的最後一次升級,升級採取的硬分叉模式,爲了防止用戶在升級時轉賬出現問題,我們決定暫時關閉 FOD 通道。由於在 2019 年 01 月 16 日凌晨,Ethereum 君士坦丁堡版本被曝出安全漏洞因此 FOD 通道重啓只能延期,重啓日期需要根據 Ethereum 基金會對這次安全漏洞對處理結果待定。

Ethereum 君士坦丁堡安全漏洞

智能合約中 address.transfer(...)address.send(...) 存在重入攻擊漏洞。

漏洞產生的情況

  1. 合約中有一個函數 A,A 中在改變狀態後調用了 transfer/send 函數。這種情況有的時候不是很明顯,比如二次 transfer 或者內部調用另一個智能合約
  2. 必須存在一個攻擊者可訪問的函數 B,其中(a)改變狀態,(b)狀態改變與函數 A 的狀態改變衝突。
  3. 函數 B 執行消耗需要小於 1600 gas (2300 gas 限制 - 700 gas(爲 call 提供的))

爲什麼此次升級會產生安全漏洞

在 Ethereum 拜占庭版本每個存儲操作需要消耗至少 5000 gas,而 transfer/send 操作 gas 消耗要求小於 2300,在執行上述操作的時候會因爲 gas 限制而無法執行。

在 Ethereum 君士坦丁堡版本中,改良了 EVM 機制,從而減少了 gas 的消耗,因此出現了重入攻擊的安全漏洞。

Parity 客戶端升級方法

在這次安全漏洞之前的 Parity 客戶端包含了 Ethereum 君士坦丁堡版本的升級並會在區塊高度達到 7080000 時激活。針對這次的安全漏洞,Parity 官方緊急發佈了新的 Parity 版本。

Parity 升級方法
升級指令:

bash <(curl https://get.parity.io -L) -r stable

驗證是否更新成功

parity -v

得到的結果查看版本是否是 Parity-Ethereum/v2.2.7-stable

Parity Ethereum
  version Parity-Ethereum/v2.2.7-stable-b00a21f39-20190115/x86_64-macos/rustc1.31.1
Copyright 2015-2018 Parity Technologies (UK) Ltd.
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章