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 上运行的椭圆曲线-差分-模糊器项目[1]发现的,并由 Philippe Antoine(Catena cyber)报告。
具体 issue:https://github.com/golang/go/issues/43786。
Go 一直以来只维护两个主要版本的更新,对于 cmd/go 的问题,应该是之前版本就存在,因此,建议大家升级到最新版本。
在 Go 语言中文网可以下载最新版本:https://studygolang.com/dl。
参考资料
椭圆曲线-差分-模糊器项目: https://github.com/catenacyber/elliptic-curve-differential-fuzzer
推荐阅读