Una vulnerabilità di alta severità è stata recentemente scoperta in OpenSSL, la libreria di crittografia open-source ampiamente utilizzata per proteggere le comunicazioni su Internet.
La falla, identificata come CVE-2024-12797, è stata segnalata dai ricercatori di sicurezza di Apple e potrebbe consentire attacchi Man-in-the-Middle (MitM) in determinate configurazioni.
Indice degli argomenti
Dettagli della vulnerabilità
La vulnerabilità risiede nella gestione delle chiavi pubbliche non elaborate (Raw Public Keys, RPK) secondo lo standard RFC7250. In particolare, il problema si verifica quando i client utilizzano le RPK per autenticare un server.
A causa di una mancata interruzione delle handshake TLS/DTLS quando la verifica del peer SSL è impostata, i client vulnerabili potrebbero non rilevare che il server non è stato autenticato correttamente.
Scenario di attacco
Un attaccante potrebbe sfruttare questa vulnerabilità intercettando la comunicazione tra un client e un server. L’attaccante si posizionerebbe come intermediario, intercettando e potenzialmente modificando i dati scambiati tra le due parti.
Questo è possibile perché il client, a causa della vulnerabilità, non riesce a verificare l’identità del server tramite RPK, aprendo la strada all’attacco MitM.
Versioni vulnerabili e correzioni
Le versioni di OpenSSL interessate sono la 3.4, 3.3 e 3.2. Il problema è stato risolto con il rilascio delle versioni 3.4.1, 3.3.2 e 3.2.4. È fondamentale che gli amministratori di sistema aggiornino immediatamente le proprie installazioni di OpenSSL per proteggersi da questa minaccia.
È importante notare che l’uso di RPK è disabilitato di default sia nei client che nei server TLS. La vulnerabilità si manifesta solo quando i client abilitano esplicitamente l’uso di RPK da parte del server e quest’ultimo invia una RPK invece di una catena di certificati X.509.
Anche in presenza della vulnerabilità, i client possono rilevare il fallimento della verifica della chiave pubblica non elaborata chiamando la funzione “SSL_get_verify_result()”. I client che eseguono questa verifica e intraprendono le azioni appropriate non sono vulnerabili.