header-langage
简体中文
繁體中文
English
Tiếng Việt
한국어
日本語
ภาษาไทย
Türkçe
扫码下载APP

Ethereum Blog:Geth发布最新修复版本

2020-11-13 13:00
阅读本文需 10 分钟
总结 AI 总结
看总结 收起
原文标题:《GETH 发布最新修复版本》
原文来源:以太坊中文网


提要


使用 Go<1.15.5 或<1.14.12 构建的 geth 版本很可能受到严重安全漏洞 (DoS) 的影响。Golang 团队已将此漏洞注册为「CVE-2020-28362」。


我们建议所有用户使用 Go 1.15.5 or 1.14.12 重建客户端 (最好是 v1.9.24 版本),以避免节点崩溃。另外,如果你运行的是官方程序,我们发布了基于 Go 1.15.5 的 Geth v1.9.24 版本。(Release: https://github.com/ethereum/go-ethereum/releases/tag/v1.9.24)


Docker 映像很可能由于缺少基本映像过期,可以查看此处说明使用 Go1.15.5 临时构建映像。请运行 geth version 来验证你的程序所使用的 Go 版本。


背景


在十月初,go-ethereum 加入了 Google 的OSS-Fuzz计划。我们曾经临时执行过模糊测试,并测试了一些不同的平台。


10 月 24 日,其中一个测试工具发现了一处崩溃。


经调查,发现问题的根本原因是 Go 标准库中的漏洞,并且该问题已经被上报。

 

影响


在区块处理过程中,利用 DoS 漏洞可以使所有 Geth 节点崩溃,随之而来的后果就是以太坊网络中的大部分节点掉线。


除了 Go-Ethereum 之外,这个问题还有很大可能影响所有 Geth 的分叉 (例如 TurboGeth 或是 ETC 使用的 core-geth)。为了扩大调查范围,我们会继续回溯代码,Go 团队也已经对潜在受影响的使用者展开了调查。


事件时间线 


2020-10-24: 接收来自 OSS-fuzz 的崩溃报告 

2020-10-25: 经调查发现起因是 Go 语言的漏洞。细节报告已经发送至security@golang.org

2020-10-26: 收到确认反馈,继续进行调查 

2020-10-26 – 2020-11-06: 讨论可能修复方案,继续回溯调查潜在受影响的使用者 

2020-11-06: Go 暂定 2020-11-12 发布漏洞修复 

2020-11-09: Go 预宣布安全补丁:https://groups.google.com/g/golang-announce/c/kMa3eup0qhU/m/O5RSMHO_CAAJ

2020-11-11: 通过 Geth 的官方twitter、Discord 以及Reddit通知用户 

2020-11-12: 发布新的 Go 版本,以及 geth 新版本其他问题 


挖矿漏洞


这个 PR 提交了另一个安全问题,引起了我们的注意,其中包含对 ethash 算法的修复。


该挖矿漏洞可能导致矿工在未来的 epoch 中错误地计算工作量证明。ETC 链已经在 2020-11-06 发生了这个问题。预计这可能将在 2021 年 1 月上旬在区块高度 11550000 / epoch 385 处对 ETH 主网产生影响。


这个问题也在 v1.9.24 版本中得到了修复,此漏洞只与矿工节点相关,非矿工节点不受影响。


Geth 的浅拷贝漏洞


受影响版本: 1.9.7 – 1.9.16

修复: 1.9.17

类型: 共识漏洞


2020 年 7 月 15 日, John Youngseok Yang (Software Platform Lab) 报告了 Geth 中的一个共识漏洞。


Geth 预编译的 dataCopy(0x00 ... 04)合约在调用时进行了浅拷贝,而 Parity 则进行了深拷贝。攻击者可以部署这样的合约:


在 EVM 内存区 R 写入 X 

使用 R 作为参数调用 0x00..04 

使用 R 覆盖 Y 

最后调用 RETURNDATACOPY 

操作码调用该合约时,Parity 会在 EVM 栈中 push X,而 Geth 会 push Y 


结果


这发生在以太坊主网区块高度 11234873 处的交易 0x57f7f9,导致节点掉线,约 30 个区块在侧链丢失。这也导致了 Infura 掉线,继而对使用 Infura 的用户和服务商造成了影响。


更多细节请参阅GethInfura的事件报告,以及此系列推文


16 和 .17 版本中的 DoS 漏洞


受影响版本: v1.9.16,v1.9.17

修复: v1.9.18

类型: 区块处理期间的 DoS 漏洞


我们发现了一个 DoS 漏洞,并且在 v1.9.18 中进行了修复。我们决定不在这个时间点公布细节。


建议


短期内,我们建议所有用户立即将 Geth 升级到 v1.9.24 版本 (Go 1.15.5),此处是官方 Release: https://github.com/ethereum/go-ethereum/releases/tag/v1.9.24


如果你是通过 Docker 使用 Geth,那可能会出现一些问题。如果是 ethereum/client-go,需要注意两件事:


Docker hub 中的新映像可能会延迟

如果 Go 的基础映像没那么快创建的话,则很有可能是基于 Go 的漏洞版本创建的


如果你打算自己创建 docker 映像 (通过 repository root 中的 docker build .),也可能会遇到第二个问题。


因此,请确保基础映像使用的是 Go 1.15.5。


长期来说,我们建议用户和矿工使用备选客户端。我们强烈认识到以太坊网络要保持韧性,就不能依赖单一的客户端实现。其他客户端选择还有 BesuNethermindOpenEthereum 和 TurboGeth 等等。


大家可以通过 https://bounty.ethereum.orgbounty@ethereum.org 或 security@ethereum.org 报告安全漏洞。


原文链接


欢迎加入律动 BlockBeats 官方社群:

Telegram 订阅群:https://t.me/theblockbeats

Telegram 交流群:https://t.me/BlockBeats_App

Twitter 官方账号:https://twitter.com/BlockBeatsAsia

举报 纠错/举报
本平台现已全面集成Farcaster协议, 如果您已有Farcaster账户, 可以登录 后发表评论
选择文库
新增文库
取消
完成
新增文库
仅自己可见
公开
保存
纠错/举报
提交