Man-in-the-middle w laptopach Lenovo

Man-in-the-middle w laptopach Lenovo

Pamiętacie opisywaną przeze mnie historię amerykańskiej firmy Gogo, która to poprzez wykorzystanie fałszywego certyfikat podsłuchiwała swoich klientów na pokładach samolotów? Dzisiaj wyszło na jaw, że podobne praktyki, niosące za sobą jeszcze bardziej niebezpieczne konsekwencje, stosuje firma Lenovo.

Własny root w magazynie zaufanych certyfikatów

Od około pół roku każdy nowy komputer komputery Lenovo (poszczególne modele zostały wymienione tutaj) posiadają preinstalowane oprogramowanie nazwane Superfish [Aktualizacja 21.02.2015: od 23 stycznia 2015 Lenovo przestało instalować ww. oprogramowanie w swoich komputerach] . Program ten zapewnia wyświetlanie użytkownikom odpowiednich reklam na stronach internetowych. Nie jest to niestety jedyna umiejętność jaką posiada to oprogramowanie. Odkryto, że dodaje ono samopodpisany (self-signed) certyfikat do zaufanego magazynu certyfikatów systemu Windows. Gdy dodamy do tego przekierowywanie ruchu sieciowego na serwer proxy to możliwe jest deszyfrowanie połączeń HTTPS i to bez ostrzeżeń ze strony przeglądarki (to zasługa certyfikatu dodanego do magazynu zaufanych certyfikatów głównych).

20150219-fake_lenovo_certificate_and_green_padlock

Wykorzystanie fałszywego certyfikatu Superfish

Na tym jednak nie koniec złych wiadomości. Jak informuje Chris Palmer, porównał on certyfikaty, które Lenovo wstrzykuje do systemu Windows i okazało się, że posiadają one identyczny moduł dla kluczy RSA oraz wartość pola Subject Public Key Info. W praktyce oznacza to, że na każdym komputerze instalowany jest ten sam certyfikat. Jakie niesie to za sobą konsekwencje? Gdyby atakujący był w posiadaniu klucza prywatnego dla tego certyfikatu to mógłby generować kolejne certyfikaty, którym nieświadomie ufaliby użytkownicy komputerów Lenovo, i podstawiać je na fałszywych stronach dowolnej domeny. Jak wiadomo odnalezienie 1024 bitowego (bo właśnie taką długość posiadają klucze w fałszywym certyfikacie) klucza prywatnego RSA na podstawie klucza publicznego ciągle nie jest zadaniem, które można wykonać w akceptowalnym czasie. Jak można się było spodziewać nie było nawet konieczności podejmowania się takiej próby. Klucz prywatny zapisany był w samej aplikacji Superfish i jak się okazało, nie trzeba było długo czekać na to, aż zostanie z niej wyciągnięty. Klucz, co prawda, był zaszyfrowany, ale i to nie okazało się wielkim problemem.

Klucz prywatny certyfikaty Superfish (źródło: http://blog.erratasec.com)

Klucz prywatny certyfikaty Superfish (źródło: http://blog.erratasec.com)

W tym przypadku na ataki MITM podatne są przeglądarki, które korzystają z systemowego magazynu certyfikatów Windows – Internet Explorer, Chrome i Opera (od wersji 15) [Aktualizacja]. Wolne od tych problemów są natomiast Firefox i Opera (do wersji 12 włącznie) [Aktualizacja] z własnymi Trust Store’ami. Warto zauważyć, że nie pierwszy raz Firefox wypada lepiej od swoich największych konkurentów na polu dbania o bezpieczeństwo użytkowników. Chociaż w tym przypadku może być to argument nieco przeze mnie naciągany :-)

Słów kilka o certyfikacie Superfish

To co odróżnia certyfikat podstawiany przez Lenovo od zwykłego certyfikatu SSL to wartość rozszerzenia Basic Coinstraints (Podstawowe Ograniczenia). Zawiera ono dwa pola:

  • cA, przyjmująca wartość logiczną true lub false oraz,
  • pathLenConstraint, typu całkowitoliczbowego.

Certyfikat Superfish dla pierwszego z pól posiada wartość true, a drugie z nich nie ogranicza ilości certyfikatów pośrednich dla których możliwe jest zbudowanie poprawnej ścieżki certyfikacyjnej. Kluczowa jest tutaj wartość true pola cA. Wskazuje ono, że certyfikat ten może być wystawcą innych certyfikatów – czyli jest po prostu Urzędem Certyfikacyjnym. W przypadku zwykłego certyfikatu SSL pole to przyjmuje wartość false.

Fałszywy certyfikat Superfish

Fałszywy certyfikat Superfish

Na koniec krótka instrukcja jak usunąć certyfikat Superfish z zaufanego magazynu certyfikatów systemu Windows. Wystarczy z menu uruchom/wyszukaj otworzyć, wpisując certmgr.msc, menadżer certyfikatów. Następnie przejść do folderu /Zaufane główne urzędy certyfikacji/Certyfikaty, odnaleźć właściwy i za pomocą menu kontekstowego wybrać opcję Usuń.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *