Go 1.19.3 和 1.18.8 已发布。这些次要版本包括 2 个遵循安全策略的安全修复程序:
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”,现在则返回一个错误。
这是 CVE-2022-41720 和 Go issue https://go.dev/issue/56694
net/http:按字节限制规范标头缓存,而不是条目
攻击者可以在接受 HTTP/2 请求的 Go 服务器中导致内存过度增长。
HTTP/2 服务器连接包含客户端发送的 HTTP 标头密钥的缓存。 虽然此缓存中的条目总数有上限,但攻击者发送非常大的密钥,可能会导致服务器为每个打开的连接分配大约 64 MiB。
此问题也在 golang.org/x/net/http2 vX.Y.Z 中修复,供用户手动配置 HTTP/2。
这是 CVE-2022-41717 和 Go issue https://go.dev/issue/56350。
Go 1.19.4 还包含其他修复项,详细可在 Milestone 中查阅。
Go 1.18.9 的其他细项查看对应的 Milestone 。