update to go1.26.4#7025
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
Hmm, failure related? |
|
Looks like Go stopped parsing IPv6 without brackets: golang/go@0c28789 We can opt-into the old behavior with |
|
Wow, that's a fun breaking change. But wasn't the bracketed notation only required if a port is provided (so ambiguous), and not for anything else? |
|
Oh; but that's not in the last patch-release, right? So why didn't it break before? 🤔 |
|
The change was included in the 1.26.4 patch release |
|
I added a fallback on our side.. I don't really like having to use GODEBUG. |
I'm trying to see where it is, but maybe I'm overlooking; golang/go@go1.26.3...go1.26.4 |
|
And the commit shows as it's included in all the go1.26 versions; golang/go@0c28789
|
|
Oh hmm, right 🤔 EDIT: Ah, I updated the vendor.mod go directive, that's why it only showed now With |
This release include 3 security fixes following the security policy:
- mime: quadratic complexity in WordDecoder.DecodeHeader
Decoding a maliciously-crafted MIME header containing many invalid
encoded-words could consume excessive CPU.
The MIME decoder now better handles this case.
Thanks to p4p3r (https://hackerone.com/p4p3r_hak) for reporting this issue.
This is CVE-2026-42504 and Go issue https://go.dev/issue/79217.
- net/textproto: arbitrary input are included in errors without any escaping
When returning errors, functions in the net/textproto package would
include its input as part of the error, without any escaping. Note that
said input is often controlled by external parties when using this
package naturally. For example, a net/http client uses ReadMIMEHeader
when parsing the headers it receive from a server.
As a result, an attacker could inject arbitrary content into the error.
Practically, this can result in an attacker injecting misleading
content, terminal control bytes, etc. into a victim's output or logs.
This is CVE-2026-42507 and Go issue https://go.dev/issue/79346
- crypto/x509: split candidate hostname only once
(*x509.Certificate).VerifyHostname previously called matchHostnames in a loop
over all DNS Subject Alternative Name (SAN) entries. This caused
strings.Split(host, ".") to execute repeatedly on the same input hostname.
With a large DNS SAN list, verification costs scaled quadratically based on the
number of SAN entries multiplied by the hostname's label count. Because
x509.Verify validates hostnames before building the certificate chain, this
overhead occurred even for untrusted certificates.
Thanks to Jakub Ciolek (https://ciolek.dev) for reporting this issue.
This is CVE-2026-27145 and https://go.dev/issue/79694.
View the release notes for more information:
https://go.dev/doc/devel/release#go1.26.4
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
b3b3657 to
b458dc9
Compare
|
It's happy on go1.26.3 🤔 go version
go version go1.26.3 darwin/arm64
go test -run ConvertToHostname ./cli/config/credentials/
ok github.com/docker/cli/cli/config/credentials 0.222sAnd inside the dev-container; root@docker-cli-dev# go version
go version go1.26.3 linux/arm64
root@docker-cli-dev# go test -run ConvertToHostname ./cli/config/credentials/
ok github.com/docker/cli/cli/config/credentials 0.002s |
|
Also with 1.26.4; go version
go version go1.26.4 darwin/arm64
go test -run ConvertToHostname ./cli/config/credentials/
ok github.com/docker/cli/cli/config/credentials 0.503s |
|
Right, so it fails if I change go.mod / vendor.mod to go1.26 |
|
Mystery solved; it's indeed go language version (I couldn't find where it was controlled), but @vvoland found it; https://github.com/golang/go/blob/2ce1819e0c817f18edd77c0dac5754eaf7c49c26/src/net/url/url.go#L29 And .. the last bit; https://go.dev/doc/godebug
|

- Description for the changelog
This release include 3 security fixes following the security policy:
mime: quadratic complexity in WordDecoder.DecodeHeader
Decoding a maliciously-crafted MIME header containing many invalid
encoded-words could consume excessive CPU.
The MIME decoder now better handles this case.
Thanks to p4p3r (https://hackerone.com/p4p3r_hak) for reporting this issue.
This is CVE-2026-42504 and Go issue https://go.dev/issue/79217.
net/textproto: arbitrary input are included in errors without any escaping
When returning errors, functions in the net/textproto package would
include its input as part of the error, without any escaping. Note that
said input is often controlled by external parties when using this
package naturally. For example, a net/http client uses ReadMIMEHeader
when parsing the headers it receive from a server.
As a result, an attacker could inject arbitrary content into the error.
Practically, this can result in an attacker injecting misleading
content, terminal control bytes, etc. into a victim's output or logs.
This is CVE-2026-42507 and Go issue https://go.dev/issue/79346
crypto/x509: split candidate hostname only once
(*x509.Certificate).VerifyHostname previously called matchHostnames in a loop
over all DNS Subject Alternative Name (SAN) entries. This caused
strings.Split(host, ".") to execute repeatedly on the same input hostname.
With a large DNS SAN list, verification costs scaled quadratically based on the
number of SAN entries multiplied by the hostname's label count. Because
x509.Verify validates hostnames before building the certificate chain, this
overhead occurred even for untrusted certificates.
Thanks to Jakub Ciolek (https://ciolek.dev) for reporting this issue.
This is CVE-2026-27145 and https://go.dev/issue/79694.
View the release notes for more information: https://go.dev/doc/devel/release#go1.26.4