OpenSSL ha rilasciato un aggiornamento di sicurezza per affrontare una vulnerabilità nella sua libreria che, se sfruttata, attiverebbe un ciclo infinito portando a condizioni di Denial of Service (DoS) con conseguente crash dei server remoti.
OpenSSL, lo ricordiamo, è una delle più popolari librerie di crittografia open source comunemente usata per supportare la cifratura dei protocolli SSL/TLS (Secure Socket Layer e Transport Layer Security) per la certificazione e la comunicazione sicura delle piattaforme online.
Per tale motivo, come visto già in passato, qualsiasi vulnerabilità della libreria finisce con l’avere un impatto su larga scala.
Indice degli argomenti
Il problema riscontrato in OpenSSL
Il problema, tracciato come CVE-2022-0778 (punteggio CVSS: 7,5), deriva dall’analisi dei certificati con parametri espliciti a curva ellittica non validi e risiederebbe in una funzione chiamata “BN_mod_sqrt()” utilizzata per calcolare le radici quadrate modulo n nelle fasi di analisi dei certificati stessi.
Una chiamata non legittima a questa funzione potrebbe causare un loop infinito qualora si processassero radici con moduli non primi, con un conseguente Denial of Service. In pratica, qualsiasi altra applicazione che utilizza tale funzione in cui un potenziale attaccante può controllare i valori dei parametri, risulterebbe vulnerabile a questo problema.
“La funzione BN_mod_sqrt(), che calcola una radice quadrata modulare, contiene un bug che può causare un ciclo continuo per moduli non primi. Internamente questa funzione viene utilizzata durante l’analisi dei certificati che contengono chiavi pubbliche a curva ellittica […]. È possibile attivare il ciclo infinito creando un certificato che ha parametri di curva espliciti non validi”, si legge nell’avviso di sicurezza OpenSSL del 15 marzo scorso.
La vulnerabilità, di gravità alta, interesserebbe le versioni OpenSSL 1.0.2, 1.1.1 e 3.0.
I possibili scenari di attacco
Sebbene non ci siano prove che la vulnerabilità sia stata sfruttata in natura, come confermato anche dallo CSIRT Italia, secondo OpenSSL ci sarebbero alcuni scenari in cui potrebbe essere comunque sfruttata:
- quando i client/server TLS utilizzano i reciproci certificati;
- quando i provider di hosting prelevano certificati o chiavi private dai clienti;
- quando le autorità di certificazione analizzano le richieste di certificazione degli abbonati;
- in tutti i casi in cui si analizzano i parametri della curva ellittica ASN.1.
La scoperta e la correzione del bug
Mentre la scoperta del difetto sarebbe attribuibile al ricercatore di sicurezza di Google Project Zero Tavis Ormandy, la sua correzione sarebbe stata invece sviluppata dagli esperti David Benjamin di Google e Tomáš Mráz di OpenSSL.
Purtroppo, però, la CVE-2022-0778 non è la prima vulnerabilità con la quale OpenSSL ha avuto a che fare dall’inizio di quest’anno. A gennaio, infatti, è stato già corretto un bug di gravità moderata CVE-2021-4160 (punteggio CVSS: 5,9) che interessava in quel caso la procedura di squadratura MIPS32 e MIPS64 della libreria.
Le misure di sicurezza prese da OpenSSL
OpenSSL ha dichiarato che il difetto è stato risolto con il rilascio delle versioni 1.0.2zd (solo per i clienti di supporto premium), 1.1.1n e 3.0.2 escludendo tutte le versioni precedenti alla 1.1.1 perché non più supportate (EOL, end-of-life product).
Gli utenti di queste ultime versioni “devono eseguire l’aggiornamento a OpenSSL 3.0 o 1.1.1”, consigliano gli sviluppatori della libreria.
Si consiglia, pertanto, di aggiornare il prima possibile i singoli prodotti anche con le patch di sicurezza fornite dal vendor e riportate nella pagina ufficiale.