Hello gophers,
We have just released Go versions 1.22.1 and 1.21.8, minor point releases.
These minor releases include 5 security fixes following the security policy:
crypto/x509: Verify panics on certificates with an unknown public key algorithm
Verifying a certificate chain which contains a certificate with an unknown public
key algorithm will cause Certificate.Verify to panic.
This affects all crypto/tls clients, and servers that set Config.ClientAuth to
VerifyClientCertIfGiven or RequireAndVerifyClientCert. The default behavior is
for TLS servers to not verify client certificates.
Thanks to John Howard (Google) for reporting this issue.
This is CVE-2024-24783 and Go issue https://go.dev/issue/65390.
net/http: memory exhaustion in Request.ParseMultipartForm
When parsing a multipart form (either explicitly with Request.ParseMultipartForm or implicitly with Request.FormValue, Request.PostFormValue, or Request.FormFile), limits on the total size of the parsed form were not applied to the memory consumed while reading a single form line. This permitted a maliciously crafted input containing very long lines to cause allocation of arbitrarily large amounts of memory, potentially leading to memory exhaustion.
ParseMultipartForm now correctly limits the maximum size of form lines.
Thanks to Bartek Nowotarski for reporting this issue.
This is CVE-2023-45290 and Go issue https://go.dev/issue/65383.
net/http, net/http/cookiejar: incorrect forwarding of sensitive headers and cookies on HTTP redirect
When following an HTTP redirect to a domain which is not a subdomain match or exact match of the initial domain, an http.Client does not forward sensitive headers such as "Authorization" or "Cookie". For example, a redirect from foo.com to www.foo.com will forward the Authorization header, but a redirect to bar.com will not.
A maliciously crafted HTTP redirect could cause sensitive headers to be unexpectedly forwarded.
Thanks to Juho Nurminen of Mattermost for reporting this issue.
This is CVE-2023-45289 and Go issue https://go.dev/issue/65065.
html/template: errors returned from MarshalJSON methods may break template escaping
If errors returned from MarshalJSON methods contain user controlled data, they
may be used to break the contextual auto-escaping behavior of the html/template
package, allowing for subsequent actions to inject unexpected content into
templates.
Thanks to RyotaK (https://ryotak.net) for reporting this issue.
This is CVE-2024-24785 and Go issue https://go.dev/issue/65697.
net/mail: comments in display names are incorrectly handled
The ParseAddressList function incorrectly handles comments (text within parentheses) within display names. Since this is a misalignment with conforming address parsers, it can result in different trust decisions being made by programs using different parsers.
Thanks to Juho Nurminen of Mattermost and Slonser (https://github.com/Slonser) for reporting this issue.
This is CVE-2024-24784 and Go issue https://go.dev/issue/65083.
View the release notes for more information:
https://go.dev/doc/devel/release#go1.22.1
You can download binary and source distributions from the Go website:
https://go.dev/dl/
To compile from source using a Git clone, update to the release with
git checkout go1.22.1
and build as usual.
Thanks to everyone who contributed to the releases.
Cheers,
Michael and Carlos for the Go team