CVE-2024-45337
Uso improprio di connection.serverAuthenticate può causare bypass dell'autorizzazione in golang.org/x/crypto
- Pubblicato
- 11 dic 2024
- Aggiornato
- 18 feb 2025
- Assegnazione CNA
- Go
- Evidenza osservata
- 8 ago 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:NBasso · prossimi 30 giorni
- Percentile
- 87,5%
- Data del modello
- 21 set 2026
L'EPSS è una stima statistica, non una certezza o una misura di impatto. Combinalo con CVSS, stato KEV, esposizione e ambiente.
Riepilogo
Applicazioni e librerie che utilizzano in modo improprio `connection.serverAuthenticate` (tramite il campo callback `ServerConfig.PublicKeyCallback`) possono essere suscettibili a un bypass dell'autorizzazione. La documentazione per `ServerConfig.PublicKeyCallback` afferma che "Una chiamata a questa funzione non garantisce che la chiave offerta sia effettivamente utilizzata per l'autenticazione." Nello specifico, il protocollo SSH consente ai client di chiedere se una chiave pubblica è accettabile prima di dimostrare il controllo della corrispondente chiave privata. `PublicKeyCallback` può essere chiamata con più chiavi, e l'ordine in cui le chiavi sono state fornite non può essere utilizzato per dedurre con quale chiave il client si è autenticato con successo, se del caso. Alcune applicazioni, che memorizzano la chiave o le chiavi passate a `PublicKeyCallback` (o informazioni derivate) e prendono decisioni rilevanti per la sicurezza basate su di esse una volta stabilita la connessione, possono fare assunzioni errate. Ad esempio, un attaccante può inviare le chiavi pubbliche A e B, e poi autenticarsi con A. `PublicKeyCallback` verrebbe chiamata solo due volte, prima con A e poi con B. Un'applicazione vulnerabile potrebbe quindi prendere decisioni di autorizzazione basate sulla chiave B per la quale l'attaccante non controlla effettivamente la chiave privata. Poiché questa API è ampiamente utilizzata in modo improprio, come mitigazione parziale golang.org/x/[email protected] impone la proprietà che, quando l'autenticazione tramite chiave pubblica avviene con successo, l'ultima chiave passata a `ServerConfig.PublicKeyCallback` sarà la chiave utilizzata per autenticare la connessione. `PublicKeyCallback` verrà ora chiamata più volte con la stessa chiave, se necessario. Si noti che il client potrebbe comunque non controllare l'ultima chiave passata a `PublicKeyCallback` se la connessione viene poi autenticata con un metodo diverso, come `PasswordCallback`, `KeyboardInteractiveCallback` o `NoClientAuth`. Gli utenti dovrebbero utilizzare il campo `Extensions` del valore di ritorno `Permissions` dei vari callback di autenticazione per registrare i dati associati al tentativo di autenticazione invece di fare riferimento a stato esterno. Una volta stabilita la connessione, lo stato corrispondente al tentativo di autenticazione riuscito può essere recuperato tramite il campo `ServerConn.Permissions`. Si noti che alcune librerie di terze parti utilizzano in modo improprio il tipo `Permissions` condividendolo tra tentativi di autenticazione; gli utenti di librerie di terze parti dovrebbero fare riferimento ai progetti pertinenti per indicazioni.
Utilizzo responsabile
Utilizza le informazioni sulla vulnerabilità solo sui sistemi che possiedi o che sei autorizzato a testare. Kitploit si collega ai metadati della ricerca pubblica e non memorizza codici exploit o payload dannosi.