Jak podrabiano certyfikaty Microsoftu

Poważna luka bezpieczeństwa usług terminalowych Windows umożliwia podpisanie dowolnej aplikacji. Stwarza to zagrożenia o nieznanej dotąd skali.

W środowiskach korporacyjnych często korzysta się z usług terminalowych w środowisku serwerowym Microsoft Windows. W ten sposób można łatwo udostępnić wiele aplikacji biznesowych przez WAN lub w sieci lokalnej. Aby uruchomić środowisko terminalowe do celów udostępniania aplikacji, na serwerze musi być zainstalowany mechanizm, który kontroluje licencjonowanie korzystania z usług terminalowych. W oprogramowaniu kontrolującym licencje tkwił bardzo poważny błąd, który umożliwiał cyfrowe podpisanie praktycznie dowolnego oprogramowania. Podpisany w ten sposób program był rozpoznawany przez system Windows jako zaufane oprogramowanie Microsoftu. Niekiedy mógł on być zainstalowany także za pomocą mechanizmów Windows Update.

Wadliwy mechanizm

Poprawka jest dostępna

Microsoft opublikował już poprawkę polegającą na tym, że certyfikaty, które były wykorzystywane przez podatność zostały przeniesione do niezaufanych certyfikatów. Wszyscy użytkownicy systemu Windows, zarówno indywidualni, jak i przedsiębiorstwa, powinni tę aktualizację zainstalować tak szybko, jak to jest tylko możliwe. Podatność ta jest krytyczna, gdyż pozyskane certyfikaty są traktowane jako zaufane w nieaktualnych systemach i umożliwiają podszywanie się pod publikowane aktualizacje lub inne pliki firmy Microsoft. Publikacja w centrum odpowiedzi na zagrożenia jest oznaczona jako MSRC 2718704.

Microsoft razem z systemem Windows 2000 Server wprowadził mechanizm zarządzania licencjami terminalowymi, korzystający z oprogramowania serwera licencji terminalowych oraz protokołu MS-RDPELE. Do zarządzania licencjami wykorzystuje się mechanizm certyfikatów wystawianych przez specjalne programy nazywane urzędami certyfikacyjnymi (CA - Certificate Authority). Najważniejszy jest Microsoft CA, którego certyfikaty są uznawane za zaufane w systemie Windows. Składnik systemu Windows określany jako "Licencjonowanie usług terminalowych" lub "License server" jest de facto lokalnym urzędem certyfikacji, podrzędnym do CA Microsoftu, określanego jako Microsoft Issuing CA.

Wydawane przez lokalne CA w firmach certyfikaty X.509 są właśnie licencjami terminalowymi. Powiązanie ich z CA Microsoftu odbywa się w procesie aktywacji serwera licencji usług terminalowych. Po aktywacji certyfikat staje się częścią głównej ścieżki zaufania Microsoft Root Authority. Certyfikat ten jest w pełni zaufany i ufa mu cały system operacyjny.

Specjaliści uważają, że koncepcja ta nie była zła. Technologia związana z urzędami certyfikacji i krótkotrwałymi certyfikatami jest dobrze znana i wykorzystywana w wielu systemach. Niemniej sposób realizacji, polegający na umieszczeniu serwera licencji w łańcuchu zaufania, przechowywaniu certyfikatów w oprogramowaniu bez stosownych zabezpieczeń (DPAPI, czyli interfejs programistyczny umożliwiający bezpieczne szyfrowanie oraz odszyfrowanie danych, jest zbyt słabe) i możliwość podpisania plików z dowolną nazwą (w tym Microsoftu) sprawiają, że mamy do czynienia z podatnością systemów Windows o nieznanej dotąd skali. "Problem polega na tym, że certyfikat wystawiony na potrzeby licencjonowania usług terminalowych ma możliwość podpisywania aplikacji, co nie powinno występować. Oznacza to, że wykorzystując certyfikat, dowolny plik można podpisać w taki sposób, że wygląda on, jakby został stworzony przez firmę Microsoft. Plik ten będzie traktowany jako zaufany w systemie Windows" - mówi Maciej Iwanicki, konsultant w firmie .

Wirus "podpisany" przez Microsoft

W przypadku tak poważnej podatności należy brać pod uwagę możliwość przejęcia kontroli nad dowolnym systemem Windows. Narzędzie do certyfikacji umożliwiło utworzenie plików wykonywalnych, które będą traktowane jako zaufane przez sam system operacyjny. Ofiarą może paść także wiele aplikacji innych firm, ufających plikom podpisanym cyfrowo przez Microsoft.

Wiadomo już, że z tej metody korzystali nie tylko hakerzy. Podrabianych podpisów cyfrowych używali także cyberprzestępcy do ukrytych ataków za pomocą złośliwego oprogramowania. Mechanizm wykorzystali także twórcy wirusa Flame, który uderzył w irańskie instalacje naftowe ["Wojny w cyberprzestrzeni", CW 19/2012,http://go.computerworld.pl/62197]. Maciej Iwanicki wyjaśnia: "Złośliwe oprogramowanie Flame wykorzystało tę lukę, by podpisywać stworzone przez siebie kolejne warianty kodu. Tak utworzony plik będzie wyglądał tak, jakby został utworzony przez firmę Microsoft i, de facto, będzie traktowany jako zaufany przez cały system operacyjny. Wykorzystanie tej podatności umożliwiło również podszycie się Flame’a pod usługi aktualizacyjne Windows Update".

Szewc bez butów chodzi

Warto zwrócić uwagę, że certyfikaty były podpisane za pomocą algorytmu RSAwithMD5, a podatności na ataki kolizji skrótów w MD5 były znane od kilku lat. Podatność MD5 była dość głośna - od 2008 r. notowano ataki realizowane tą drogą. Od 15 stycznia 2009 r. w ramach projektu Microsoft Root Program gigant z Redmond nie zezwalał na publikowanie certyfikatów z użyciem MD5 przez urzędy certyfikacyjne firm trzecich. W tym samym czasie powstały certyfikaty CA Microsoftu podpisane za pomocą RSAwithMD5, czyli niezgodne z własnymi regulacjami.


TOP 200