Go 1.20.1 发布了
2023-2-15 12:3:39 Author: Go语言中文网(查看原文) 阅读量:19 收藏

点击上方蓝色“Go语言中文网”关注,每天一起学 Go

大家好,今早 Go 官方发布了 Go1.20.1 和 Go1.19.6,这是两个小版本,主要涉及到安全更新,一共修复了 4 个 Bug。

  • path/filepath:filepath.Clean 函数在 Windows 上的 path 遍历。

    在 Windows 上,filepath.Clean 函数可以将无效路径(例如 a/../c:/b)转换为有效路径 c:\b。将相对(如果无效)路径转换为绝对路径可能会引发目录遍历攻击。

    filepath.Clean 函数现在会将此路径转换为相对(但仍然无效)路径 .\c:\b。

    issue: https://go.dev/issue/57274

  • net/http, mime/multipart:过度资源消耗导致的拒绝服务

    使用 mime/multipart.Reader.ReadForm 进行多部分表单解析可能会消耗大量无限量的内存和磁盘文件。这也会影响在 net/http 包中使用请求方法 FormFile、FormValue、ParseMultipartForm 和 PostFormValue 进行的表单解析。

    ReadForm 采用 maxMemory 参数,并记录为“在内存中存储最多 maxMemory 字节 +10MB(为非文件部分保留)”。无法存储在内存中的文件部分以临时文件的形式存储在磁盘上。为非文件部分保留的不可配置的 10MB 空间过大,可能会自行打开拒绝服务向量。但是,ReadForm 没有正确考虑已解析表单消耗的所有内存,例如映射条目开销、部分名称和 MIME 标头,从而允许恶意制作的表单消耗超过 10MB。此外,ReadForm 对创建的磁盘文件数量没有限制,允许相对较小的请求体创建大量的磁盘临时文件。

    ReadForm 现在正确地考虑了各种形式的内存开销,并且现在应该保持在其记录的 10MB + maxMemory 字节内存消耗的限制范围内。用户仍然应该知道这个限制很高并且可能仍然是危险的。

    ReadForm 现在最多创建一个磁盘临时文件,将多个表单部分组合成一个临时文件。mime/multipart.File 接口类型的文档指出,“如果存储在磁盘上,文件的底层具体类型将是一个 *os.File”。当一个表单包含多个文件部分时,情况就不再如此,因为这些部分合并到一个文件中。可以使用环境变量 GODEBUG=multipartfiles=distinct 重新启用之前为每个表单部分使用不同文件的行为。

    用户应该知道 multipart.ReadForm 和调用它的 http.Request 方法不限制临时文件消耗的磁盘量。调用者可以使用 http.MaxBytesReader 限制表单数据的大小。

    issue: https://go.dev/issue/58006

  • crypto/tls:大量的握手记录可能会导致 panic

    客户端和服务器都可能发送大量的 TLS 握手记录,这会分别导致服务器和客户端
    在尝试构建响应时出现 panic。

    这会影响所有 TLS 1.3 客户端、显式启用会话恢复的 TLS 1.2 客户端 (通过将 Config.ClientSessionCache 设置为非零值)和请求客户端证书的 TLS 1.3 服务器(通过设置 Config.ClientAuth >= RequestClientCert)。

    issue: https://go.dev/issue/58001

  • net/http: 避免 HPACK 解码中的二次复杂度

    恶意制作的 HTTP/2 流可能会导致 HPACK 解码器中的 CPU 消耗过多,足以导致少量小请求拒绝服务。

    这个问题也在 http://golang.org/x/net/http2 v0.7.0 中得到修复,供用户手动配置 HTTP/2。

    issue: https://go.dev/issue/57855

Go 语言中文网已经为大家准备好了最新版本安装包,可以到 https://studygolang.com/dl 下载,也可以安装官方的方式试用。

这次的更新还是建议大家升级。


推荐阅读

福利
我为大家整理了一份从入门到进阶的Go学习资料礼包,包含学习建议:入门看什么,进阶看什么。关注公众号 「polarisxu」,回复 ebook 获取;还可以回复「进群」,和数万 Gopher 交流学习。


文章来源: http://mp.weixin.qq.com/s?__biz=MzAxMTA4Njc0OQ==&mid=2651454084&idx=1&sn=26930db043ec3afc13e35d150c6a91e7&chksm=80bb2476b7ccad600c3a38be224c08a5d86f1e85378493bb96799cab5a6c1d79205aa2fa3db5#rd
如有侵权请联系:admin#unsafe.sh