大家好,我是 polarisxu。
前些天刚发布 1.17.4 和 1.16.11,今天又发布 1.17.5 和 Go1.16.11,主要是安全更新,同样是小版本发布。
这次发布,主要包含两个安全问题修复:
**1)net/http 包:限制 header 规范化缓存**
攻击者可以在接受 HTTP/2 请求的 Go 服务器中导致无限的内存增长。
这个问题还挺严重的。如果因为各种原因,暂时无法升级到最新版本,可以在调用 Serve 之前设置 `GODEBUG=http2server=0` 环境变量来禁用 HTTP/2,但如果通过 golang.org/x/net/http2 包手动配置,则无法设置,而应该升级 golang.org/x/net/http2 到 v0.0.0-20211209124913-491a49abca63。
**2)syscall 包:don’t close fd 0 on ForkExec error**
当运行在 Unix 系统上的 Go 程序没有文件描述符并调用 syscall.ForkExec(包括间接使用 os/exec 包)时,syscall.ForkExec 可以关闭文件描述符 0 作为失败。如果这种情况反复发生,则可能导致 I/O 错误重定向,例如将用于一个连接的网络流量写入另一个连接,或者将用于一个文件的内容写入另一个连接。
对于无法立即更新到新版本的用户,可以通过提高每个进程的文件描述符限制来缓解该错误。
以上两个 issue 的详细信息见:<https://github.com/golang/go/issues?q=milestone%3AGo1.17.5+label%3ACherryPickApproved>。
大家可以采用自己喜欢的方式升级版本,也可以到 Go语言中文网下载:<https://studygolang.com/dl>。
有疑问加站长微信联系(非本文作者)