Browse code

update to go1.26.4

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>

Paweł Gronowski authored on 2026/06/03 22:29:25
Showing 15 changed files
... ...
@@ -13,7 +13,7 @@ on:
13 13
         required: false
14 14
 
15 15
 env:
16
-  GO_VERSION: "1.26.3"
16
+  GO_VERSION: "1.26.4"
17 17
   GOTESTLIST_VERSION: v0.3.1
18 18
   TESTSTAT_VERSION: v0.1.25
19 19
   SETUP_BUILDX_VERSION: edge
... ...
@@ -18,7 +18,7 @@ on:
18 18
         required: false
19 19
 
20 20
 env:
21
-  GO_VERSION: "1.26.3"
21
+  GO_VERSION: "1.26.4"
22 22
   GOTESTLIST_VERSION: v0.3.1
23 23
   TESTSTAT_VERSION: v0.1.25
24 24
   ITG_CLI_MATRIX_SIZE: 6
... ...
@@ -19,7 +19,7 @@ on:
19 19
         default: ""
20 20
 
21 21
 env:
22
-  GO_VERSION: "1.26.3"
22
+  GO_VERSION: "1.26.4"
23 23
   TESTSTAT_VERSION: v0.1.25
24 24
   TEMPLATE_NAME: ${{ inputs.template }}
25 25
 
... ...
@@ -25,7 +25,7 @@ on:
25 25
         required: false
26 26
 
27 27
 env:
28
-  GO_VERSION: "1.26.3"
28
+  GO_VERSION: "1.26.4"
29 29
   GOTESTLIST_VERSION: v0.3.1
30 30
   TESTSTAT_VERSION: v0.1.25
31 31
   WINDOWS_BASE_IMAGE: mcr.microsoft.com/windows/servercore
... ...
@@ -17,7 +17,7 @@ on:
17 17
   pull_request:
18 18
 
19 19
 env:
20
-  GO_VERSION: "1.26.3"
20
+  GO_VERSION: "1.26.4"
21 21
   TESTSTAT_VERSION: v0.1.25
22 22
   DESTDIR: ./build
23 23
   SETUP_BUILDX_VERSION: edge
... ...
@@ -17,7 +17,7 @@ on:
17 17
   pull_request:
18 18
 
19 19
 env:
20
-  GO_VERSION: "1.26.3"
20
+  GO_VERSION: "1.26.4"
21 21
   DESTDIR: ./build
22 22
   SETUP_BUILDX_VERSION: edge
23 23
   SETUP_BUILDKIT_IMAGE: moby/buildkit:latest
... ...
@@ -32,7 +32,7 @@ on:
32 32
     - cron: '0 9 * * 4'
33 33
 
34 34
 env:
35
-  GO_VERSION: "1.26.3"
35
+  GO_VERSION: "1.26.4"
36 36
 
37 37
 jobs:
38 38
   codeql:
... ...
@@ -17,7 +17,7 @@ on:
17 17
   pull_request:
18 18
 
19 19
 env:
20
-  GO_VERSION: "1.26.3"
20
+  GO_VERSION: "1.26.4"
21 21
   GIT_PAGER: "cat"
22 22
   PAGER: "cat"
23 23
   SETUP_BUILDX_VERSION: edge
... ...
@@ -2,7 +2,7 @@ version: "2"
2 2
 
3 3
 run:
4 4
   # prevent golangci-lint from deducting the go version to lint for through go.mod,
5
-  go: "1.26.3"
5
+  go: "1.26.4"
6 6
   # Only supported with go modules enabled (build flag -mod=vendor only valid when using modules)
7 7
   # modules-download-mode: vendor
8 8
 
... ...
@@ -1,6 +1,6 @@
1 1
 # syntax=docker/dockerfile:1
2 2
 
3
-ARG GO_VERSION=1.26.3
3
+ARG GO_VERSION=1.26.4
4 4
 ARG BASE_DEBIAN_DISTRO="bookworm"
5 5
 ARG GOLANG_IMAGE="golang:${GO_VERSION}-${BASE_DEBIAN_DISTRO}"
6 6
 
... ...
@@ -5,7 +5,7 @@
5 5
 
6 6
 # This represents the bare minimum required to build and test Docker.
7 7
 
8
-ARG GO_VERSION=1.26.3
8
+ARG GO_VERSION=1.26.4
9 9
 
10 10
 ARG BASE_DEBIAN_DISTRO="bookworm"
11 11
 ARG GOLANG_IMAGE="golang:${GO_VERSION}-${BASE_DEBIAN_DISTRO}"
... ...
@@ -161,7 +161,7 @@ FROM ${WINDOWS_BASE_IMAGE}:${WINDOWS_BASE_IMAGE_TAG}
161 161
 # Use PowerShell as the default shell
162 162
 SHELL ["powershell", "-Command", "$ErrorActionPreference = 'Stop'; $ProgressPreference = 'SilentlyContinue';"]
163 163
 
164
-ARG GO_VERSION=1.26.3
164
+ARG GO_VERSION=1.26.4
165 165
 
166 166
 # GOTESTSUM_VERSION is the version of gotest.tools/gotestsum to install.
167 167
 ARG GOTESTSUM_VERSION=v1.13.0
... ...
@@ -1,6 +1,6 @@
1 1
 # syntax=docker/dockerfile:1
2 2
 
3
-ARG GO_VERSION=1.26.3
3
+ARG GO_VERSION=1.26.4
4 4
 
5 5
 FROM golang:${GO_VERSION}-alpine AS base
6 6
 RUN apk add --no-cache bash make yamllint
... ...
@@ -1,6 +1,6 @@
1 1
 # syntax=docker/dockerfile:1
2 2
 
3
-ARG GO_VERSION=1.26.3
3
+ARG GO_VERSION=1.26.4
4 4
 ARG BASE_DEBIAN_DISTRO="bookworm"
5 5
 ARG PROTOC_VERSION=3.11.4
6 6
 
... ...
@@ -1,6 +1,6 @@
1 1
 # syntax=docker/dockerfile:1
2 2
 
3
-ARG GO_VERSION=1.26.3
3
+ARG GO_VERSION=1.26.4
4 4
 ARG GOVULNCHECK_VERSION=v1.1.4
5 5
 ARG FORMAT=text
6 6