Udfasning af AddTrust-rodcertifikat forårsager nedbrud på OpenSSL- og GnuTLS-systemer

Den 30. maj udløb rodcertifikatets 20-årige gyldighedsperiode AddTrustHvilket anvendt at generere et krydssigneret certifikat fra en af ​​de største certificeringsmyndigheder Sectigo (Comodo). Krydssignering muliggjorde kompatibilitet med ældre enheder, der ikke havde det nye USERTRust-rodcertifikat tilføjet til deres rodcertifikatlager.

Udfasning af AddTrust-rodcertifikat forårsager nedbrud på OpenSSL- og GnuTLS-systemer

Teoretisk set bør opsigelse af AddTrust-rodcertifikatet kun føre til en krænkelse af kompatibilitet med ældre systemer (Android 2.3, Windows XP, Mac OS X 10.11, iOS 9 osv.), da det andet rodcertifikat, der bruges i krydssignaturen, forbliver gyldige og moderne browsere tager højde for dette, når de tjekker tillidskæden. På praksis dukkede op Problemer med krydssignaturverifikation i ikke-browser TLS-klienter, inklusive dem, der er baseret på OpenSSL 1.0.x og GnuTLS. Der etableres ikke længere en sikker forbindelse med en fejl, der angiver, at certifikatet er forældet, hvis serveren bruger et Sectigo-certifikat, der er forbundet af en tillidskæde til AddTrust-rodcertifikatet.

Hvis brugere af moderne browsere ikke bemærkede forældelsen af ​​AddTrust-rodcertifikatet, når de behandlede krydssignerede Sectigo-certifikater, begyndte der at dukke problemer op i forskellige tredjepartsapplikationer og server-side-handlere, hvilket førte til krænkelse arbejde mange infrastrukturer, der bruger krypterede kommunikationskanaler til interaktion mellem komponenter.

Der var f.eks problemer med adgang til nogle pakkedepoter i Debian og Ubuntu (apt begyndte at generere en certifikatbekræftelsesfejl), begyndte anmodninger fra scripts ved hjælp af "curl" og "wget" hjælpeprogrammerne at mislykkes, der blev observeret fejl ved brug af Git, krænket Roku streaming platform fungerer, handlere kaldes ikke længere Stribe и DataDog, startede nedbrud opstår i Heroku apps, holdt op OpenLDAP-klienter forbinder, problemer med at sende mail til SMTPS og SMTP-servere med STARTTLS er opdaget. Derudover observeres problemer i forskellige Ruby-, PHP- og Python-scripts, der bruger et modul med en http-klient. Browser problem påvirker Epiphany, som stoppede med at indlæse annonceblokeringslister.

Go-programmer påvirkes ikke af dette problem, fordi Go tilbyder egen implementering TLS.

Det blev antagetat problemet påvirker ældre distributionsudgivelser (inklusive Debian 9, Ubuntu 16.04, RHEL 6/7) som bruger problematiske OpenSSL-grene, men problemet manifesteret sig også når APT-pakkehåndteringen kører i aktuelle udgivelser af Debian 10 og Ubuntu 18.04/20.04, da APT bruger GnuTLS-biblioteket. Problemets kerne er, at mange TLS/SSL-biblioteker analyserer et certifikat som en lineær kæde, hvorimod et certifikat ifølge RFC 4158 kan repræsentere en rettet distribueret cirkulær graf med flere tillidsankre, der skal tages i betragtning. Om denne fejl i OpenSSL og GnuTLS det var er kendt i mange år. I OpenSSL blev problemet rettet i gren 1.1.1 og i GNUTLS forbliver ukorrigeret.

Som en løsning foreslås det at fjerne "AddTrust External CA Root"-certifikatet fra systemlageret (f.eks. fjerne fra /etc/ca-certificates.conf og /etc/ssl/certs og derefter køre "update-ca" -certifikater -f -v"), hvorefter OpenSSL begynder at behandle krydssignerede certifikater med sin deltagelse. Når du bruger APT-pakkehåndteringen, kan du deaktivere certifikatbekræftelse for individuelle anmodninger på egen risiko (f.eks. "apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false") .

For at blokere problemet ind Fedora и RHEL Det foreslås at tilføje AddTrust-certifikatet til sortlisten:

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 metode fungerer ikke for GnuTLS (for eksempel fortsætter en certifikatbekræftelsesfejl, når du kører wget-værktøjet).

På serversiden kan du ændre bestilling liste certifikaterne i tillidskæden sendt af serveren til klienten (hvis certifikatet forbundet med "AddTrust External CA Root" fjernes fra listen, vil klientens verifikation være vellykket). For at kontrollere og generere en ny tillidskæde kan du bruge tjenesten whatsmychaincert.com. Sectigo også stillet til rådighed alternativt krydssigneret mellemcertifikat "AAA-certifikattjenester", som vil være gyldig indtil 2028 og vil opretholde kompatibilitet med ældre versioner af operativsystemet.

Tilføjelse: Problem også kommer til syne i LibreSSL.

Kilde: opennet.ru

Tilføj en kommentar