Skip to content

uplift: x/net, jose2go, go-ntlmssp vulnerability fixes (#22) - #28

Open
aspratt wants to merge 1 commit into
masterfrom
fix/22-deps-vulns
Open

aspratt wants to merge 1 commit into
masterfrom
fix/22-deps-vulns

Conversation

@aspratt

@aspratt aspratt commented Oct 20, 2026

Copy link
Copy Markdown
Owner

Closes #22 · Upstream: Versent#1472 (x/net), Versent#1490 (x/crypto), Versent#1488 (jose2go)

Classification

type: uplift · nature: security · severity: S2 · provider: core

Change

Dependency bumps only, from go get plus go mod tidy. There are no replace directives and go mod verify is clean.

Module From To Why
golang.org/x/net v0.30.0 v0.60.0 direct; clears 14 advisories
github.com/dvsekhvalnov/jose2go v1.6.0 v1.7.0 indirect (keyring); deflate-bomb limit
github.com/Azure/go-ntlmssp v0.0.0-20211209120228-48547f28849e v0.1.1 direct; see the overlap with #11 below
golang.org/x/crypto v0.31.0 v0.57.0 transitive; no longer listed in go.mod after tidy
golang.org/x/sys / x/term / x/text v0.28.0 / v0.27.0 / v0.21.0 v0.48.0 / v0.46.0 / v0.42.0 transitive

Vulnerabilities cleared (govulncheck v1.9.0)

  • x/net: GO-2024-3333, GO-2025-3595, GO-2026-4440, GO-2026-4441, GO-2026-5025, GO-2026-5027, GO-2026-5028, GO-2026-5029, GO-2026-5030, GO-2026-6603, GO-2026-6610, GO-2026-6611, GO-2026-6612, GO-2026-6617
  • jose2go: GO-2025-4123
  • go-ntlmssp: GO-2026-5543 (also fixed by uplift: go-ntlmssp v0.1.1 for CVE-2026-32952 (#7) #11)

Before: 20 reachable findings (17 in modules, 9 in the standard library, with 5 advisories counted in both). After: 0 reachable. Three findings remain that govulncheck says the code never calls: go-jose/v3 v3.0.4 (GO-2026-4945, fixed in v3.0.5) and two aws-sdk-go advisories with no fix (GO-2022-0635, GO-2022-0646). They are out of scope for this record.

Go standard-library findings (9)

GO-2026-6603, -6605, -6607, -6608, -6610, -6611, -6612, -6613 and -6617 are in net/http, net/http/internal/http2, net/textproto and crypto/tls, and are fixed in Go 1.27.2. No module bump clears them; only the toolchain does. go.mod on master already requires go 1.27.3, so any build of this branch uses a patched toolchain, and govulncheck run under go1.27.3 reports none of them. Anyone building with an older local toolchain and GOTOOLCHAIN=local will be refused by the go line rather than silently getting a vulnerable build.

Release notes

  • Minimum Go version: building saml2aws now needs Go 1.27.3, as go.mod already says on master. This PR does not change the floor. x/net v0.60.0 on its own needs only Go 1.26, so this PR adds no further constraint. The operator has accepted a floor of 1.26 or higher.
  • Security dependency uplift: x/net, x/crypto, jose2go and go-ntlmssp.

Overlap with #11 (go-ntlmssp v0.1.1, record #7)

Both PRs bump github.com/Azure/go-ntlmssp to v0.1.1. The target version is the same, so the go.mod line will be identical, but go.sum will conflict textually whichever merges second. Suggested order: merge #11 first, since it carries the NTLM regression and handshake tests and the basic-fallback release note. Then rebase this branch and run go mod tidy, which leaves a diff limited to x/net, jose2go and the x/ packages. The go-ntlmssp behaviour change (basic fallback off by default) is documented and tested in #11, not here.

Shibboleth Sprintf fix

pkg/provider/shibboleth/shibboleth.go called fmt.Sprintf(shibbolethHost + postAction) with a non-constant format string. Under a go line of 1.24 or later, go vet (and so go test) rejects it, and it would also mangle any % in the post-action URL. It is now plain concatenation. That fix is already on master (25923f8, "build: uplift Go to 1.27.3"), so this PR contains no source changes. It is listed here because the uplift depends on it: without it, the package fails to build under test.

Evidence (toolchain go1.27.3)

  • govulncheck ./...: 0 reachable vulnerabilities, standard library included.
  • go mod tidy; go mod verify: all modules verified; no replace directives.
  • go test ./...: passes, except pkg/provider/browser (TestValidate, TestInvalidBrowserType, TestInvalidBrowserExecutablePath, TestAutoFill), which fails the same way on master. The Playwright 1.47.2 driver download returns 404; this is unrelated to this change.
  • golangci-lint v2.14.0 run ./...: 0 issues.
  • GOOS=windows GOARCH=amd64, GOOS=darwin GOARCH=arm64 and GOOS=linux GOARCH=arm64 builds of ./cmd/saml2aws: ok.
  • Not run by the worker: make -C test/e2e unit, make -C test/e2e e2e, e2e-aws (oversight runs these).

Regression test

None added. This is a pure version uplift. The specific risk (jose2go's deflate limit, x/net's HTTP/2 and HTML parsing) sits inside the libraries, and their own fixes are tested upstream. The existing provider tests cover our HTML parsing through x/net, and they pass. The e2e harness covers the keyring/jose2go path.

@aspratt

aspratt commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

e2e PASS and e2e-aws PASS at 9b63e95 (2026-10-20), with 2 known-bug skips tracked in #13 and #14 (both fixed on their own branches). Review is in progress.

@aspratt

aspratt commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

Review APPROVE at 9b63e95. Marked ready for approval in #12. Suggested order: land #11 first; #28 carries the same go-ntlmssp bump.

@aspratt

aspratt commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

Security second review (Sonnet): CHANGES (Low). Land #11 first, then rebase #28; they touch the same go.mod/go.sum lines. Run govulncheck on the rebased head and cite the jose2go advisory IDs in the body. If v1.7.0 isn't clean, bump further.

Clears all 17 govulncheck module findings. x/net v0.60.0 raises the
go.mod go line to 1.26. Nine standard-library findings remain and need
the Go 1.27.2 toolchain.
@aspratt

aspratt commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

Addendum — rebased onto master after #11

Rebased onto fork/master at a0f5fe1 (Merge #11: go-ntlmssp v0.1.1, #7).
go.mod and go.sum conflicted; both were resolved with
GOTOOLCHAIN=auto go mod tidy after go get of the three direct targets, so
the newer version of every entry wins. The go-ntlmssp line is now identical to
master's (v0.1.1, from #11), and the diff against master is only x/net,
jose2go and the x/ packages:

Module master this branch
golang.org/x/net v0.30.0 v0.60.0
github.com/dvsekhvalnov/jose2go v1.6.0 v1.7.0
golang.org/x/sys v0.28.0 v0.48.0
golang.org/x/term v0.27.0 v0.46.0
golang.org/x/text v0.21.0 v0.42.0
github.com/Azure/go-ntlmssp v0.1.1 v0.1.1 (unchanged, from #11)

go.mod still says go 1.27.3, so the rebase adds no new toolchain floor;
x/net v0.60.0 on its own needs only Go 1.26.

Advisories cleared, measured on the rebased branch

Baseline was the published fork/master tree built with the same toolchain
(go1.27.3, GOTOOLCHAIN=auto), scanned with
go run golang.org/x/vuln/cmd/govulncheck@latest ./....

Reachable before: 10 (9 in x/net, 1 in jose2go). Reachable after: 0.

Cleared because the code called them:

  • golang.org/x/net/html: GO-2024-3333, GO-2025-3595, GO-2026-4440,
    GO-2026-4441, GO-2026-5025, GO-2026-5027, GO-2026-5028, GO-2026-5029,
    GO-2026-5030
  • github.com/dvsekhvalnov/jose2go: GO-2025-4123 (JWE high-compression-ratio
    denial of service — the deflate-bomb fix)

Also cleared, though govulncheck reported them as not called from our code:
x/net GO-2025-3503, GO-2026-4918, GO-2026-5026, GO-2026-5942, GO-2026-6603,
GO-2026-6610, GO-2026-6611, GO-2026-6612, GO-2026-6617; x/text GO-2026-5970,
GO-2026-6629; x/sys GO-2026-5024.

Still present, unreachable and with no upstream fix: GO-2022-0635 and
GO-2022-0646 in github.com/aws/aws-sdk-go v1.55.6 (S3 Crypto SDK, unused
here). Out of scope for #22.

Note on the earlier figures in this body: those were measured on go1.27.1 and
before the Go 1.27.3 uplift landed on master, which is why the standard-library
findings appeared then and do not now. The module figures above are the
post-rebase measurement.

Evidence on the rebased commit

  • go mod verify: all modules verified; no replace directives.
  • go test ./...: passes, pkg/provider/browser included.
  • go vet ./...: clean.
  • govulncheck ./...: 0 reachable vulnerabilities.
  • Cross-builds of ./cmd/saml2aws: windows/amd64, darwin/arm64, linux/arm64 all ok.
  • Not run by the worker: make -C test/e2e unit, make -C test/e2e e2e, e2e-aws.

One thing for oversight

The commit message still ends with "x/net v0.60.0 raises the go.mod go line to
1.26 ... Nine standard-library findings remain and need the Go 1.27.2
toolchain." Master now pins go 1.27.3, so the first half of that sentence is
no longer true. Worth rewording on push (or squash); the code is unaffected.

@aspratt

aspratt commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

e2e at db5e363 (rebased onto master after #11): the offline lane passed, including TestBrowserLoginWritesCredentials (list-roles skipped as expected), and the e2e-aws lane (sca-dev) passed 6 of 6. The different-model security re-review (Sonnet) is in progress.

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.

uplift: x/net, x/crypto, jose2go with known vulnerabilities (govulncheck)

1 participant