Skip to content

uplift: go-ntlmssp v0.1.1 for CVE-2026-32952 (#7) - #11

Merged
aspratt merged 4 commits into
masterfrom
uplift/7-go-ntlmssp
Oct 20, 2026
Merged

aspratt merged 4 commits into
masterfrom
uplift/7-go-ntlmssp

Conversation

@aspratt

@aspratt aspratt commented Oct 20, 2026 •

Copy link
Copy Markdown
Owner

Closes #7 · Upstream: Versent#1524

Classification

type: uplift · nature: security (public CVE) · severity: S2 · provider: pingntlm (also adfs2)

Change

f282e3e regression test (panics on the old pin: slice bounds out of range in varField.ReadFrom); d6ffd0b bump to v0.1.1 (published 2026-04-23). Worker: Vogt WI-1997 (Haiku).

Decisions (maintainer, 2026-10-20)

  • Basic fallback stays off (v0.1.1 default; no AllowBasicAuth). Release-note it.
  • Before merge: add a mock NTLMv2 success-path test, including DOMAIN\user. Live ADFS check is a follow-up record.

Evidence

govulncheck: GO-2026-5543 gone (11 → 10 findings; the rest are x/net and jose2go, separate records). pingntlm coverage 60.3% → 72.5%. unit/e2e pass; lint 0; cross-builds ok.

The success-path test has landed: TestAuthenticateNTLMHandshake (NTLMv2, DOMAIN\user, NTLM preferred over Basic).

Known limitation (not a change): a Kerberos-only Negotiate challenge returns the original 401, as on the old pin. The live ADFS check is tracked in #27.

@aspratt

aspratt commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

e2e and e2e-aws PASS at 85fa93a (2026-10-20), with 2 known-bug skips tracked in #13 and #14. Re-review APPROVE. Marked ready for approval in #12.

@aspratt

aspratt commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

Security second review (Sonnet, different model from the author): APPROVE. The fix is complete (uint64 bounds check in varfield.go), and the regression test fails on the old pin and passes on the new one. Release note: an IdP offering only Basic now fails, because Basic is no longer sent by default. Pre-existing pingntlm issues (hard-coded InsecureSkipVerify, Basic re-auth on redirect) are raised as a separate record.

Panics on go-ntlmssp v0.0.0-20211209 (slice bounds out of range in
varField.ReadFrom, CVE-2026-32952 / GO-2026-5543). Record #7.
Fixes the panic above. v0.1.1 also stops Basic fallback unless
AllowBasicAuth is set (kept off, by decision on #7), derives the NTLMv2
domain from the username, and no longer completes Negotiate-only
challenges. go mod tidy drops the indirect x/crypto v0.31.0.
Mock IdP offers Basic and NTLM on its 401; asserts the Type 1 / Type 3
sequence, user and domain from DOMAIN\user, no Basic credentials sent,
and the returned SAML assertion. Proves go-ntlmssp v0.1.1 on the real path.
v0.1.1 sends user@domain whole in the user field with an empty domain;
share the handshake harness between the DOMAIN\user and UPN cases.
@aspratt
aspratt force-pushed the uplift/7-go-ntlmssp branch from 85fa93a to 2c07f04 Compare October 20, 2026 05:44
@aspratt

aspratt commented Oct 20, 2026

Copy link
Copy Markdown
Owner Author

Rebased onto master after #10 merged, now at 2c07f04. Only go.mod/go.sum conflicted: go-ntlmssp stays at v0.1.1 and playwright-go at #10's version. go mod verify passes and go test ./... passes. Will merge once CI is green.

@aspratt
aspratt merged commit a0f5fe1 into master Oct 20, 2026
14 of 17 checks passed
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: go-ntlmssp CVE-2026-32952 (ADFS/NTLM path)

1 participant