是的,依然是小版本更新,包括 Go 1.14.7 和 Go 1.13.15,主要解决最近报告的安全问题。
> 之前有人问,为什么 Go 每次更新都是发布两个版本。这是 Go 的惯例,会同时维护两个版本的更新,比如现在是 Go1.14 和 Go1.13,如果 Go1.15 发布了,之后就会变成 Go1.15 和 Go1.14。
因为涉及到安全问题,建议所有用户都进行相应版本更新(如果不确定哪个版本,请选择 Go 1.14.7)。
涉及到的具体问题如下:
- encoding/binary:ReadUvarint 和 ReadVarint 可以从无效输入中读取无限数量的字节。
对 ReadUvarint 或 ReadVarint 的某些无效输入可能导致这些函数在返回错误之前从 ByteReader 参数读取无限数量的字节。当调用者直接从网络读取数据时,这可能导致处理的输入超出预期,并且依赖于 ReadUvarint 和 ReadVarint 甚至仅从无效输入中仅消耗少量的有限字节数。在更新后,ReadUvarint 和 ReadVarint 现在总是在消耗了一定数量的字节(特别是 MaxVarintLen64,即 10)之后返回。返回的结果没有改变;这些函数仅检测并返回一些错误,而无需读取过多的输入。具体 issue 见:<https://github.com/golang/go/issues/40618>。
在刚刚发布的 Go1.15 RC2 版本中,也修复了该问题。关于 Go1.15 的更多信息可以参见文档:<https://tip.golang.org/doc/go1.15>,已经 8 月份了,Go1.15 正式发布应该不远了。
有疑问加站长微信联系(非本文作者)