星球日报
搜索
手机客户端
iPhone · Android
微信公众号
微信公众号

iPhone · Android

微信公众号

出现漏洞,君士坦丁堡硬分叉被推迟

2019-01-16

至于下周一会不会进行硬分叉升级,胡靖宇表示硬分叉升级具体的时间点应该是未定的,因为官方还没有评估到具体的风险以及制定解决方案。

出现漏洞,君士坦丁堡硬分叉被推迟

据  blog.ethereum  消息,由于以太坊改进提案(EIP 1283)被发现重大安全漏洞,原定于在第 7080000 个区块上进行的君士坦丁堡硬分叉被推迟。

Week in Ethereum 创始人 Evan Van Ness 表示,新的硬分叉日期将在周五的下一次核心开发者电话会议期间确定。以太坊核心开发者 Afri Schoedon 则在 Twitter 上表示,硬分叉将于下周一举行。

漏洞发生了怎么办?

关于 EIP 1283 漏洞处理,以太坊官方也通过博客表示,推迟君士坦丁堡硬分叉,即不在第 7080000 个区块上分叉,并且发布了相关处理办法:

对于已经升级同步的节点、矿工、交易所,需要在 Geth 或 Parity 新版本发布后及时更新版本,新版本预计在博客发布的 3~4 个小时内发布。具体的方案如下所示:

  • Geth 版本:升级到 Geth 1.8.21;降级至 Geth 1.8.19;如果想保持在 Geth 1.8.20,请使用开关 '-override.constantinople = 9999999' 无限期推迟君士坦丁堡分叉;

  • Parity 版本:推荐升级到 Parity Ethereum 2.2.7-stable 或 Parity Ethereum 2.3.0-beta;不推荐降级至 Parity Ethereum 2.2.4-beta 。

对于未同步升级的节点、钱包以及代币持有者(网络用户),现在不需要进行任何操作。

对于合约所有者,现在可以检查一下合约是否还存在其他潜在的漏洞,但请不用担心,因为有着漏洞的 EIP 1283 不会被启用。

漏洞是什么?

北京时间今天零点,智能合约审计公司  ChainSecurity  发布了一份报告,报告指出以太坊君士坦丁堡代码(EIP 1283)存在漏洞,该漏洞可能导致“重入攻击”——攻击相关合约、修改用户余额或其他关键变量。

为什么会产生重入攻击? ChainSecurity  认为,在分叉前一个存储至少需要 5000 gas,远远超过使用 “transfer”或“send”调用合约时发送的 2300 gas ;而在分叉后,一个存储只需要 200 gas,攻击者可以通过调用一些公共函数,更改所需变量。比如攻击者可以调用攻击者合约,只需要花费 2300 gas 就可以成功地更改弱势合约的变量,包括账户余额等。

当然,攻击要想成功需要一些条件:

  • 必须有一个函数a,在该函数中,“transfer / send”后面紧跟着一个状态更改操作,这有时是不明显的;

  • 攻击者必须有一个能够访问函数 A 改变状态的函数 B, B 状态改变会与函数 A 发生冲突;

  • 函数 B 需要在小于 1600 gas 的情况下执行(2300气费- 700气话费)。

ChainSecurity 提醒大家,可以从检查以下几个方面避免合约被攻击:

  • 检查 transfer 事件后是否有任何操作。

  • 检查这些操作是否改变了存储状态,最常见的是通过分配一些存储变量,检查哪些变量已被修改,做一个列表。

  • 检查合约中,非管理员可以访问的任何其他方法是否使用这些变量之一;

  • 检查这些方法本身是否自行改变存储状态;

  • 检查是否低于 2300 gas,同时记住 SSTORE 操作可能只有200 gas。 

漏洞重演何时休?

这次 EIP 1283 出现的重入攻击,在以太坊的发展史上曾出现多次,属于顽疾。

“其实这个攻击方式,在以太坊上早就是赫赫有名了,我不相信以太坊社区没有考虑到这个问题。”以太坊研究者胡靖宇告诉 Odaily 星球日报。

重入攻击影响最大是 The DAO 合约漏洞事件。当时黑客利用 The DAO 合约漏洞,转移了价值 4 千多万美元以太币(ETH)。为了夺回资金,以太坊社区决定进行软分叉与硬分叉,结果社区内部产生分歧,一部分选择留在原链(现在的 ETC),一部分选择了进入新的分叉链(ETH)。

根据胡靖宇所说,以太坊智能合约为了方便一些逻辑操作,留下了“ transfer() 和 send() ”这样一种调用方式,但也给开发者留下了安全隐患。“但是只要开发者知道有这样一个安全隐患,在写代码的时候多判断一下逻辑就可以保证安全性了。”

至于下周一会不会进行硬分叉升级,胡靖宇表示硬分叉升级具体的时间点应该是未定的,因为官方目前还没有评估到具体的风险以及制定解决方案。

原创文章,作者:秦晓峰。转载/内容合作/寻求报道请联系 report@odaily.com ;违规转载法律必究。

参与讨论

登录后参与讨论

秦晓峰

新锐作者

秦晓峰

做最专业的区块链报道,爆料交流加微信 Pnjun0811~

总文章数: 119


分享至

微信扫一扫分享

0
金融区块链