Utfasning av AddTrust-rotcertifikat orsakar krascher på OpenSSL- och GnuTLS-system

Den 30 maj gick rotcertifikatets 20-åriga giltighetstid ut AddTrustSom applicerad att generera ett korssignerat certifikat från en av de största certifieringsmyndigheterna Sectigo (Comodo). Korssignering möjliggjorde kompatibilitet med äldre enheter som inte hade det nya USERTRust-rotcertifikatet lagt till sitt rotcertifikatlager.

Utfasning av AddTrust-rotcertifikat orsakar krascher på OpenSSL- och GnuTLS-system

Teoretiskt sett bör uppsägning av AddTrust-rotcertifikatet endast leda till en kränkning av kompatibilitet med äldre system (Android 2.3, Windows XP, Mac OS X 10.11, iOS 9, etc.), eftersom det andra rotcertifikatet som används i korssignaturen finns kvar. giltiga och moderna webbläsare tar hänsyn till det när de kontrollerar förtroendekedjan. På praktik dök upp Problem med korssignaturverifiering i TLS-klienter som inte är webbläsare, inklusive de som är baserade på OpenSSL 1.0.x och GnuTLS. En säker anslutning upprättas inte längre med ett fel som indikerar att certifikatet är inaktuellt om servern använder ett Sectigo-certifikat som är länkat av en förtroendekedja till AddTrust-rotcertifikatet.

Om användare av moderna webbläsare inte märkte att AddTrust-rotcertifikatet var föråldrat när de behandlade korssignerade Sectigo-certifikat, började problem dyka upp i olika tredjepartsapplikationer och hanterare på serversidan, vilket ledde till att överträdelse arbete många infrastrukturer som använder krypterade kommunikationskanaler för interaktion mellan komponenter.

Det fanns till exempel problem med tillgång till vissa paketförråd i Debian och Ubuntu (apt började generera ett certifikatverifieringsfel), började förfrågningar från skript som använde verktygen "curl" och "wget" att misslyckas, fel observerades vid användning av Git, kränkts Roku streamingplattform fungerar, hanterare anropas inte längre Rand и DataDog, satte igång krascher inträffar i Heroku-appar, stannade OpenLDAP-klienter ansluter, problem med att skicka e-post till SMTPS och SMTP-servrar med STARTTLS upptäcks. Dessutom observeras problem i olika Ruby-, PHP- och Python-skript som använder en modul med en http-klient. Webbläsarproblem påverkar Epiphany, som slutade ladda listor för annonsblockering.

Go-program påverkas inte av detta problem eftersom Go erbjuder eget genomförande TLS.

Det var tänktatt problemet påverkar äldre distributionsversioner (inklusive Debian 9, Ubuntu 16.04, RHEL 6/7) som använder problematiska OpenSSL-grenar, men problemet manifesterade sig även när APT-pakethanteraren körs i aktuella versioner av Debian 10 och Ubuntu 18.04/20.04, eftersom APT använder GnuTLS-biblioteket. Kärnan i problemet är att många TLS/SSL-bibliotek analyserar ett certifikat som en linjär kedja, medan ett certifikat enligt RFC 4158 kan representera en riktad distribuerad cirkulär graf med flera förtroendeankare som måste beaktas. Om denna brist i OpenSSL och GnuTLS было är känd under många år. I OpenSSL åtgärdades problemet i gren 1.1.1 och i gnuTLS resterna okorrigerad.

Som en lösning föreslås det att du tar bort certifikatet "AddTrust External CA Root" från systemarkivet (t.ex. ta bort från /etc/ca-certificates.conf och /etc/ssl/certs, och sedan köra "update-ca" -certifikat -f -v"), varefter OpenSSL börjar normalt behandla korssignerade certifikat med dess deltagande. När du använder APT-pakethanteraren kan du inaktivera certifikatverifiering för individuella förfrågningar på egen risk (till exempel "apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false") .

För att blockera problemet fedora и RHEL Det föreslås att AddTrust-certifikatet läggs till på svartlistan:

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

Men denna metod fungerar inte för GnuTLS (till exempel fortsätter ett certifikatverifieringsfel att visas när du kör verktyget wget).

På serversidan kan du ändra beställa listar certifikaten i förtroendekedjan som skickats av servern till klienten (om certifikatet som är associerat med "AddTrust External CA Root" tas bort från listan, kommer klientens verifiering att lyckas). För att kontrollera och skapa en ny förtroendekedja kan du använda tjänsten whatsmychaincert.com. Sectigo också försedd alternativt korssignerat mellancertifikat "AAA -certifikattjänster", som kommer att vara giltig till 2028 och kommer att bibehålla kompatibilitet med äldre versioner av operativsystemet.

Tillägg: Problem också visas i LibreSSL.

Källa: opennet.ru

Lägg en kommentar