Skip to content

update to go1.25.8, test go1.26.1#12985

Merged
dmcgowan merged 1 commit into
containerd:mainfrom
thaJeztah:update_go
Mar 11, 2026
Merged

update to go1.25.8, test go1.26.1#12985
dmcgowan merged 1 commit into
containerd:mainfrom
thaJeztah:update_go

Conversation

@thaJeztah

Copy link
Copy Markdown
Member

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.


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.

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>
@thaJeztah thaJeztah added cherry-pick/1.7.x Change to be cherry picked to release/1.7 branch cherry-pick/2.1.x Change to be cherry picked to release/2.1 branch labels Mar 6, 2026
@thaJeztah thaJeztah added the cherry-pick/2.2.x Change to be cherry picked to release/2.2 branch label Mar 6, 2026
@github-project-automation github-project-automation Bot moved this to Needs Triage in Pull Request Review Mar 6, 2026
@dosubot dosubot Bot added the area/toolchain Build and Release Toolchain label Mar 6, 2026
@github-project-automation github-project-automation Bot moved this from Needs Triage to Review In Progress in Pull Request Review Mar 11, 2026
@dmcgowan dmcgowan added this pull request to the merge queue Mar 11, 2026
Merged via the queue into containerd:main with commit 4d5b71c Mar 11, 2026
84 of 96 checks passed
@github-project-automation github-project-automation Bot moved this from Review In Progress to Done in Pull Request Review Mar 11, 2026
@thaJeztah thaJeztah deleted the update_go branch March 11, 2026 08:53
@thaJeztah

Copy link
Copy Markdown
Member Author

/cherry-pick release/2.2

@k8s-infra-cherrypick-robot

Copy link
Copy Markdown

@thaJeztah: new pull request created: #13010

Details

In response to this:

/cherry-pick release/2.2

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.

@thaJeztah

Copy link
Copy Markdown
Member Author

/cherry-pick release/2.1

@k8s-infra-cherrypick-robot

Copy link
Copy Markdown

@thaJeztah: #12985 failed to apply on top of branch "release/2.1":

Applying: update to go1.25.8, test go1.26.1
Using index info to reconstruct a base tree...
M	.devcontainer/devcontainer.json
M	.github/actions/install-go/action.yml
M	.github/workflows/api-release.yml
M	.github/workflows/ci.yml
M	.github/workflows/release/Dockerfile
M	Vagrantfile
M	contrib/Dockerfile.test
M	contrib/fuzz/oss_fuzz_build.sh
M	script/setup/prepare_env_windows.ps1
Falling back to patching base and 3-way merge...
Auto-merging script/setup/prepare_env_windows.ps1
CONFLICT (content): Merge conflict in script/setup/prepare_env_windows.ps1
Auto-merging contrib/fuzz/oss_fuzz_build.sh
CONFLICT (content): Merge conflict in contrib/fuzz/oss_fuzz_build.sh
Auto-merging contrib/Dockerfile.test
CONFLICT (content): Merge conflict in contrib/Dockerfile.test
Auto-merging Vagrantfile
CONFLICT (content): Merge conflict in Vagrantfile
Auto-merging .github/workflows/release/Dockerfile
CONFLICT (content): Merge conflict in .github/workflows/release/Dockerfile
Auto-merging .github/workflows/ci.yml
CONFLICT (content): Merge conflict in .github/workflows/ci.yml
Auto-merging .github/workflows/api-release.yml
CONFLICT (content): Merge conflict in .github/workflows/api-release.yml
Auto-merging .github/actions/install-go/action.yml
CONFLICT (content): Merge conflict in .github/actions/install-go/action.yml
Auto-merging .devcontainer/devcontainer.json
CONFLICT (content): Merge conflict in .devcontainer/devcontainer.json
error: Failed to merge in the changes.
hint: Use 'git am --show-current-patch=diff' to see the failed patch
hint: When you have resolved this problem, run "git am --continue".
hint: If you prefer to skip this patch, run "git am --skip" instead.
hint: To restore the original branch and stop patching, run "git am --abort".
hint: Disable this message with "git config set advice.mergeConflict false"
Patch failed at 0001 update to go1.25.8, test go1.26.1

Details

In response to this:

/cherry-pick release/2.1

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.

@thaJeztah thaJeztah added cherry-picked/2.1.x PR commits are cherry picked into the release/2.1 branch cherry-picked/2.2.x PR commits are cherry-picked into release/2.2 branch and removed cherry-pick/2.1.x Change to be cherry picked to release/2.1 branch cherry-pick/2.2.x Change to be cherry picked to release/2.2 branch labels Mar 11, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area/toolchain Build and Release Toolchain cherry-pick/1.7.x Change to be cherry picked to release/1.7 branch cherry-picked/2.1.x PR commits are cherry picked into the release/2.1 branch cherry-picked/2.2.x PR commits are cherry-picked into release/2.2 branch size/S

Projects

Archived in project

Development

Successfully merging this pull request may close these issues.

5 participants