Skip to content

Fix CVE-2026-27143: bump Go toolchain to 1.25.9#21411

Merged
geropl merged 4 commits into
mainfrom
ona/clc-2243-fix-cve-2026-27143-bump-go
Apr 23, 2026
Merged

Fix CVE-2026-27143: bump Go toolchain to 1.25.9#21411
geropl merged 4 commits into
mainfrom
ona/clc-2243-fix-cve-2026-27143-bump-go

Conversation

@geropl
Copy link
Copy Markdown
Member

@geropl geropl commented Apr 23, 2026

Description

The daily vulnerability scan on main (build run) flagged 13 Classic component images with a single critical Go stdlib vulnerability:

  • CVE-2026-27143 (GO-2026-4868): the Go compiler did not correctly check underflow/overflow on arithmetic over induction variables in loops, allowing invalid indexing at runtime that could lead to memory corruption.
  • Fixed in: Go 1.25.9 (or 1.26.2)

Affected images (all are pure-Go binaries on the same Wolfi base):
image-builder-mk3, blobserve, registry-facade, public-api-server, ide-service, content-service, ee/agent-smith, ide-metrics, node-labeler, openvsx-proxy, service-waiter, ws-manager-mk2, ws-proxy.

This PR bumps the Go toolchain across the workspace from 1.24.13 to 1.25.9:

  • Set toolchain go1.25.9 in all 71 go.mod files
  • Update GO_VERSION in dev/image/Dockerfile and bump TRIGGER_REBUILD so the CI dev-environment image installs the patched compiler
  • Update GO_VERSION in .devcontainer/Dockerfile for dev-environment consistency

Note

A follow-up commit will be needed to update the dev-environment image tag references in .gitpod.yml and .github/workflows/*.yml once the new image is published, as was done in #21327.

Related Issue(s)

Fixes CLC-2243

How to test

Verified locally by rebuilding all 13 affected components with GOTOOLCHAIN=go1.25.9 and scanning each binary with grype:

$ grype <binary> --only-fixed -o json | jq '.matches[] | select(.vulnerability.severity == "Critical")'
# (no output across all 13 components)

Before the bump the same scan reports CVE-2026-27143 as Critical for stdlib@go1.24.13.

Documentation

  • No (toolchain bump only)

Preview status

gitpod:summary

Build Options

Build
  • /werft with-werft
  • leeway-no-cache
  • /werft no-test
Publish
  • /werft publish-to-npm
  • /werft publish-to-jb-marketplace
Installer
  • analytics=segment
  • with-dedicated-emulation
  • workspace-feature-flags
Preview Environment / Integration Tests
  • /werft with-local-preview
  • /werft with-preview
  • /werft with-large-vm
  • /werft with-gce-vm
  • /werft preemptible
  • with-integration-tests=all
  • with-monitoring

/hold

Daily vulnerability scan (CLC-2243) flagged 13 Classic component
images with a critical Go stdlib vulnerability:

- CVE-2026-27143 (GO-2026-4868): compiler did not correctly check
  underflow/overflow on arithmetic over induction variables in
  loops, allowing invalid indexing at runtime that could lead to
  memory corruption.

The vulnerability is fixed in Go 1.25.9 (and 1.26.2). Bump the
toolchain across the workspace:

- Set toolchain to go1.25.9 in all 71 go.mod files
- Update GO_VERSION in dev/image/Dockerfile and bump TRIGGER_REBUILD
  so the CI dev-environment image installs the patched compiler
- Update GO_VERSION in .devcontainer/Dockerfile for dev consistency

Verified locally by rebuilding all 13 affected components with
GOTOOLCHAIN=go1.25.9 and confirming grype reports zero critical
findings.

Co-authored-by: Ona <no-reply@ona.com>
The CI dev-environment image bundles golangci-lint v1.64.8 built with
Go 1.24, which refuses to lint code declaring "toolchain go1.25.9".
Pin the lint target to 1.24 so the existing image keeps working without
a rebuild. We don't use any 1.25 language features; the toolchain bump
only addresses CVE-2026-27143 in the Go stdlib.

Co-authored-by: Ona <no-reply@ona.com>
The previous commit bumped 'toolchain go1.25.9' across all 71 go.mod
files. That worked locally but broke the existing CI dev-environment
image, which:
  1. ships golangci-lint v1.64.8 built with Go 1.24 (rejects modules
     declaring toolchain >= 1.25)
  2. has system Go 1.24.13, so GOTOOLCHAIN=auto downloads the 1.25.9
     toolchain module — but that module's prebuilt tools dir lacks
     'covdata', breaking 'go test -coverprofile' for any Go library
     package.

Instead, leave the 'toolchain' directive at go1.24.13 and rely on the
new dev-environment image (which has system Go 1.25.9 from
dev/image/Dockerfile) to compile binaries with the patched stdlib.
Once branch CI publishes the new image, a follow-up commit will update
the image tag references in .gitpod.yml and the workflow files (same
two-step pattern as #21327).

Co-authored-by: Ona <no-reply@ona.com>
@geropl geropl enabled auto-merge (squash) April 23, 2026 09:31
…go-gha.275

This image was published by the previous run of this PR and contains
Go 1.25.9, which is needed to compile binaries free of CVE-2026-27143.
Switching the workflow and devcontainer references over so subsequent
CI runs use the patched toolchain.

Co-authored-by: Ona <no-reply@ona.com>
@geropl geropl force-pushed the ona/clc-2243-fix-cve-2026-27143-bump-go branch from 68027f5 to 60d9240 Compare April 23, 2026 09:48
@github-actions
Copy link
Copy Markdown
Contributor

⚠️ Hey reviewer! BE CAREFUL ⚠️
Review the code before opening in your Gitpod. .gitpod.yml was changed and it might be harmful.

@geropl geropl merged commit 7b27053 into main Apr 23, 2026
17 checks passed
@geropl geropl deleted the ona/clc-2243-fix-cve-2026-27143-bump-go branch April 23, 2026 11:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants