30 maja wygaśnięcie 20-letniego okresu ważności certyfikatu root. , który w celu stworzenia podpisu krzyżowego (cross-signed) w certyfikatach jednego z największych urzędów certyfikacyjnych Sectigo (Comodo). Podpis krzyżowy zapewniał kompatybilność z przestarzałymi urządzeniami, w których magazynie certyfikatów głównych nie dodano nowego certyfikatu root USERTrust.
Teoretycznie wygaśnięcie certyfikatu root AddTrust powinno skutkować jedynie utratą kompatybilności z przestarzałymi systemami (Android 2.3, Windows XP, Mac OS X 10.11, iOS 9 itp.), ponieważ drugi certyfikat root, wykorzystywany w podpisie krzyżowym, pozostaje aktualny, a nowoczesne przeglądarki biorą go pod uwagę przy weryfikacji łańcucha zaufania. W praktyce problemy z weryfikacją podpisu krzyżowego w nieużywających przeglądarek klientach TLS, w tym tych opartych na OpenSSL 1.0.x i GnuTLS. Bezpieczne połączenie przestało być nawiązywane z komunikatem o błędzie związanym ze starością certyfikatu, jeśli na serwerze użyto certyfikatu Sectigo, powiązanego łańcuchem zaufania z certyfikatem root AddTrust.
Jeśli użytkownicy nowoczesnych przeglądarek nie zauważyli wygaśnięcia certyfikatu root AddTrust przy obsłudze certyfikatów podpisanych krzyżowo przez Sectigo, to w różnych aplikacjach zewnętrznych i serwerowych wystąpiły problemy, co doprowadziło do wielu infrastruktur, które korzystają z szyfrowanych kanałów komunikacyjnych do interakcji między komponentami.
Na przykład wystąpiły problemy z dostępem do niektórych repozytoriów pakietów w Debianie i Ubuntu (apt zaczęło zgłaszać błąd weryfikacji certyfikatu), wystąpiły błędy w skryptach wykorzystujących narzędzia «curl» i «wget», zauważono błędy przy użyciu Git, działania platformy streamingu Roku, przestały działać procedury i , zaczęły w aplikacjach Heroku, łączyć się klienci OpenLDAP, zauważono problemy z wysyłaniem wiadomości do serwerów SMTPS i SMTP z STARTTLS. Dodatkowo zaobserwowano problemy w różnych skryptach Ruby, PHP i Python, które korzystały z modułu z klientem http. Z przeglądarek problem Epiphany, w której przestały się ładować listy blokad reklam.
Programy napisane w języku Go nie są narażone na problem, ponieważ w Go oferuje się TLS.
, że problem dotyczy starych wydań dystrybucji (w tym Debian 9, Ubuntu 16.04, ) w których używane są problematyczne gałęzie OpenSSL, ale problem również podczas pracy menedżera pakietów APT w aktualnych wydaniach Debiana 10 i Ubuntu 18.04/20.04, ponieważ APT korzysta z biblioteki GnuTLS. Istota problemu polega na tym, że wiele bibliotek TLS/SSL interpretuje certyfikat jako liniowy ciąg, podczas gdy zgodnie z RFC 4158 certyfikat może przedstawiać ukierunkowany rozproszony cykliczny graf z wieloma punktami zaufania, które należy wziąć pod uwagę. O tym niedopatrzeniu w OpenSSL i GnuTLS . W OpenSSL problem został rozwiązany w gałęzi 1.1.1, a w pozostaje .
Jako obejście sugeruje się usunięcie z systemowego magazynu certyfikatu „AddTrust External CA Root” (na przykład usunięcie z /etc/ca-certificates.conf i /etc/ssl/certs, a następnie uruchomienie „update-ca-certificates -f -v”), po czym OpenSSL zaczyna poprawnie obsługiwać wzajemnie podpisane certyfikaty z jego udziałem. Korzystając z menedżera pakietów APT na własne ryzyko, można wyłączyć weryfikację certyfikatów dla pojedynczych żądań (na przykład „apt-get update -o Acquire::https::download.jitsi.org::Verify-Peer=false”).
Aby zablokować problem w i zaleca się dodanie certyfikatu AddTrust do czarnej listy:
zrzut zaufania — filtr «pkcs11:id=;typ=cert» \
> /etc/pki/ca-trust/source/blacklist/addtrust-external-root.p11-kit
update-ca-trust extract
Jednak ten sposób dla GnuTLS (na przykład nadal występuje błąd weryfikacji certyfikatu przy uruchamianiu narzędzia wget).
Po stronie serwera można wymieniania certyfikatów w łańcuchu zaufania, wysyłanych przez serwer do klienta (jeśli certyfikat związany z „AddTrust External CA Root” zostanie usunięty z listy, to weryfikacja przez klienta przebiegnie pomyślnie). Aby sprawdzić i wygenerować nowy łańcuch zaufania, można skorzystać z serwisu . Firma Sectigo również alternatywny wzajemnie podpisany certyfikat pośredni „„, który będzie ważny do 2028 roku i pozwoli zachować kompatybilność ze starymi wersjami systemów operacyjnych.
Uzupełnienie: Problem także w LibreSSL.
Źródło: opennet.ru
