Avvikling av AddTrust rotsertifikat forårsaker krasj på OpenSSL- og GnuTLS-systemer

30. mai utløp 20-års gyldighetsperiode for rotsertifikatet AddTrustSom anvendt å generere et krysssignert sertifikat fra en av de største sertifiseringsmyndighetene Sectigo (Comodo). Krysssignering muliggjorde kompatibilitet med eldre enheter som ikke hadde det nye USERTRust-rotsertifikatet lagt til rotsertifikatlageret.

Avvikling av AddTrust rotsertifikat forårsaker krasj på OpenSSL- og GnuTLS-systemer

Teoretisk sett skal oppsigelse av AddTrust-rotsertifikatet bare føre til brudd på kompatibilitet med eldre systemer (Android 2.3, Windows XP, Mac OS X 10.11, iOS 9, etc.), siden det andre rotsertifikatet som brukes i krysssignaturen forblir gyldige og moderne nettlesere tar det i betraktning når de sjekker tillitskjeden. På praksis dukket opp Problemer med krysssignaturverifisering i TLS-klienter som ikke er nettlesere, inkludert de som er basert på OpenSSL 1.0.x og GnuTLS. En sikker tilkobling etableres ikke lenger med en feil som indikerer at sertifikatet er utdatert hvis serveren bruker et Sectigo-sertifikat koblet av en tillitskjede til AddTrust-rotsertifikatet.

Hvis brukere av moderne nettlesere ikke la merke til at AddTrust-rotsertifikatet var foreldet ved behandling av krysssignerte Sectigo-sertifikater, begynte det å dukke opp problemer i ulike tredjepartsapplikasjoner og behandlere på serversiden, noe som førte til brudd arbeide mange infrastrukturer som bruker krypterte kommunikasjonskanaler for interaksjon mellom komponenter.

For eksempel var det problemer med tilgang til noen pakkelager i Debian og Ubuntu (apt begynte å generere en sertifikatverifiseringsfeil), begynte forespørsler fra skript som brukte verktøyene "curl" og "wget" å mislykkes, feil ble observert ved bruk av Git, krenket Roku-strømmeplattformen fungerer, behandlere kalles ikke lenger Stripe и DataDog, startet krasj oppstår i Heroku-apper, stoppet OpenLDAP-klienter kobler til, problemer med å sende e-post til SMTPS og SMTP-servere med STARTTLS oppdages. I tillegg observeres problemer i ulike Ruby-, PHP- og Python-skript som bruker en modul med en http-klient. Nettleserproblem påvirker Epiphany, som sluttet å laste inn annonseblokkeringslister.

Go-programmer påvirkes ikke av dette problemet fordi Go tilbyr egen gjennomføring TLS.

Det ble antattat problemet påvirker eldre distribusjonsutgivelser (inkludert Debian 9, Ubuntu 16.04, RHEL 6/7) som bruker problematiske OpenSSL-grener, men problemet manifestert seg også når APT-pakkebehandlingen kjører i gjeldende utgaver av Debian 10 og Ubuntu 18.04/20.04, siden APT bruker GnuTLS-biblioteket. Problemets kjerne er at mange TLS/SSL-biblioteker analyserer et sertifikat som en lineær kjede, mens et sertifikat ifølge RFC 4158 kan representere en rettet distribuert sirkulær graf med flere tillitsankere som må tas i betraktning. Om denne feilen i OpenSSL og GnuTLS det var kjent i mange år. I OpenSSL ble problemet løst i gren 1.1.1 og i gnuTLS rester ukorrigert.

Som en løsning foreslås det å fjerne "AddTrust External CA Root"-sertifikatet fra systemlageret (f.eks. fjern fra /etc/ca-certificates.conf og /etc/ssl/certs, og deretter kjøre "update-ca" -sertifikater -f -v"), hvoretter OpenSSL begynner å normalt behandle krysssignerte sertifikater med sin deltakelse. Når du bruker APT-pakkebehandlingen, kan du deaktivere sertifikatverifisering for individuelle forespørsler på egen risiko (for eksempel "apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false") .

For å blokkere problemet inn Fedora и RHEL Det foreslås å legge AddTrust-sertifikatet til svartelisten:

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
update-ca-trust-ekstrakt

Men denne metoden ikke fungerer for GnuTLS (for eksempel fortsetter en sertifikatbekreftelsesfeil å vises når du kjører wget-verktøyet).

På serversiden kan du endre for liste opp sertifikatene i tillitskjeden sendt av serveren til klienten (hvis sertifikatet knyttet til "AddTrust External CA Root" fjernes fra listen, vil klientens verifisering være vellykket). For å sjekke og generere en ny tillitskjede kan du bruke tjenesten whatsmychaincert.com. Sectigo også sørget for alternativt krysssignert mellomsertifikat "AAA -sertifikattjenester", som vil være gyldig til 2028 og vil opprettholde kompatibilitet med eldre versjoner av operativsystemet.

Tillegg: Problem også vises i LibreSSL.

Kilde: opennet.ru

Legg til en kommentar