AddTrust Root-certificaat verouderd veroorzaakt crashes op OpenSSL- en GnuTLS-systemen

Het 30-jarige rootcertificaat is op 20 mei verlopen VoegTrust toeDie toegepast voor de vorming van een kruishandtekening (kruisondertekend) in certificaten van een van de grootste certificeringscentra Sectigo (Comodo). Cross-signing maakte compatibiliteit mogelijk met oudere apparaten waaraan het nieuwe USERTRust-rootcertificaat niet was toegevoegd aan hun rootcertificaatarchief.

AddTrust Root-certificaat verouderd veroorzaakt crashes op OpenSSL- en GnuTLS-systemen

Theoretisch gezien zou de beëindiging van het AddTrust-rootcertificaat alleen maar moeten leiden tot schending van de compatibiliteit met oudere systemen (Android 2.3, Windows XP, Mac OS X 10.11, iOS 9, enz.), aangezien het tweede rootcertificaat dat bij cross-signing wordt gebruikt, blijft bestaan relevante en moderne browsers houden er rekening mee bij het controleren van de vertrouwensketen. Op de praktijk kwam opdagen problemen met verificatie van meerdere handtekeningen in niet-browser TLS-clients, inclusief die gebaseerd op OpenSSL 1.0.x en GnuTLS. Een beveiligde verbinding mislukt met een certificaatvervalfout als de server een Sectigo-certificaat gebruikt dat is gekoppeld aan een AddTrust-rootcertificaat.

Als gebruikers van moderne browsers de veroudering van het AddTrust-rootcertificaat niet opmerkten bij het verwerken van kruisondertekende Sectigo-certificaten, begonnen er problemen aan de oppervlakte te komen in verschillende applicaties van derden en serverhandlers, wat leidde tot overtreding werken veel infrastructuren die gecodeerde communicatiekanalen gebruiken voor interactie tussen componenten.

Die waren er bijvoorbeeld problemen met toegang tot enkele pakketrepository's in Debian en Ubuntu (apt begon een certificaatverificatiefout te geven), toegang vanaf scripts die de hulpprogramma's "curl" en "wget" gebruikten begon te mislukken, er werden fouten waargenomen bij het gebruik van Git, geschonden Roku-streamingplatform werkt, handlers worden niet meer gebeld Stripe и DataDog, begonnen er gebeuren crashes in Heroku-apps, gestopt Connect OpenLDAP-clients, problemen met het verzenden van e-mail naar SMTPS- en SMTP-servers met STARTTLS zijn opgelost. Daarnaast zijn er problemen in verschillende Ruby-, PHP- en Python-scripts die gebruik maken van de http-clientmodule. Van browserprobleem beïnvloedt Epiphany stopte met het laden van advertentieblokkeringslijsten.

Go-programma's hebben geen last van het probleem, zoals Go biedt eigen implementatie TLS.

Het was de bedoelingdat het probleem oudere distributieversies treft (waaronder Debian 9, Ubuntu 16.04, RHEL 6/7) die problematische OpenSSL-vertakkingen gebruiken, maar het probleem verscheen ook bij het uitvoeren van de APT-pakketbeheerder op huidige releases van Debian 10 en Ubuntu 18.04/20.04, aangezien APT de GnuTLS-bibliotheek gebruikt. De kern van het probleem is dat veel TLS/SSL-bibliotheken een certificaat parseren als een lineaire keten, terwijl volgens RFC 4158 een certificaat een gerichte gedistribueerde cyclische grafiek kan vertegenwoordigen met verschillende vertrouwensankers waarmee rekening moet worden gehouden. Over deze fout in OpenSSL en GnuTLS het was is bekend voor vele jaren. In OpenSSL is het probleem opgelost in de 1.1.1 branch en in gnuTLS stoffelijk overschot ongecorrigeerd.

Als tijdelijke oplossing om de fout te verhelpen, wordt voorgesteld om het "AddTrust External CA Root"-certificaat uit de systeemopslag te verwijderen (verwijder het bijvoorbeeld uit /etc/ca-certificates.conf en /etc/ssl/certs, en vervolgens voer "update-ca-certificates -f -v") uit, waarna OpenSSL met zijn deelname normaal kruisondertekende certificaten begint te verwerken. Wanneer u de APT-pakketbeheerder gebruikt, kunt u op eigen risico de certificaatverificatie voor individuele verzoeken uitschakelen (bijvoorbeeld "apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false" ).

Om het probleem binnen te dringen Fedora и RHEL Er wordt voorgesteld om het AddTrust-certificaat toe te voegen aan de zwarte lijst:

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-extract

Maar deze methode werkt niet voor GnuTLS (het krijgt bijvoorbeeld steeds een certificaatverificatiefout bij het uitvoeren van het wget-hulpprogramma).

Aan de serverkant kan dat wel veranderen order opsomming van certificaten in de vertrouwensketen die door de server naar de client is verzonden (als het certificaat dat is gekoppeld aan de "AddTrust External CA Root" uit de lijst wordt verwijderd, zal de verificatie door de client succesvol zijn). Om een ​​nieuwe vertrouwensketen te controleren en te genereren, kunt u de service gebruiken whatsmychaincert.com. Sectigo ook mits alternatief kruisondertekend tussencertificaat "AAA-certificaatservices", die geldig is tot 2028 en waarmee u de compatibiliteit met oudere versies van het besturingssysteem kunt behouden.

Addendum: Het probleem is dat ook komt naar voren in LibreSSL.

Bron: opennet.ru

Voeg een reactie