昨天,Go团队发布了Go 1.11.3和Go 1.10.6。 Go团队建议所有用户更新到其中一个版本。如果您不确定要更新哪一个,请选择Go 1.11.3。这些版本解决了以下安全问题:
cmd/go: “go get -u” 期间执行远程命令
go get -u命令下载,更新和构建源代码,不应该执行任意代码。在自定义域的帮助下,可以使用以 /.git结尾的虚导入路径将Git存储库克隆到名为.git的文件夹中。
如果Git存储库根目录包含HEAD文件,对象目录,配置文件,refsdirectory,那么go get -u可用于将父目录视为存储库根目录,并在其上运行Git命令。这将有助于在原始Git存储库根目录中使用配置文件进行配置。如果配置文件包含恶意命令,它们将在运行go get -u的系统上执行。
cmd/go:通过导入路径中的花括号“go get”进行目录遍历
go get命令下载并构建源代码。严格来说,不应允许任意文件系统写入。当使用-u标志或使用包含花括号({和}字符)的恶意Go包的导入路径执行时,go get命令容易受到远程代码执行的攻击。它仅在GOPATH模式下易受攻击,而在模块模式下不受攻击。攻击者可以创建任意文件系统写入,这可以进一步导致代码执行。
crypto/x509:链验证中的CPU拒绝服务
包crypto/x509解析并验证X.509编码的密钥和证书。它应该处理由具有合理资源使用的攻击者提供的证书链。此程序包不限制为每个链验证执行的工作,并可能帮助攻击者创建病态输入,进一步导致CPU拒绝服务。接受客户端证书的Go TLS服务器和验证证书的TLS客户端受到影响。
在GOPATH模式下在包含“...”的导入路径模式上执行时,“go get”中的功能回归在GOPATH工作空间中不存在。此问题将在下一版本Go 1.11.4和Go 1.10.7中得到解决。
此更新收到了用户的反应。很少有用户认为如果Go团队应该使用上下文。 WithTimeout甚至TLSHandshakeTimeout用于旧Go的安全性。其他用户对Go团队所做的努力表示赞赏。
要了解有关此版本的更多信息,请查看官方声明。
Linux公社的RSS地址:https://www.linuxidc.com/rssFeed.aspx
本文永久更新链接地址:https://www.linuxidc.com/Linux/2018-12/155858.htm