Skip to content

[release/2.0] update to Go 1.25.9, 1.26.2#13191

Draft
chrishenzie wants to merge 17 commits intocontainerd:release/2.0from
chrishenzie:bump-go-1.25.9-2.0
Draft

[release/2.0] update to Go 1.25.9, 1.26.2#13191
chrishenzie wants to merge 17 commits intocontainerd:release/2.0from
chrishenzie:bump-go-1.25.9-2.0

Conversation

@chrishenzie
Copy link
Copy Markdown
Member

Upgrade the default Go version to 1.25.9 and update CI matrix to ["1.25.9", "1.26.2"]. Go 1.24 is out of support, and these releases include important security fixes.

Mirrors changes in PR #13190 (release/2.2) and #13189 (release/2.1).

Assisted-by: Antigravity

@github-project-automation github-project-automation bot moved this to Needs Triage in Pull Request Review Apr 8, 2026
@k8s-ci-robot k8s-ci-robot added size/M and removed size/S labels Apr 8, 2026
@samuelkarp samuelkarp moved this from Needs Triage to Needs Reviewers in Pull Request Review Apr 8, 2026
@samuelkarp samuelkarp moved this from Needs Reviewers to Needs Triage in Pull Request Review Apr 8, 2026
@samuelkarp samuelkarp moved this from Needs Triage to Work In Progress in Pull Request Review Apr 8, 2026
@k8s-ci-robot k8s-ci-robot added size/L and removed size/M labels Apr 8, 2026
austinvazquez and others added 17 commits April 8, 2026 20:37
Signed-off-by: Austin Vazquez <macedonv@amazon.com>
(cherry picked from commit bee64b2)
Signed-off-by: yashsingh74 <yashsingh1774@gmail.com>
(cherry picked from commit 5651617)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 9b0b270)
Signed-off-by: yashsingh74 <yashsingh1774@gmail.com>
(cherry picked from commit 1ff5900)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 1852b5d)
Signed-off-by: yashsingh74 <yashsingh1774@gmail.com>
(cherry picked from commit b3eec6d)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit cebb358)
Signed-off-by: yashsingh74 <yashsingh1774@gmail.com>
(cherry picked from commit d93d18c)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit e98bc32)
Signed-off-by: yashsingh74 <yashsingh1774@gmail.com>
(cherry picked from commit 403f86e)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 808c623)
Signed-off-by: yashsingh74 <yashsingh1774@gmail.com>
(cherry picked from commit b529973)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 4ed50ed)
Signed-off-by: yashsingh74 <yashsingh1774@gmail.com>
(cherry picked from commit 4ba81d4)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit f6ddff1)
Signed-off-by: yashsingh74 <yashsingh1774@gmail.com>
(cherry picked from commit 03a44a2)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 1ea3537)
Signed-off-by: yashsingh74 <yashsingh1774@gmail.com>
(cherry picked from commit 19a7130)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 88470c5)
Signed-off-by: yashsingh74 <yashsingh1774@gmail.com>
(cherry picked from commit 37147b1)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 7fe19a6)
Signed-off-by: yashsingh74 <yashsingh1774@gmail.com>
(cherry picked from commit ed77466)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 67ec314)
add go1.26.0 into test matrix and remove go1.24

Signed-off-by: Akhil Mohan <akhilerm@gmail.com>
(cherry picked from commit 9a0c5f1)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit e082c2e)
go 1.26 removes support for windows/arm (NOT windows/arm64)
ref: https://tip.golang.org/doc/go1.26#windows

Signed-off-by: Akhil Mohan <akhilerm@gmail.com>
(cherry picked from commit e4320e6)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 0160622)
Signed-off-by: Akhil Mohan <akhilerm@gmail.com>
(cherry picked from commit 1f84d27)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit ec7320b)
go1.25.8 (released 2026-03-05) includes security fixes to the html/template,
net/url, and os packages, as well as bug fixes to the go command, the compiler,
and the os package. See the Go 1.25.8 milestone on our issue tracker for details.

- 1.25.8 https://github.com/golang/go/issues?q=milestone%3AGo1.25.8+label%3ACherryPickApproved
- diff: golang/go@go1.25.7...go1.25.8
- 1.26.1 https://github.com/golang/go/issues?q=milestone%3AGo1.26.1+label%3ACherryPickApproved
- diff: golang/go@go1.26.0...go1.26.1

---

We have just released Go versions 1.26.1 and 1.25.8, minor point releases.

These releases include 5 security fixes following the security policy:

crypto/x509: incorrect enforcement of email constraints

- When verifying a certificate chain which contains a certificate containing
  multiple email address constraints (composed of the full email address) which
  share common local portions (the portion of the address before the '@'
  character) but different domain portions (the portion of the address after the
  '@' character), these constraints will not be properly applied, and only the
  last constraint will be considered.

  This can allow certificates in the chain containing email addresses which are
  either not permitted or excluded by the relevant constraints to be returned by
  calls to Certificate.Verify. Since the name constraint checks happen after chain
  building is complete, this only applies to certificate chains which chain to
  trusted roots (root certificates either in VerifyOptions.Roots or in the system
  root certificate pool), requiring a trusted CA to issue certificates containing
  either not permitted or excluded email addresses.

  This issue only affects Go 1.26.

  Thanks to Jakub Ciolek for reporting this issue.

  This is CVE-2026-27137 and Go issue https://go.dev/issue/77952.

- crypto/x509: panic in name constraint checking for malformed certificates

  Certificate verification can panic when a certificate in the chain has an empty
  DNS name and another certificate in the chain has excluded name constraints.
  This can crash programs that are either directly verifying X.509 certificate
  chains, or those that use TLS.

  Since the name constraint checks happen after chain building is complete, this
  only applies to certificate chains which chain to trusted roots (root
  certificates either in VerifyOptions.Roots or in the system root certificate
  pool), requiring a trusted CA to issue certificates containing malformed DNS
  names.

  This issue only affects Go 1.26.

  Thanks to Jakub Ciolek for reporting this issue.

  This is CVE-2026-27138 and Go issue https://go.dev/issue/77953.

- html/template: URLs in meta content attribute actions are not escaped

  Actions which insert URLs into the content attribute of HTML meta tags are not
  escaped. This can allow XSS if the meta tag also has an http-equiv attribute
  with the value "refresh".

  A new GODEBUG setting has been added, htmlmetacontenturlescape, which can be
  used to disable escaping URLs in actions in the meta content attribute which
  follow "url=" by setting htmlmetacontenturlescape=0.

  This is CVE-2026-27142 and Go issue https://go.dev/issue/77954.

- net/url: reject IPv6 literal not at start of host

  The Go standard library function net/url.Parse insufficiently
  validated the host/authority component and accepted some invalid URLs
  by effectively treating garbage before an IP-literal as ignorable.
  The function should have rejected this as invalid.

  To prevent this behavior, net/url.Parse now rejects IPv6 literals
  that do not appear at the start of the host subcomponent of a URL.

  Thanks to Masaki Hara (https://github.com/qnighy) of Wantedly.

  This is CVE-2026-25679 and Go issue https://go.dev/issue/77578.

- os: FileInfo can escape from a Root

  On Unix platforms, when listing the contents of a directory using
  File.ReadDir or File.Readdir the returned FileInfo could reference
  a file outside of the Root in which the File was opened.

  The contents of the FileInfo were populated using the lstat system
  call, which takes the path to the file as a parameter. If a component
  of the full path of the file described by the FileInfo is replaced with
  a symbolic link, the target of the lstat can be directed to another
  location on the filesystem.

  The impact of this escape is limited to reading metadata provided by
  lstat from arbitrary locations on the filesystem. This could be used
  to probe for the presence or absence of files as well as gleaning
  metadata like file sizes, but does not permit reading or writing files
  outside the root.

  The FileInfo is now populated using fstatat.

  Thank you to Miloslav Trmač of Red Hat for reporting this issue.

  This is CVE-2026-27139 and Go issue https://go.dev/issue/77827.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 38b3e4c)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit b71360b)
go1.25.9 (released 2026-04-07) includes security fixes to the go command,
the compiler, and the archive/tar, crypto/tls, crypto/x509, html/template,
and os packages, as well as bug fixes to the go command, the compiler, and
the runtime. See the Go 1.25.9 milestone on our issue tracker for details.

- https://github.com/golang/go/issues?q=milestone%3AGo1.25.9+label%3ACherryPickApproved
- full diff: golang/go@go1.25.8...go1.25.9

From the security announce:

We have just released Go versions 1.26.2 and 1.25.9, minor point releases.

These releases include 10 security fixes following the security policy:

- os: Root.Chmod can follow symlinks out of the root on Linux

  On Linux, if the target of Root.Chmod is replaced with a symlink while
  the chmod operation is in progress, Chmod could operate on the target
  of the symlink, even when the target lies outside the root.

  The Linux fchmodat syscall silently ignores the AT_SYMLINK_NOFOLLOW flag,
  which Root.Chmod uses to avoid symlink traversal. Root.Chmod checks its
  target before acting and returns an error if the target is a symlink
  lying outside the root, so the impact is limited to cases where the
  target is replaced with a symlink between the check and operation.

  On Linux, Root.Chmod now uses the fchmodat2 syscall when available, and
  an workaround using /proc/self/fd otherwise.

  Thanks to Uuganbayar Lkhamsuren for reporting this issue.

  This is CVE-2026-32282 and Go issue https://go.dev/issue/78293.

- html/template: JS template literal context incorrectly tracked

  Context was not properly tracked across template branches for JS template
  literals, leading to possibly incorrect escaping of content when branches were
  used.

  Additionally template actions within JS template literals did not properly
  track
  the brace depth, leading to incorrect escaping being applied.

  These issues could cause actions within JS template literals to be incorrectly
  or improperly escaped, leading to XSS vulnerabilities.

  This only affects templates that use template actions within JS template
  literals.

  This is CVE-2026-32289 and Go issue https://go.dev/issue/78331.

- crypto/x509: excluded DNS constraints not properly applied to wildcard domains

  When verifying a certificate chain containing excluded DNS constraints, these
  constraints are not correctly applied to wildcard DNS SANs which use a
  different
  case than the constraint.

  For example, if a certificate contains the DNS name "*.example.com" and the
  excluded DNS name "EXAMPLE.COM", the constraint will not be applied.

  This only affects validation of otherwise trusted certificate chains, issued
  by
  a root CA in the VerifyOptions.Roots CertPool, or in the system certificate
  pool.

  This issue only affects Go 1.26.

  Thank you to Riyas from Saintgits College of Engineering, k1rnt, @1seal for
  reporting this issue.

  This is CVE-2026-33810 and Go issue https://go.dev/issue/78332.

- cmd/compile: no-op interface conversion bypasses overlap checking

  Previously, the compiler failed to unwrap pointers contained within
  a no-op interface conversion leading to an incorrect determination
  of a non-overlapping move.

  To prevent unsafe move operations, the compiler will now unwrap all
  such conversions before considering a move non-overlapping.

  Thank you to Jakub Ciolek - https://ciolek.dev/ for reporting this issue.

  This is CVE-2026-27144 and Go issue https://go.dev/issue/78371.

- cmd/compile: possible memory corruption after bound check elimination

  Previously, slices and arrays accessed using induction variables
  were sometimes incorrectly proved in-bound. If the induction variable
  used for indexing were to overflow or underflow, it could allow access
  to memory beyond the scope of the original slice or array.

  To prevent this behavior, the compiler ensures that any mutated induction
  variable that overflows/underflows with respect to its loop condition
  is not used for bound check elimination.

  Thank you to Jakub Ciolek - https://ciolek.dev/ for reporting this issue.

  This is CVE-2026-27143 and Go issue https://go.dev/issue/78333.

- archive/tar: unbounded allocation when parsing old format GNU sparse map

  tar.Reader could allocate an unbounded amount of memory when reading
  a maliciously-crafted archive containing a large number of sparse
  regions encoded in the "old GNU sparse map" format.

  We now limit both the number of old GNU sparse map extension blocks,
  and the total number of sparse file entries, regardless of encoding.

  Thanks to Colin Walters (wal...@verbum.org) who initially reported this issue.
  Thanks also to Uuganbayar Lkhamsuren (https://github.com/uug4na) and Jakub
  Ciolek
  who additionally reported this issue.

  This is CVE-2026-32288 and Go issue https://go.dev/issue/78301.

- crypto/tls: multiple key update handshake messages can cause connection to
  deadlock

  If one side of the TLS connection sends multiple key update messages
  post-handshake in a single record, the connection can deadlock, causing
  uncontrolled consumption of resources. This can lead to a denial of service.

  This only affects TLS 1.3.

  Thank you to Jakub Ciolek - https://ciolek.dev/ for reporting this issue.

  This is CVE-2026-32283 and Go issue https://go.dev/issue/78334.

- cmd/go: trust layer bypass when using cgo and SWIG

  A well-crafted SWIG source file could take advantage
  of a file-naming convention used inside the trust
  boundary of the cgo compiler. Doing so could result
  in arbitrary code execution during build time.

  SWIG files are disallowed from using this convention.

  Thank you to Juho Forsén of Mattermost for reporting this issue.

  This is CVE-2026-27140 and Go issue https://go.dev/issue/78335.

- crypto/x509: unexpected work during chain building

  During chain building, the amount of work that is done is not correctly
  limited
  when a large number of intermediate certificates are passed in
  VerifyOptions.Intermediates, which can lead to a denial of service. This
  affects
  both direct users of crypto/x509 and users of crypto/tls.

  Thank you to Jakub Ciolek - https://ciolek.dev/ for reporting this issue.

  This is CVE-2026-32280 and Go issue https://go.dev/issue/78282.

- crypto/x509: inefficient policy validation

  Validating certificate chains which use policies is unexpectedly inefficient
  when certificates in the chain contain a very large number of policy mappings,
  possibly causing denial of service.

  This only affects validation of otherwise trusted certificate chains, issued
  by
  a root CA in the VerifyOptions.Roots CertPool, or in the system certificate
  pool.

  Thank you to Jakub Ciolek - https://ciolek.dev/ for reporting this issue.

  This is CVE-2026-32281 and Go issue https://go.dev/issue/78281.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 28c448c9583152e1b0e58c4508f77955bc0976cf)
@k8s-ci-robot
Copy link
Copy Markdown

PR needs rebase.

Details

Instructions for interacting with me using PR comments are available here. If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

Status: Work In Progress

Development

Successfully merging this pull request may close these issues.

7 participants