CVE-2024-5535
SSL_select_next_proto buffer overread
- Pubblicato
- 27 giu 2024
- Aggiornato
- 12 mag 2026
- Assegnazione CNA
- openssl
- Evidenza osservata
- 5 ago 2026
CVSS primario
nvd · CVSS 3.1
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:HBasso · prossimi 30 giorni
- Percentile
- 92,6%
- 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
Riepilogo del problema: chiamare la funzione API OpenSSL SSL_select_next_proto con un buffer vuoto di protocolli client supportati può causare un crash o l'invio di contenuti di memoria al peer. Riepilogo dell'impatto: un buffer overread può avere una serie di potenziali conseguenze come un comportamento imprevisto dell'applicazione o un crash. In particolare, questo problema potrebbe comportare l'invio al peer di fino a 255 byte di dati privati arbitrari dalla memoria, con conseguente perdita di riservatezza. Tuttavia, solo le applicazioni che chiamano direttamente la funzione SSL_select_next_proto con una lista di lunghezza 0 di protocolli client supportati sono interessate da questo problema. Questo normalmente non sarebbe mai uno scenario valido e in genere non è sotto il controllo dell'attaccante, ma può verificarsi per errore in caso di errore di configurazione o di programmazione nell'applicazione chiamante. La funzione API OpenSSL SSL_select_next_proto è tipicamente utilizzata dalle applicazioni TLS che supportano ALPN (Application Layer Protocol Negotiation) o NPN (Next Protocol Negotiation). NPN è più vecchio, non è mai stato standardizzato ed è deprecato a favore di ALPN. Riteniamo che ALPN sia significativamente più diffuso di NPN. La funzione SSL_select_next_proto accetta una lista di protocolli dal server e una lista di protocolli dal client e restituisce il primo protocollo che appare nella lista del server e che appare anche nella lista del client. In caso di nessuna sovrapposizione tra le due liste, restituisce il primo elemento della lista del client. In entrambi i casi, segnala se è stata trovata una sovrapposizione tra le due liste. Nel caso in cui SSL_select_next_proto venga chiamata con una lista client di lunghezza zero, non riesce a rilevare questa condizione e restituisce la memoria immediatamente successiva al puntatore della lista client (e segnala che non c'era sovrapposizione tra le liste). Questa funzione viene tipicamente chiamata da un callback applicativo lato server per ALPN o da un callback applicativo lato client per NPN. Nel caso di ALPN, la lista di protocolli fornita dal client è garantita da libssl a non essere mai di lunghezza zero. La lista di protocolli del server proviene dall'applicazione e normalmente non dovrebbe mai essere prevista di lunghezza zero. In questo caso, se la funzione SSL_select_next_proto è stata chiamata come previsto (con la lista fornita dal client passata nei parametri client/client_len), l'applicazione non sarà vulnerabile a questo problema. Se l'applicazione è stata accidentalmente configurata con una lista server di lunghezza zero, ha accidentalmente passato quella lista server di lunghezza zero nei parametri client/client_len e ha inoltre mancato di gestire correttamente una risposta di "nessuna sovrapposizione" (che normalmente comporterebbe un fallimento dell'handshake in ALPN), allora sarà vulnerabile a questo problema. Nel caso di NPN, il protocollo consente al client di selezionare opportunisticamente un protocollo quando non c'è sovrapposizione. OpenSSL restituisce il primo protocollo client nel caso di nessuna sovrapposizione a supporto di ciò. La lista di protocolli client proviene dall'applicazione e normalmente non dovrebbe mai essere prevista di lunghezza zero. Tuttavia, se la funzione SSL_select_next_proto viene accidentalmente chiamata con un client_len di 0, verrà restituito un puntatore di memoria non valido. Se l'applicazione utilizza questo output come protocollo opportunistico, si verificherà la perdita di riservatezza. Questo problema è stato valutato come di gravità bassa perché le applicazioni hanno maggiori probabilità di essere vulnerabili se utilizzano NPN invece di ALPN, ma NPN non è ampiamente utilizzato. Richiede inoltre un errore di configurazione o di programmazione dell'applicazione. Infine, questo problema non sarebbe tipicamente sotto il controllo dell'attaccante, rendendo improbabile uno sfruttamento attivo. I moduli FIPS in 3.3, 3.2, 3.1 e 3.0 non sono interessati da questo problema. A causa della bassa gravità di questo problema, al momento non stiamo rilasciando nuove versioni di OpenSSL. La correzione sarà inclusa nelle prossime versioni quando saranno disponibili.
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.