·
2 commits
to main
since this release
Security
- GHSA-rqf5-2wxv-rjf4 - Digest challenge without a usable nonce downgrades to Basic and sends the password in cleartext
- GHSA-jmqq-x5g9-9p2w - Replay to a different host sends the original host's request and credentials to the new host
- GHSA-vvp4-63h8-v5pm - Connection pool key omits the authenticated principal, so an NTLM or Negotiate connection is reused across identities
- GHSA-f9m8-cv68-674w - Cookie Domain attribute is not checked against the public suffix list, so a cookie can be set for co.uk
- GHSA-qhv6-3pmh-95q4 - Digest mutual authentication is switched off by a peer offering qop=auth-int
Behaviour changes
- A Digest challenge carrying no nonce now selects Digest rather than Basic. Such an exchange previously appeared to work because the client answered in Basic, and it will now fail. It was sending the password in the clear.
- A server offering
qop="auth-int"and nothing else now falls back to the qop-less digest of RFC 2069, which has weaker replay protection. The client logs a warning when this happens. Realm.Builder.matchParamkeeps a backslash that precedes any character other than a quote or another backslash. This repairs a 3.0.12 regression that corruptedDOMAIN\UserstoDOMAINUsersand broke Digest against those realms.- NTLM and Negotiate connections are pooled per principal, so an application authenticating as several identities against one host holds more connections than before.
- A cookie whose
Domainnames a public suffix is refused. A host whose own name is a public suffix, such as the short names Docker Compose and Kubernetes hand out, can still set a cookie for itself.
Known issues
- Over HTTP/2, an intercepted 401 or a redirect completes the caller's future exceptionally even though the exchange succeeds on the wire. Use HTTP/1.1 where authentication or redirects are involved.