Skip to content

fix: bump Go toolchain to 1.26.6 for 6 stdlib CVEs - #361

Merged
osanderson merged 1 commit into
mainfrom
chore/go-1.26.6
Sep 19, 2026
Merged

osanderson merged 1 commit into
mainfrom
chore/go-1.26.6

Conversation

@osanderson

Copy link
Copy Markdown
Collaborator

Summary

A clean full-library security scan (govulncheck, golangci-lint/gosec, go vet) found one real finding: govulncheck ./... flags 6 vulnerabilities in Go 1.26.5's standard library that this module's own code actually reaches (not just theoretically importable):

  • crypto/tls (GO-2026-6090) — post-handshake message limits, reached via every outbound/inbound TLS connection (fapihttp, backchannelhttp, fapitest).
  • net/http (GO-2026-6089) — missing ReadHeaderTimeout on the unencrypted-HTTP/2-upgrade path, reached via cmd/conformance-as/cmd/conformance-federation-trust-anchor/cmd/conformance-client's own listeners.
  • net/http (GO-2026-5026, via golang.org/x/net/idna) — Punycode label rejection, reached via fapitest/cmd/conformance-client.
  • net/url (GO-2026-6218) — quadratic resolvePath, reached via fapihttp.Client.resolveRedirect and general HTTP client URL parsing.
  • html/template (GO-2026-6091) — JS regexp context tracking, reached via cmd/conformance-as's own consent-approval UI template.
  • encoding/asn1 (GO-2026-5972) — recursion depth limit, reached via internal/jose's ECDSA signature parsing (asn1.Unmarshal).

All six are fixed in Go 1.26.6. govulncheck ./... finds zero vulnerabilities once the toolchain is bumped — verified by actually downloading and building/testing under 1.26.6, not just reading the advisory.

No source changes: go.mod's go directive is what CI's own setup-go step (go-version-file: go.mod) reads, so bumping it is what actually closes the gap for CI too — this hasn't shown up as a CI failure yet only because these CVEs were disclosed after the last PR's govulncheck run; the next push would have caught it regardless. The two Dockerfiles (conformance/server, cmd/conformance-federation-trust-anchor) already use the floating golang:1.26 tag (no patch pin), so they pick up 1.26.6 automatically on their next pull/build.

Also updates README.md's "Requires Go 1.26.5+" line to match.

Test plan

  • gofmt -l . clean
  • go build ./... under Go 1.26.6
  • go vet ./... under Go 1.26.6
  • go test -race ./... under Go 1.26.6 — all packages pass
  • golangci-lint run ./... under Go 1.26.6 — 0 issues
  • govulncheck ./... under Go 1.26.6 — 0 vulnerabilities (confirmed both before, showing all 6, and after, showing zero)

🤖 Generated with Claude Code

https://claude.ai/code/session_01JCpqoxEg7XUkkGg312zXyS

govulncheck ./... flags 6 vulnerabilities in Go 1.26.5's standard
library that this module's own code actually reaches: crypto/tls
(GO-2026-6090, post-handshake message limits), net/http
(GO-2026-6089, ReadHeaderTimeout on unencrypted HTTP/2 upgrade;
GO-2026-5026, idna Punycode label rejection), net/url (GO-2026-6218,
quadratic resolvePath), html/template (GO-2026-6091, JS regexp
context tracking — cmd/conformance-as's own consent-approval UI), and
encoding/asn1 (GO-2026-5972, recursion depth — internal/jose's ECDSA
signature parsing). All six are fixed in Go 1.26.6; govulncheck finds
zero vulnerabilities once the toolchain is bumped.

No source changes — go.mod's go directive is the version CI's own
setup-go step reads, so this is what actually closes the gap. The two
Dockerfiles (conformance/server, cmd/conformance-federation-trust-anchor)
use the floating `golang:1.26` tag already, so they pick up 1.26.6 on
their next pull/build without a Dockerfile change.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@codecov

codecov Bot commented Sep 19, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.

📢 Thoughts on this report? Let us know!

@sonarqubecloud

Copy link
Copy Markdown

@osanderson
osanderson merged commit f2976c6 into main Sep 19, 2026
9 checks passed
@osanderson
osanderson deleted the chore/go-1.26.6 branch September 19, 2026 08:07
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant