Jeden z głównych certyfikatów SSL właśnie wygasł. Fala awarii w internecie
Certyfikat AddTrust External CA Root, uznawany na certyfikat autorytatywny (root), wygasł 30 maja 2020, po dwudziestu latach ważności. Serwery i aplikacje wykorzystujące komunikację SSL/TLS, korzystające z certyfikatów wysnutych ze ścieżki pochodzącej od niego, mogą przestać działać. Choć o ryzyku wiedziano od dawna, zima ponownie zaskoczyła drogowców i sporo usług zalicza właśnie downtime. Problemy zgłasza między innymi Heroku, SugarSync, Puppet i toggl.
30.05.2020 | aktual.: 01.06.2020 00:06
Szyfrowanie połączenia nie zapewnia jego bezpieczeństwa. Jaką wartość ma na przykład szyfrowanie w sytuacji, gdy wiele osób zna klucz lub szyfr? Aby zapewnić bezpieczeństwo, certyfikaty są wystawiane przez zewnętrzne instytucje, a nie ustanawiane samozwańczo. Instytucje te podpisują certyfikaty dla zaufanych urzędów, a te z kolei podpisują certyfikaty niższych rzędów.
Dzięki temu zapewniana jest wiarygodność szyfru, bo każdy końcowy certyfikat, dzięki ścieżce podpisów po drodze, jest pośrednio podpisany przez główny urząd. Systemy operacyjne posiadają bazy danych z odciskami certyfikatów głównych urzędów. Dziś certyfikat jednego takiego urzędu wygasł.
Zaplanowana apokalipsa
Sytuacje tego typu są zawsze zabawne, bowiem teoretycznie są łatwe do uniknięcia. Wygasły nad-certyfikat był w tym celu używany do "ochrzczenia" nowych głównych urzędów. To nie AddTrust podpisywał bezpośrednio wszystkie certyfikaty świata. Podpisał natomiast klucze dla innych urzędów, uznanych za główne. Nowe systemy wiedzą, że owe urzędy są "główne": Andrew Ayer pokazuje przykład urzędu USERTrust. Podpisano go wygasłym certyfikatem, ale on sam został uznany za główny.
A więc oprogramowanie będzie szukać odpowiedzi na pytanie "czy certyfikat tej strony jest podpisany przez główny urząd ważnym certyfikatem?" i otrzyma na to odpowiedź "tak". Wszystko OK. Problem zaczyna się w sytuacji, gdy system nie wie że pośredni urząd jest główny. Wtedy odpowiedź na powyższe pytanie będzie brzmieć "nie", ponieważ urząd pośredni nie został uznany za godny zaufania.
Aktualizacje
Co wtedy? Aktualizacje systemu operacyjnego powinny dostarczać nowe zaufane urzędy do bazy certyfikatów. Dzięki temu problem rozwiązuje się sam. W razie czego, urząd pośredni można doinstalować do zaufanych samodzielnie.
Niestety, starsze wersje OpenSSL zawsze będą próbowały rozwijać pełną ścieżkę, do najwyższego certyfikatu. Wtedy takie rozwiązanie nie pomoże, konieczna jest aktualizacje biblioteki. Wygląda to więc na problem, który nie istnieje w zaktualizowanych systemach… tylko, że niestety OpenSSL jest notorycznie dodawany jako biblioteka runtime do niezliczonej ilości oprogramowania. Wiele programów, chcąc zredukować listę dependencji, dołącza własne kopie OpenSSL do swoich instalatorów, dzięki czemu nawet aktualny system nie pomoże.
Takie właśnie przypadki pokazują istotność aktualizacji (i wady dystrybucji skonteneryzowanego oprogramowania). "Don't fix what's not broken" brzmi dobrze tylko w teorii, bowiem wiele "działających" rzeczy może się pewnego dnia brzydko popsuć.