Skip to content

Commit 41e4acb

Browse files
authored
πŸ€– fix: bump Go to 1.26.9 and golang.org/x/net to v0.60.0 (#222)
Fixes #221 ## Summary Bump the Go toolchain from 1.26.8 to 1.26.9 and `golang.org/x/net` from v0.58.0 to v0.60.0. This clears the 12 called vulnerabilities that make `go tool govulncheck ./...` (the last step of the required `lint` job) fail, and the HIGH findings that fail the Trivy filesystem and image scans. ## Background Since the vulnerability database update after 2026-10-03, every new CI run fails `lint`, `Trivy filesystem scan` and `Trivy image scan`, so no PR can merge (#163 included). Advisories fixed (all were reported as called by coder-k8s code): | Advisory | CVE | Package | Summary | | --- | --- | --- | --- | | GO-2026-6599 | CVE-2026-94448 | stdlib | html/template: context tracking on consecutive template expressions | | GO-2026-6600 | CVE-2026-97030 | stdlib | html/template: `yield` as regexp preceder keyword | | GO-2026-6603 | CVE-2026-78659 | stdlib, x/net | HTTP/2 server memory exhaustion via Trailer headers | | GO-2026-6605 | CVE-2026-56866 | stdlib | HTTP/1 client desync after CONNECT rejection | | GO-2026-6607 | CVE-2026-97031 | stdlib | crypto/tls: malformed ECH outer extension references | | GO-2026-6608 | CVE-2026-94440 | stdlib | net/textproto, mime/multipart: MIME header memory limit bypass | | GO-2026-6609 | CVE-2026-78667 | stdlib | net/http: no limit on parsed Range header size | | GO-2026-6610 | CVE-2026-78660 | stdlib, x/net | HTTP/2 transport accepts malformed framing headers | | GO-2026-6611 | CVE-2026-78669 | stdlib, x/net | HTTP/2 CPU use from repeated initial window changes | | GO-2026-6612 | CVE-2026-78663 | stdlib, x/net | HTTP/2 server double flow-control refund | | GO-2026-6613 | CVE-2026-94439 | stdlib | HTTP/1 server desync after 2xx CONNECT response | | GO-2026-6617 | CVE-2026-97032 | stdlib, x/net | HTTP/2 server crash from HPACK encoder race | ## Implementation - `go.mod`: `go 1.26.9`. CI, CodeQL and release read the toolchain through `setup-go` `go-version-file: go.mod`, so no workflow change is needed. `Dockerfile.goreleaser` copies a prebuilt binary into distroless and pins no Go version. `flake.nix` uses the unpinned nixpkgs `go` and is not used by CI, so I left it and `flake.lock` unchanged. - `go get golang.org/x/net@v0.60.0`, then `go mod tidy && go mod vendor`. Minimal version selection also raised the x/net requirements: `x/crypto` v0.57.0, `x/mod` v0.41.0, `x/sync` v0.23.0, `x/sys` v0.48.0, `x/term` v0.46.0, `x/text` v0.42.0. `vendor/` is regenerated, not hand-edited. - README badge, AGENTS.md and CONTRIBUTING.md now say 1.26.9. ## Validation - `GOFLAGS=-mod=vendor go tool govulncheck ./...` (the exact CI command, govulncheck v1.1.4 built and run with go1.26.9, DB updated 2026-10-08): before, 12 called vulnerabilities on go1.26.8 (the list above). After: `Your code is affected by 0 vulnerabilities`, exit 0. The one remaining module-level entry is GO-2026-5932 (unmaintained `x/crypto/openpgp`, not called, no fix exists). - Trivy v0.74.0 (the CI version), HIGH/CRITICAL, exit code 1 on findings: `fs --skip-dirs vendor` on a `git archive` of the head reports 0 for `go.mod`. A `CGO_ENABLED=0` go1.26.9 build of the binary reports 0 for the `gobinary` target. - `make verify-vendor`, `make build`, `make lint`, `make test`, `make test-integration`, `make docs-check` pass locally. `make vuln` fails on my host only because its PATH `govulncheck` was built with go1.25 ("package requires newer Go version go1.26"); CI does not use that binary. ## Risks Low. This is a patch-level toolchain bump plus patch/minor bumps of `golang.org/x` modules. No coder-k8s code changes. The full Kind E2E in CI covers the runtime paths. --- _Generated with `mux` β€’ Model: `anthropic:claude-opus-5-5` β€’ Thinking: `high`_ <!-- mux-attribution: model=anthropic:claude-opus-5-5 thinking=high --> Signed-off-by: Thomas Kosiewski <tk@coder.com>
1 parent 55e7f34 commit 41e4acb

79 files changed

Lines changed: 3491 additions & 2226 deletions

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

β€ŽAGENTS.mdβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ You are an experienced, pragmatic software engineering AI agent. Do not over-eng
55
`coder-k8s` is a Go-based Kubernetes control-plane project with two app modes: a controller-runtime operator for `CoderControlPlane` (`coder.com/v1alpha1`) and an aggregated API server for `CoderWorkspace`/`CoderTemplate`/`CoderTemplateVersion` (`aggregation.coder.com/v1alpha1`).
66

77
**Tech stack**
8-
- Go `1.26.8` (`go.mod`)
8+
- Go `1.26.9` (`go.mod`)
99
- Kubernetes libraries: `controller-runtime`, `client-go`, `apimachinery`, `apiserver`, `code-generator`
1010
- Vendored dependencies committed under `vendor/`
1111
- Tooling: `make`, `golangci-lint`/`gofumpt`, Bash scripts in `hack/` and `scripts/`, GitHub Actions, GoReleaser, optional Nix dev shell (`flake.nix`)

β€ŽCONTRIBUTING.mdβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ Thank you for your contribution to `coder-k8s`.
77
88
## Development prerequisites
99

10-
- Go 1.26.8 or later (`go.mod` declares Go 1.26.8)
10+
- Go 1.26.9 or later (`go.mod` declares Go 1.26.9)
1111
- A Kubernetes cluster (OrbStack, KIND, or another conformant cluster)
1212
- `kubectl`, configured for your target cluster
1313

β€ŽREADME.mdβ€Ž

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
# coder-k8s
22

33
[![CI](https://github.com/coder/coder-k8s/actions/workflows/ci.yaml/badge.svg)](https://github.com/coder/coder-k8s/actions/workflows/ci.yaml)
4-
[![Go](https://img.shields.io/badge/go-1.26.8%2B-00ADD8?logo=go)](./go.mod)
4+
[![Go](https://img.shields.io/badge/go-1.26.9%2B-00ADD8?logo=go)](./go.mod)
55
[![License](https://img.shields.io/badge/license-Apache%202.0-blue.svg)](./LICENSE)
66

77
Use native Kubernetes APIs to run and manage [Coder](https://coder.com).

β€Žgo.modβ€Ž

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
module github.com/coder/coder-k8s
22

3-
go 1.26.8
3+
go 1.26.9
44

55
require (
66
github.com/coder/coder/v2 v2.35.8
@@ -395,17 +395,17 @@ require (
395395
go.yaml.in/yaml/v2 v2.4.4 // indirect
396396
go.yaml.in/yaml/v3 v3.0.4 // indirect
397397
go.yaml.in/yaml/v4 v4.0.0-rc.3 // indirect
398-
golang.org/x/crypto v0.56.0 // indirect
398+
golang.org/x/crypto v0.57.0 // indirect
399399
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f // indirect
400400
golang.org/x/exp/typeparams v0.0.0-20251023183803-a4bb9ffd2546 // indirect
401-
golang.org/x/mod v0.40.0 // indirect
402-
golang.org/x/net v0.58.0 // indirect
401+
golang.org/x/mod v0.41.0 // indirect
402+
golang.org/x/net v0.60.0 // indirect
403403
golang.org/x/oauth2 v0.36.0 // indirect
404-
golang.org/x/sync v0.22.0 // indirect
405-
golang.org/x/sys v0.47.0 // indirect
404+
golang.org/x/sync v0.23.0 // indirect
405+
golang.org/x/sys v0.48.0 // indirect
406406
golang.org/x/telemetry v0.0.0-20260811182544-a038080d80e5 // indirect
407-
golang.org/x/term v0.45.0 // indirect
408-
golang.org/x/text v0.41.0 // indirect
407+
golang.org/x/term v0.46.0 // indirect
408+
golang.org/x/text v0.42.0 // indirect
409409
golang.org/x/time v0.15.0 // indirect
410410
golang.org/x/tools v0.49.0 // indirect
411411
golang.org/x/vuln v1.1.4 // indirect

β€Žgo.sumβ€Ž

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1007,8 +1007,8 @@ golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5y
10071007
golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw=
10081008
golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc=
10091009
golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4=
1010-
golang.org/x/crypto v0.56.0 h1:GUh5Ii4J5jtcseSMiRqr1jXCNHoxjeV9Fmekc2oLy6Y=
1011-
golang.org/x/crypto v0.56.0/go.mod h1:OMW5y6CY9l38uPLmxU6l6pwcXp1obtLo3e6gT7gQR2I=
1010+
golang.org/x/crypto v0.57.0 h1:3ZVCjf8Ggz7zneR/EHRVx68Ctf+2pmIMP2UFhh9cC6M=
1011+
golang.org/x/crypto v0.57.0/go.mod h1:Fdz0i5U6CoizGwLda9DttjSk6qlZo25zYNtR+ycvuZA=
10121012
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f h1:W3F4c+6OLc6H2lb//N1q4WpJkhzJCK5J6kUi1NTVXfM=
10131013
golang.org/x/exp v0.0.0-20260410095643-746e56fc9e2f/go.mod h1:J1xhfL/vlindoeF/aINzNzt2Bket5bjo9sdOYzOsU80=
10141014
golang.org/x/exp/typeparams v0.0.0-20220428152302-39d4317da171/go.mod h1:AbB0pIl9nAr9wVwH+Z2ZpaocVmF5I4GyWCDIsVjR0bk=
@@ -1024,8 +1024,8 @@ golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91
10241024
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
10251025
golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
10261026
golang.org/x/mod v0.13.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c=
1027-
golang.org/x/mod v0.40.0 h1:hUv+3cXcdRHz08UmSiOob7sadHig73uo5bkXxQ/tvUs=
1028-
golang.org/x/mod v0.40.0/go.mod h1:0/weTWkPWGBikyTWAX3dkjVztMmBA5hM0DH6BElSupE=
1027+
golang.org/x/mod v0.41.0 h1:qJmnOUb4YB+FsEuM3HcWucdZASCPGhsX6uljO6pog0c=
1028+
golang.org/x/mod v0.41.0/go.mod h1:Ek9pY8RKWXwsWvd3rQiHYtMqkjSUV+s1Rj7j4H5Ur6o=
10291029
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
10301030
golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
10311031
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
@@ -1041,8 +1041,8 @@ golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
10411041
golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI=
10421042
golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk=
10431043
golang.org/x/net v0.16.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE=
1044-
golang.org/x/net v0.58.0 h1:ynWG7rqYi4ccpTEuPZ2QGWHktVEM9DMCj9yzDE0Q7To=
1045-
golang.org/x/net v0.58.0/go.mod h1:YwCddHnFlT7eLQqVprV19OnhLGtc5xOKgE0RyqgfWAU=
1044+
golang.org/x/net v0.60.0 h1:79p50tfZlm0J9YfoDsSi639qSXNGVwEzOPLCxM2FsYU=
1045+
golang.org/x/net v0.60.0/go.mod h1:2DA/G1UfVbCpQPeWTmMPGY7Cs2PkBkwu743bVX5PIVg=
10461046
golang.org/x/oauth2 v0.36.0 h1:peZ/1z27fi9hUOFCAZaHyrpWG5lwe0RJEEEeH0ThlIs=
10471047
golang.org/x/oauth2 v0.36.0/go.mod h1:YDBUJMTkDnJS+A4BP4eZBjCqtokkg1hODuPjwiGPO7Q=
10481048
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
@@ -1055,8 +1055,8 @@ golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJ
10551055
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
10561056
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
10571057
golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
1058-
golang.org/x/sync v0.22.0 h1:SZjpbeLmrCk4xhRSZFNZW5gFUeCeFgjekvI/+gfScek=
1059-
golang.org/x/sync v0.22.0/go.mod h1:9xrNwdLfx4jkKbNva9FpL6vEN7evnE43NNNJQ2LF3+0=
1058+
golang.org/x/sync v0.23.0 h1:KameEIfc1IkluZyXWLn39Wd4tURc6GbCiISGiZm2bQk=
1059+
golang.org/x/sync v0.23.0/go.mod h1:sUUOizhqBxiL6pEWpqNLUiaJn1ShEbZ6BBqskPbjZm0=
10601060
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
10611061
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
10621062
golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
@@ -1087,8 +1087,8 @@ golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10871087
golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10881088
golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
10891089
golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
1090-
golang.org/x/sys v0.47.0 h1:o7XGOvZQCADBQQ4Y7VNq2dRWQR7JmOUW8Kxx4ZsNgWs=
1091-
golang.org/x/sys v0.47.0/go.mod h1:4GL1E5IUh+htKOUEOaiffhrAeqysfVGipDYzABqnCmw=
1090+
golang.org/x/sys v0.48.0 h1:bbX/i/6MgT9BVLM9RT1thmxL04yeTAhbEz4SyadbXoo=
1091+
golang.org/x/sys v0.48.0/go.mod h1:hNLxWAXmnKAxqDtdwIYC4bM9oQPEecfsnNMuSxOs3og=
10921092
golang.org/x/telemetry v0.0.0-20260811182544-a038080d80e5 h1:ZUSxONxc981v7AW7QUg+I9WwZzSTTJ019ENBYr5pV/Q=
10931093
golang.org/x/telemetry v0.0.0-20260811182544-a038080d80e5/go.mod h1:LVehoXe41cL5SCVQilsV7Gg6BNG+Js6P9PhSbYTIUkQ=
10941094
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
@@ -1099,8 +1099,8 @@ golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
10991099
golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU=
11001100
golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU=
11011101
golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U=
1102-
golang.org/x/term v0.45.0 h1:NwWyBmoJCbfTHpxrWoZ9C6/VxOf7ic219I8xZZFdrf0=
1103-
golang.org/x/term v0.45.0/go.mod h1:9aqxs0blBcrm/n0L9QW0aRVD+ktan8ssZromtqJC43w=
1102+
golang.org/x/term v0.46.0 h1:3+OXuTbaKDgwk8jTi3aSLHRlmWqHEUDUtxnbFigO4YE=
1103+
golang.org/x/term v0.46.0/go.mod h1:+K02xbkittuwc0Am4abfA3Fc+XRGXkvBXNO88NCXPoc=
11041104
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
11051105
golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk=
11061106
golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
@@ -1112,8 +1112,8 @@ golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
11121112
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
11131113
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
11141114
golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
1115-
golang.org/x/text v0.41.0 h1:vz/seA0lnX87Othu2f/0L24RcgrXD9/YFTSuGjj3rH8=
1116-
golang.org/x/text v0.41.0/go.mod h1:jvf1O8ajNzZqhSrQBPbutR/EB83Cc0CFrezNQIwbb5M=
1115+
golang.org/x/text v0.42.0 h1:JbOZXgfeCPU9gacVtYliJqOhD+zhrEqK4LfdpmlUZqI=
1116+
golang.org/x/text v0.42.0/go.mod h1:ojzP1Z+2QtioaF8DTtO8K5q7JWVVYwZKenzujK0Zd0E=
11171117
golang.org/x/time v0.15.0 h1:bbrp8t3bGUeFOx08pvsMYRTCVSMk89u4tKbNOZbp88U=
11181118
golang.org/x/time v0.15.0/go.mod h1:Y4YMaQmXwGQZoFaVFk4YpCt4FLQMYKZe9oeV/f4MSno=
11191119
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=

β€Žvendor/golang.org/x/mod/modfile/rule.goβ€Ž

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žvendor/golang.org/x/mod/modfile/work.goβ€Ž

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žvendor/golang.org/x/net/html/escape.goβ€Ž

Lines changed: 1 addition & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žvendor/golang.org/x/net/http2/ascii.goβ€Ž

Lines changed: 13 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

β€Žvendor/golang.org/x/net/http2/databuffer.goβ€Ž

Lines changed: 1 addition & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
Β (0)