Błąd w CryptoAPI może przekonać niedowiarków do aktualizacji Windows

Błąd w CryptoAPI może przekonać niedowiarków do aktualizacji Windows16.01.2020 23:34
Błąd w CryptoAPI (fot. Pixabay)

Rzadko się zdarza, że od ogłoszenia podatności do opublikowania działających i powtarzalnych eksploitów upływa tak niewiele czasu. Gdy aktualizacje łatają znane i opublikowane podatności, złośliwe narzędzia są dostępne przed stosownymi łatkami. Gdy jednak podatność jest nowa, hakerzy potrzebują trochę czasu na zgłębienie zagadnienia i opracowania dowodu na wykorzystanie słabości.

Trudno dostępne szczegóły

Microsoft w swoim pozornie fachowym portalu MSRC tradycyjnie udziela bardzo ogólnych informacji na temat łatanych dziur. W większości przypadków są to te same frazy przeklejane już od niemal dwóch dekad. Notatki CVE przydzielone do nich również nie zawierają zbyt wiele szczegółów. A ponieważ dziś aktualizacje Windows są serwowane w wielkich paczkach, trudno je badać różnicowo.

Na szczęście więcej szczegółów o wtorkowej dziurze CVE-2020-0601 udziela CERT i NSA, które identyfikują źródło problemu w pliku crypt32.dll (Microsoft Crypto API) i jego realizowanej w nim obsługi funkcji WinAPI CertGetCertificateChain(). Eksport ten sprawdza, czy ścieżka certyfikacji w pliku certyfikatu jest prawidłowa. Łańcuch zaufania w plikach PFX polega na tym, że Główny Urząd Certyfikacji (Root CA) nie musi podpisywać wszystkich certyfikatów samodzielnie. Może podpisać certyfikaty urzędom niższego rzędu i wszystkie certyfikaty wydawane przez takie urzędy będą zaufane na prawach tych podpisanych przez urząd główny.

Windows zawiera wiele zaufanych certyfikatów. Zarówno na poziomie komputera, jak i użytkownika (fot. Kamil Dudek)
Windows zawiera wiele zaufanych certyfikatów. Zarówno na poziomie komputera, jak i użytkownika (fot. Kamil Dudek)

Dzięki temu, Root CA jest używany okazjonalnie, do mianowania (i odwoływania!) urzędów pobocznych. Wrogie przejęcie urzędu kończy się obowiązkowym unieważnieniem jego autoryzacji i wszystkich wystawionych kluczy (to przytrafiło się firmie Symantec). Z kolei przejęcie Root CA lub skuteczna metoda podszycia się pod niego... oznacza załamanie jedynego działającego sposobu na poświadczanie cyfrowej tożsamości. Jest to innymi słowy "koniec świata". CertGetCertificateChain() wydaje się być skory do zbyt łatwego stwierdzania poprawności certyfikatów, jeżeli są one stworzone za pomocą ECC (kryptografia oparta o krzywą eliptyczną).

Analiza zagrożenia

Yolan Romailler z firmy Kudelski Security wykonał kawał wymagającej roboty aby zidentyfikować, zrozumieć i opisać problem. Według jego sprawozdania, CryptoAPI nie sprawdza wszystkich pól certyfikatu podczas porównywania go z wzorcem. W certyfikatach ECC możliwe jest zrekonstruowanie klucza prywatnego na bazie klucza publicznego, ale taki klucz prywatny pasuje do publicznego tylko pod określonymi, domyślnie nieznanymi warunkami. To wciąż może być niejasne bez konieczności przedstawiania zaplecza matematycznego.

Upraszczając (i narażając się na ogień krytyki purystów), sprawa wygląda tak: klucz prywatny jest zmienną w równaniu, którego rozwiązaniem jest klucz publiczny. Nie znając równania, nie znamy klucza prywatnego. Podstawiając jednak inną zmienną pod owy klucz prywatny, klucz publiczny dalej może być prawidłowy. Taki scenariusz to kolizja. Podstawiając jednak w pełni własny klucz prywatny, nie otrzymamy (bez kolizji) wyniku w postaci pasującego klucza publicznego, jeżeli nie pogmeramy w samym równaniu.

Krzywa eliptyczna używana w ECDSA (via Desmos)
Krzywa eliptyczna używana w ECDSA (via Desmos)

To jest właśnie źródło problemu w CryptoAPI: algorytm powinien sprawdzić klucz publiczny, wziąć równanie i otrzymać pasujący wzorzec, dowodzący, że w jego obliczaniu brał udział zaufany klucz prywatny. Zamiast tego jednak bierze klucz oraz akceptuje całą klasę równań. Dzięki temu liczba akeptowalnych rozwiązań, dowodzących rzekomo, że użyto właściwego klucza prywatnego – rośnie. Tylko jedno jest prawdziwe, reszta natomiast pozwala fałszować tożsamość.

Prawidłowe API kryptograficzne, np. OpenSSL, bardzo prędko zorientuje się, że coś jest nie tak. Zgłosi problem, informując użytkownika "no super, że odpowiedź przy zadanym wejściu się zgadza, szkoda tylko, że rozwiązujesz inne równanie!". Certyfikaty to nie tylko cyferki. Zamiast sprawdzać wyłącznie zgodność odcisków, należy sprawdzić także zastosowany generator, a więc (w uproszczeniu) upewnić się, że rozwiązuje się to samo zagadnienie matematyczne. Romailler przytacza więcej szczegółów związanych z faktoryzacją i wyliczaniem klucza w algorytmie eliptycznym.

Algorytm fałszowania zaufania

Poza detalami matematycznymi, oferowane jest również rozwiązanie, tworzące "fałszywy" certyfikat:

Odnaleźć certyfikat policzony metodą ECC, wystawiony za pomocą urzędu, któremu Windows domyślnie ufa (każdy system ma listę takich urzędów, w przeciwnym razie nie ufałby nikomu) Wyciągnąć klucz publiczny z certyfikatu (jest to perfekcyjnie wykonalne i normalne, klucz publiczny jest publiczny, używa się go do potwierdzania autentyczności treści podpisanych tajnym, prywatnym) Stworzyć klucz prywatny z fałszywymi wartościami równania podanymi na sztywno (generator) Stworzyć urząd certyfikacji, w którym dopuszczalnej jest stosowanie autorskiego generatora (openssl przyjmie wszystko, nawet idiotyzmy) Stworzyć własny certyfikat Podpisać stworzony certyfikat z użyciem podstawionego urzędu

Powyższa procedura pozwala wystawić własny certyfikat, na dowolną domenę i posiadany przez dowolną instytucję, podpisany jakimś urzędem, a Windows będzie twierdzić, że to certyfikat podpisany przez urząd prawdziwie zaufany.

Aktualizacje są ważne

Warto tutaj przytoczyć mądrości wygłaszane przez przeciwników aktualizowania Windows, twierdzących że łatane podatności są rzadkie, a przed niebezpieczeństwem uchroni antywirus, na co dowodem mają być czyste wyniki skanów antywirusowych. Tu nie ma wirusa. Tu nie ma włamania. Żadnego podrzuconego EXE, żadnego zdalnego wykonania kodu.

Wystarczy połączyć się z źle chronionym publicznym Wi-Fi z zatrutym DNS. Logowanie do poczty zgłosi, że certyfikat jest zaufany, więc wszystko jest w porządku. Szkoda, że jego wystawcą nie będzie Wirtualna Polska albo Google, ale np. Adolf Hitler lub Sułtan Kosmitów, zatrudnieni w firmie Wyższa Szkoła Robienia Hałasu. Argument "mam komputer stacjonarny i nie wychodzę z domu" nie jest tutaj poprawną metodą negowania zagrożenia, ponieważ to tylko przykład pierwszy z brzegu. Możliwości wykorzystania luk w kryptografii jest znacznie, znacznie więcej.

Naturalnie, świat nie płonie. Co prawda początkowo oczekiwano, że wykorzystanie podatności 2020-0601 będzie znacznie trudniejsze, ale załatane systemy, poinstruowane hostingi i nowe przeglądarki internetowe powinny zmitygować najbardziej oczywiste ataki. Swoją drogą, zagrożony jest tylko Windows 10. Wcześniejsze wersje Windows po prostu w ogóle nie obsługiwały sparametryzowanych certyfikatów ECC i nie rozumiały takich plików. Windows 7 jest więc bezpieczny pod tym względem, bo jest za stary żeby działać z nowoczesną kryptografią. Podobnie jak Windows 95.

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.