Forwarding here from golang-annou...@googlegroups.com /
https://groups.google.com/d/msgid/golang-announce/5mK6WBRsRxukMSqsImZ6mw%40geopod-ismtpd-0

(I'm not affiliated with the Golang project.)

----- Forwarded message from annou...@golang.org -----

> Date: Wed, 11 Dec 2024 17:53:06 +0000 (UTC)
> From: annou...@golang.org
> To: golang-n...@googlegroups.com
> Subject: [security] Vulnerability in golang.org/x/crypto
> 
> Hello gophers,
> 
> We have tagged version v0.31.0 of golang.org/x/crypto in order to address a 
> security issue.
> 
> x/crypto/ssh: misuse of ServerConfig.PublicKeyCallback may cause 
> authorization bypass
> 
> Applications and libraries which misuse the ServerConfig.PublicKeyCallback 
> callback may be susceptible to an authorization bypass.
> 
> The documentation for ServerConfig.PublicKeyCallback says that "A call to 
> this function does not guarantee that the key offered is in fact used to 
> authenticate." Specifically, the SSH protocol allows clients to inquire about 
> whether a public key is acceptable before proving control of the 
> corresponding private key. PublicKeyCallback may be called with multiple 
> keys, and the order in which the keys were provided cannot be used to infer 
> which key the client successfully authenticated with, if any. Some 
> applications, which store the key(s) passed to PublicKeyCallback (or derived 
> information) and make security relevant determinations based on it once the 
> connection is established, may make incorrect assumptions.
> 
> For example, an attacker may send public keys A and B, and then authenticate 
> with A. PublicKeyCallback would be called only twice, first with A and then 
> with B. A vulnerable application may then make authorization decisions based 
> on key B for which the attacker does not actually control the private key.
> 
> Since this API is widely misused, as a partial mitigation 
> golang.org/x/crypto@v0.31.0 enforces the property that, when successfully 
> authenticating via public key, the last key passed to 
> ServerConfig.PublicKeyCallback will be the key used to authenticate the 
> connection. PublicKeyCallback will now be called multiple times with the same 
> key, if necessary. Note that the client may still not control the last key 
> passed to PublicKeyCallback if the connection is then authenticated with a 
> different method, such as PasswordCallback, KeyboardInteractiveCallback, or 
> NoClientAuth.
> 
> Users should be using the Extensions field of the Permissions return value 
> from the various authentication callbacks to record data associated with the 
> authentication attempt instead of referencing external state. Once the 
> connection is established the state corresponding to the successful 
> authentication attempt can be retrieved via the ServerConn.Permissions field. 
> Note that some third-party libraries misuse the Permissions type by sharing 
> it across authentication attempts; users of third-party libraries should 
> refer to the relevant projects for guidance.
> 
> Thanks to Damien Tournoud, Patrick Dawkins, Vince Parker, and Jules Duvivier 
> from the Platform.sh / Upsun engineering team for reporting this issue.
> 
> This is CVE-2024-45337 and Go issue https://go.dev/issue/70779.
> 
> Cheers,
> Go Security team
> 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-announce" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-announce+unsubscr...@googlegroups.com.
> To view this discussion visit 
> https://groups.google.com/d/msgid/golang-announce/5mK6WBRsRxukMSqsImZ6mw%40geopod-ismtpd-0.

----- End forwarded message -----

Reply via email to