Go 官方刚刚发布了 Go 1.15.7 和 Go 1.14.14,以解决最近报告的安全问题。建议所有用户都更新到以下版本之一(如果不确定哪个版本,请选择 Go 1.15.7)。具体修复的安全问题如下:
**1、cmd/go:使用 cgo 的包可能会在构建时导致任意代码执行。**
当 Windows 上使用 cgo 时,go 命令可以在构建时执行任意代码。运行 “go get” 或任何其他构建代码的命令时,可能会发生这种情况。只有构建不受信任的代码(而不执行代码)的用户才会受到影响。
除 Windows 用户外,这还可能影响在 PATH 中使用了 “.” 的 Unix 用户,在模块外部或禁用模块模式下运行 “go get”或构建命令。
具体 issue:<https://github.com/golang/go/issues/43783>。
为此,Russ Cox 专门写了一篇博文介绍:<https://blog.golang.org/path-security>,阐述了该 bug,如何复现以及怎么修复的。(如果打不开,可以看 Go 语言中文网镜像:<https://docs.studygolang.com/blog/path-security> ,阅读原文可以直达)
**2、crypto/elliptic:P-224 曲线上的错误操作。**
在极少数情况下,P224() 曲线实现可能会产生不正确的输出,包括从 ScalarMult 返回无效点。crypto/x509 和golang.org/x/crypto/ocsp(但不包括 crypto/tls)包支持 P-224 ECDSA 密钥,但不受公共信任的证书颁发机构的支持。没有其他标准库或 golang.org/x/crypto 软件包支持或使用 P-224 曲线。
错误的输出是由 OSS-Fuzz 上运行的[椭圆曲线-差分-模糊器项目](https://github.com/catenacyber/elliptic-curve-differential-fuzzer)发现的,并由 Philippe Antoine(Catena cyber)报告。
具体 issue:<https://github.com/golang/go/issues/43786>。
---
Go 一直以来只维护两个主要版本的更新,对于 cmd/go 的问题,应该是之前版本就存在,因此,建议大家升级到最新版本。
在 Go 语言中文网可以下载最新版本:<https://studygolang.com/dl>。
有疑问加站长微信联系(非本文作者)