La deprecazione del certificato radice AddTrust provoca arresti anomali sui sistemi OpenSSL e GnuTLS

Il 30 maggio è scaduto il periodo di validità di 20 anni del certificato radice Aggiungi fiduciaChe applicato per generare certificati con firma incrociata di una delle più grandi autorità di certificazione Sectigo (Comodo). La firma incrociata è consentita per la compatibilità con i dispositivi legacy a cui non è stato aggiunto il nuovo certificato root USERTRust nell'archivio dei certificati root.

La deprecazione del certificato radice AddTrust provoca arresti anomali sui sistemi OpenSSL e GnuTLS

In teoria, la disdetta del certificato root AddTrust dovrebbe portare solo a una violazione della compatibilità con i sistemi legacy (Android 2.3, Windows XP, Mac OS X 10.11, iOS 9, ecc.), poiché il secondo certificato root utilizzato nella firma incrociata rimane i browser validi e moderni ne tengono conto quando controllano la catena di fiducia. In pratica si presentò Problemi con la verifica delle firme incrociate nei client TLS non browser, inclusi quelli basati su OpenSSL 1.0.x e GnuTLS. Una connessione sicura non viene più stabilita con un errore che indica che il certificato non è aggiornato se il server utilizza un certificato Sectigo collegato da una catena di fiducia al certificato radice AddTrust.

Se gli utenti dei browser moderni non si sono accorti dell'obsolescenza del certificato radice AddTrust durante l'elaborazione dei certificati Sectigo con firma incrociata, i problemi hanno cominciato a comparire in varie applicazioni di terze parti e gestori lato server, che hanno portato a violazione lavoro molte infrastrutture che utilizzano canali di comunicazione crittografati per l'interazione tra i componenti.

Ad esempio, c'erano problematica con l'accesso ad alcuni repository di pacchetti in Debian e Ubuntu (apt ha iniziato a generare un errore di verifica del certificato), le richieste dagli script che utilizzano le utilità "curl" e "wget" hanno iniziato a fallire, sono stati osservati errori durante l'utilizzo di Git, violato La piattaforma di streaming Roku funziona, i gestori non vengono più chiamati Stripe и DataDog, iniziato si verificano arresti anomali nelle app Heroku, fermato I client OpenLDAP si connettono, vengono rilevati problemi con l'invio di posta a SMTPS e server SMTP con STARTTLS. Inoltre si riscontrano problemi in diversi script Ruby, PHP e Python che utilizzano un modulo con un client http. Problema del browser colpisce Epiphany, che ha interrotto il caricamento degli elenchi di blocco degli annunci.

I programmi Go non sono interessati da questo problema perché Go offre propria implementazione TLS.

Si supponevache il problema riguarda le versioni precedenti della distribuzione (inclusi Debian 9, Ubuntu 16.04, RHEL6/7) che utilizzano rami OpenSSL problematici, ma il problema si è manifestato anche quando il gestore pacchetti APT è in esecuzione nelle versioni attuali di Debian 10 e Ubuntu 18.04/20.04, poiché APT utilizza la libreria GnuTLS. Il nocciolo del problema è che molte librerie TLS/SSL analizzano un certificato come una catena lineare, mentre secondo RFC 4158, un certificato può rappresentare un grafico circolare distribuito diretto con più trust Anchor che devono essere presi in considerazione. Informazioni su questo difetto in OpenSSL e GnuTLS era è noto per molti anni. In OpenSSL il problema è stato risolto nel ramo 1.1.1 e in gnuTLS resti non corretto.

Come soluzione alternativa, si consiglia di rimuovere il certificato "AddTrust External CA Root" dall'archivio di sistema (ad esempio, rimuoverlo da /etc/ca-certificates.conf e /etc/ssl/certs, quindi eseguire "update-ca -certificates -f -v"), dopodiché OpenSSL inizia normalmente a elaborare i certificati con firma incrociata con la sua partecipazione. Quando si utilizza il gestore pacchetti APT, è possibile disabilitare la verifica del certificato per singole richieste a proprio rischio (ad esempio, "apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false") .

Per bloccare il problema Fedora и RHEL Si propone di aggiungere il certificato AddTrust alla blacklist:

trust dump —filter «pkcs11:id=%AD%BD%98%7A%34%B4%26%F7%FA%C4%26%54%EF%03%BD%E0%24%CB%54%1A;type=cert» \
> /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit
estratto update-ca-trust

Ma questo metodo non funziona per GnuTLS (ad esempio, un errore di verifica del certificato continua a comparire durante l'esecuzione dell'utilità wget).

Lato server puoi cambiare ordine elencando i certificati nella catena di fiducia inviati dal server al client (se il certificato associato a “AddTrust External CA Root” viene rimosso dall'elenco, la verifica del client avrà esito positivo). Per verificare e generare una nuova catena di fiducia, è possibile utilizzare il servizio whatsmychaincert.com. Anche Sectigo предоставила certificato intermedio alternativo con firma incrociata "Servizi di certificazione AAA”, che sarà valido fino al 2028 e manterrà la compatibilità con le versioni precedenti dell’OS.

Aggiunta: problema anche si manifesta in LibreSSL.

Fonte: opennet.ru

Aggiungi un commento