Skip to content

fix(deps): move golang.org/x/net to v0.60.0 and Go to 1.27.2 for GO-2026-6617 and the stdlib advisories - #2651

Merged
lusoris merged 1 commit into
masterfrom
fix/go-x-net-0.60.0
Oct 9, 2026
Merged

lusoris merged 1 commit into
masterfrom
fix/go-x-net-0.60.0

Conversation

@lusoris

@lusoris lusoris commented Oct 8, 2026 •

Copy link
Copy Markdown
Contributor

Summary

golang.org/x/net moves from v0.59.0 to v0.60.0 and the Go toolchain from 1.27.1 to 1.27.2. GO-2026-6617 (an HTTP/2 server crash from an HPACK encoder race) was published on 2026-10-09. govulncheck ./... found it reachable from cmd/vmafx-controller, pkg/tune/executor, pkg/libvmaf and tools/obssmoke, so the pre-push security hook refused every push of the tree.

The same database release published twelve standard-library advisories (GO-2026-6599, 6600, 6603, 6604, 6605, 6607, 6608, 6609, 6610, 6611, 6612 and 6613) in html/template, net/http and its bundled HTTP/2, crypto/tls, os and mime/multipart. The standard library also carries GO-2026-6617 in its own HTTP/2 copy. With x/net alone, the CI go vet + go test job still failed at the govulncheck gate on Go 1.27.1 (run 37857903681). Go 1.27.2 fixes all thirteen.

go.mod declares go 1.27.2. RELEASE_GO_BASE and DEV_GO_BASE in build-config.env move to the golang:1.27-trixie digest that carries Go 1.27.2 (sha256:2f84bc93…); scripts/ci/check-base-image-single-source.sh --write rewrote the Dockerfile copies, and the observability compose file carries the same digest. Two docs pages that named Go 1.27.1 now name 1.27.2.

Type

  • feat — new feature
  • fix — bug fix
  • perf — performance improvement
  • refactor — no behavior change
  • docs — documentation only
  • test — test-only
  • build / ci — tooling / infra
  • port — cherry-pick from upstream Netflix/vmaf
  • sycl / cuda / simd — backend-specific

Checklist

  • Commits follow Conventional Commits (the commit-msg hook enforces this).
  • Every commit is signed off (git commit -s; fix a branch with git rebase --signoff origin/master). See DCO sign-off.
  • make format && make lint is green locally. Not run in full: go vet ./..., python3 scripts/ci/govulncheck-gate.py, scripts/ci/check-base-image-single-source.sh and the commit and push hooks ran on the changed files.
  • Unit tests pass: python3 scripts/ci/run_meson_test.py -- -C build. Not applicable: no C change.
  • If I touched any SIMD/GPU code path, I ran /cross-backend-diff and the worst ULP is ≤ 2. Not applicable.
  • If I touched a feature extractor with SIMD/GPU twins, I either updated every twin or listed the gap under "Known follow-ups" below. Not applicable.
  • If I added a new .c / .cpp / .cu / .h / .hpp, it has the appropriate license header (see CONTRIBUTING.md). Not applicable.
  • If this is a breaking change, the commit message uses ! or BREAKING CHANGE: and the migration path is documented below. Not a breaking change.
  • If this PR adds an ADR, the ADR row lives in docs/adr/_index_fragments/<NNNN-slug>.md and nothing else is touched for the index. No ADR.

Bug-status hygiene (ADR-0165)

  • docs/state.md: T-GO-X-NET-GO-2026-6617-2026-10-09 added under Recently closed.

Netflix golden-data gate (ADR-0024)

  • I did not modify any assertAlmostEqual(...) score in the Netflix golden Python tests, except by porting Netflix's own updated assertion verbatim from upstream (value and places as upstream has them, measured against the fork's CPU build first; ADR-1828).
  • If I believe a golden value must change, I have explained why below AND pinged @lusoris for a CODEOWNERS exception. Not applicable.

Deep-dive deliverables (ADR-0108)

  • Research digest — no digest needed: trivial dependency and toolchain bump.
  • Decision matrix — no alternatives: only-one-way fix (the advisories' fixed versions).
  • AGENTS.md invariant note — no rebase-sensitive invariants.
  • Reproducer / smoke-test command — pasted below under "Reproducer".
  • CHANGELOG fragment — changelog.d/security/go-x-net-0.60.0.md.
  • Rebase note — no rebase impact: dependency, toolchain and base-image versions only.

Reproducer

go version                              # go1.27.2 (go.mod selects it; GOTOOLCHAIN=auto)
python3 scripts/ci/govulncheck-gate.py  # before: 13 reachable advisories on Go 1.27.1; after: OK, exit 0
go vet ./...
bash scripts/ci/check-base-image-single-source.sh
skopeo inspect --config docker://golang@sha256:2f84bc93ecfb2689f782b153fdcd368b5a7ab96c1386c65cdaccf35e726d6a44 | jq -r '.config.Env[]' | grep GOLANG_VERSION  # 1.27.2

@github-actions github-actions Bot added the type:bug Something isn't working label Oct 8, 2026
@lusoris lusoris changed the title fix(deps): move golang.org/x/net to v0.60.0 for GO-2026-6617 fix(deps): move golang.org/x/net to v0.60.0 and Go to 1.27.2 for GO-2026-6617 and the stdlib advisories Oct 9, 2026
…026-6617 and the stdlib advisories (#2651)

* fix(deps): move golang.org/x/net to v0.60.0 for GO-2026-6617

The Go vulnerability database published GO-2026-6617 (HTTP/2 server crash from an HPACK encoder race, fixed in v0.60.0). govulncheck found it reachable from the controller, the tune executor, pkg/libvmaf and tools/obssmoke, so the pre-push security hook refused every push. go vet ./... and govulncheck ./... pass after the bump.

* fix(deps): move the Go toolchain to 1.27.2 for the standard-library advisories

The vulnerability database release that published GO-2026-6617 also published
twelve standard-library advisories (GO-2026-6599/6600/6603/6604/6605/6607/6608/
6609/6610/6611/6612/6613), and the standard library carries GO-2026-6617 in its
own HTTP/2 copy. With x/net v0.60.0 alone the CI go vet + go test job still
failed at the govulncheck gate on Go 1.27.1, and so did the local pre-push
security hook. Go 1.27.2 fixes all thirteen.

go.mod declares go 1.27.2. RELEASE_GO_BASE and DEV_GO_BASE move to the
golang:1.27-trixie digest that carries Go 1.27.2, and the Dockerfile and
compose copies are rewritten by check-base-image-single-source.sh --write.
The state row no longer claims govulncheck passed on 1.27.1.

* build(go): pin gosec to a commit built with x/tools v0.50.0 so it reads Go 1.27.2 export data

Go 1.27.2 writes export data version 5. gosec v2.29.0, the newest
release, builds with x/tools v0.49.0, which reads at most version 4, so
under Go 1.27.2 it reported "could not import" for every package and
checked nothing. Commit 9e8e5d91f2f3 of gosec's main branch builds with
x/tools v0.50.0; under Go 1.27.2 it type-checks the whole tree and reports
the same five findings v2.29.0 reports on master under Go 1.27.1.

Signed-off-by: Lusoris <lusoris@proton.me>
@lusoris
lusoris force-pushed the fix/go-x-net-0.60.0 branch from e2dcd3b to c5ed22b Compare October 9, 2026 02:11
@lusoris
lusoris merged commit c5ed22b into master Oct 9, 2026
134 of 153 checks passed
@lusoris
lusoris deleted the fix/go-x-net-0.60.0 branch October 9, 2026 02:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

type:bug Something isn't working

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant