大家好,我是站长 polarisxu。
近日,Go 官方发布了 Go1.19.4 和 Go1.18.9,主要包含安全更新:
- os, net/http:避免 Windows 下,os.DirFS 和 http.Dir 转义。
os.DirFS 函数和 http.Dir 类型提供对以给定目录为根的文件树的访问。这些函数允许访问该根目录下的 Windows 设备文件。例如,`os.DirFS("C:/tmp").Open("COM1")` 将打开 COM1 设备。
os.DirFS 和 http.Dir 都只提供只读文件系统访问。
此外,在 Windows 上,目录`\`(当前驱动器的根目录)的 os.DirFS 可以允许恶意制作的路径从 驱动器中逃逸并访问系统上的任何路径。
os.DirFS("") 的行为已经改变。以前,空根被视为等同于“/”,因此 `os.DirFS("").Open("tmp")` 将打开路径 “/tmp”,这现在返回一个错误。
详细 issue 见:<https://go.dev/issue/56694>。
- net/http:按字节限制规范标头缓存(header cache),而不是条目(entries)
攻击者可以在接受 HTTP/2 请求的 Go 服务器中导致内存过度增长。
HTTP/2 服务器连接包含客户端发送的 HTTP 标头密钥的缓存。虽然此缓存中的条目总数有上限,但发送非常大的密钥的攻击者可能会导致服务器为每个打开的连接分配大约 64 MiB。
此问题也已在 [golang.org/x/net/http2](http://golang.org/x/net/http2) vX.YZ 中修复,供用户手动配置 HTTP/2。
issue 见:<https://go.dev/issue/56350>。
Go 语言中文网为大家准备了最新版本的下载:<https://studygolang.com/dl>。
此外,今早 Go 官方又发布了 Go1.20 RC1,可以通过以下命令安装试用:
```bash
$ go install golang.org/dl/go1.20rc1@latest
$ go1.20rc1 download
```
关于 Go1.20 的变化,可以查看官方文档:<https://tip.golang.org/doc/go1.20>。
有疑问加站长微信联系(非本文作者)