Per una settimana gli amministratori di sistema hanno trattenuto il fiato. Il 25 ottobre il progetto OpenSSL aveva annunciato per il 1° novembre una versione con la correzione di una falla critica, la prima di questo livello dai tempi di Heartbleed, nel 2014. Martedì è arrivata la 3.0.7, con una sorpresa: le vulnerabilità sono due, ed entrambe sono classificate come alte, non critiche.
La CVE-2022-3602 è un errore di calcolo di un solo elemento nella decodifica punycode degli indirizzi email contenuti nei certificati X.509, che permette di scrivere 4 byte oltre la fine di un buffer nello stack. La CVE-2022-3786 consente un overflow di lunghezza arbitraria, ma solo con il carattere «.», e quindi al massimo un crash. Entrambe si attivano durante la verifica di un certificato con un indirizzo email costruito ad arte, firmato da un’autorità fidata oppure accettato da un’applicazione che prosegue nonostante la verifica fallita. Colpiscono soprattutto i client TLS e i server che chiedono un certificato al client.
Il declassamento ha una spiegazione tecnica. Durante la settimana di analisi è emerso che l’esecuzione di codice da remoto è improbabile nella maggior parte dei casi: molte piattaforme hanno protezioni contro gli overflow dello stack, e la disposizione della memoria rende difficile sfruttare quei 4 byte. L’esito più probabile è il crash del processo. Improbabile, però, non vuol dire impossibile.
Solo il ramo 3.0
Sono vulnerabili le versioni dalla 3.0.0 alla 3.0.6. La 1.1.1, ancora la più diffusa, e le precedenti non lo sono. OpenSSL 3 si trova nelle distribuzioni più recenti, come Ubuntu 22.04, RHEL 9 e Fedora 36, in Node.js dalla versione 17 e in molte immagini di container costruite su queste basi.
Controlla con openssl version e guarda quali pacchetti installano libssl3 o openssl-libs 3.x. Aggiorna con il gestore di pacchetti: i principali produttori hanno pubblicato le correzioni in giornata. Poi riavvia i servizi che usano la libreria, altrimenti continueranno a usare la versione vecchia rimasta in memoria.
La parte che si dimentica sono le copie nascoste: immagini container, binari compilati staticamente, applicazioni che portano con sé la propria OpenSSL. Ricostruisci le immagini sulla base aggiornata. Un allarme rientrato è anche una buona occasione per scoprire quante copie della stessa libreria girano davvero nella tua infrastruttura.



