autor: Konrad Hazi
Prawie 20-letnia luka bezpieczeństwa odkryta w systemach Windows
Członek grupy Google Project Zero - Tavis Ormandy - odkrył w systemach z rodziny Windows lukę bezpieczeństwa, która pozwala na eskalację uprawnień użytkownika do poziomu SYSTEM. Jak się okazuje, jej początki sięgają Windowsa XP.
Specjalista od bezpieczeństwa IT należący do grupy Google Project Zero - Tavis Ormandy - odkrył bardzo poważną lukę bezpieczeństwa, na którą użytkownicy Windowsa są narażeni od prawie 20 lat. Zagrożenie dotyczy wszystkich wydań systemu począwszy od XP, aż po powszechnie wykorzystywaną dziś „dziesiątkę”.
Autor odkrycia informował o błędzie Microsoft, jednak ten nic nie robił przez 90 dni. W związku z tym do sieci trafił opis procesu umożliwiającego eskalację uprawnień użytkownika do poziomu SYSTEM oraz dowody (w tym przygotowane narzędzia) potwierdzające istnienie dziury. Microsoft wypuścił łatkę w ostatniej chwili, jednak nie wiadomo dokładnie, co naprawia.
Dlaczego nikt wcześniej nie odkrył tego problemu? Trudno powiedzieć. Możliwe, że wszyscy zakładali, że próżno szukać dziur w miejscu, które po prostu musi być bardzo dobrze zabezpieczone.
O co chodzi?
System Windows pozwala otwartym okienkom komunikować się ze sobą. Może się jednak zdarzyć, że dwa programy uruchomione są w dwóch różnych kontekstach - jeden ze standardowymi uprawnieniami użytkownika, drugi zaś (na przykład wiersz poleceń) z uprawnieniami administratora. W takiej sytuacji, by uniemożliwić potencjalny atak z wykorzystaniem wiadomości przesyłanych przez okna, mechanizm User Interface Privilege Isolation blokuje taką możliwość. Przynajmniej w teorii.
Nie miałoby to sensu, gdyby okno bez przywilejów mogłoby wysyłać polecenia uprzywilejowanemu oknu i temu zapobiega User Interface Privilege Isolation. Narzędzia pokazały jednak, że aplikacje mogły wysyłać komunikaty w zakresie do 0xCNNN większości z przetestowanych programów - nawet tak proste aplikacje jak Notatnik. Nie sądziłem, że numery wiadomości mogą sięgać tak wysoko! (W systemie Windows różne rodzaje komunikacji mają przydzielone osobne zakresy numeracji wiadomości i okazuje się, że zabezpieczenia działają wybiórczo – przyp. red.)
Pozostało zatem znaleźć odpowiedź na pytanie, dlaczego wiadomości są przepuszczane, jednak nie było to łatwe zadanie i zajęło kilka tygodni. Przyczyny problemu Ormandy znalazł ostatecznie w komponencie MSCTF, o którym wiadomo stosunkowo niewiele, pomimo, że jest istotnym elementem systemu.
Biblioteka ta odpowiada za tworzenie wiadomości oraz zmienianie ich filtrów. Wychodzi na to, że CTF jest częścią Windows Text Services Framework. TSF odpowiada zaś za metody wprowadzania, układy klawiatury, procesowanie tekstu i tak dalej. (...)
Wystarczy powiedzieć, że CTF jest rozbudowany i złożony. Mechanizm CTF został najpewniej stworzony do obsługi LPC (lokalnej komunikacji międzyprocesowej - przyp. red.) w systemach Windows NT i później przemianowany na ALPC począwszy od Visty. Kod jest wyraźnie naznaczony decyzjami projektowymi z przeszłości.
Tańce, hulanka, swawola…
Sam fakt, że biblioteka ma sporo historycznych naleciałości nie jest jednak tak istotnym problemem jak to, że komponent CTF zupełnie nie ogarnia uwierzytelniania procesów, które korzystają z jego dobrodziejstw.
Dowolna aplikacja, dowolny użytkownik, a nawet procesy uruchomione w izolowanym środowisku mogą podpiąć się do dowolnej sesji CTF. Mają one po prostu przedstawić swój identyfikator wątku, identyfikator procesu oraz "uchwyt okna" (HWND), jednak nie ma żadnej autentykacji, przez co można najzwyczajniej w świecie kłamać.
Powyższy film prezentuje eskalację uprawnień z wykorzystaniem przygotowanych skryptów. Teoretycznie Microsoft załatał już te luki, jednak Ormandy nie jest co do tego przekonany.
Czekali dosłownie do ostatniej sekundy, więc nie miałem możliwości przejrzeć jeszcze tych łatek. Rozumiem, że uaktualnienie nie będzie jeszcze kompletne, jednak powinno naprawić najważniejsze wektory. Nie widziałem jeszcze aktualizacji, więc nie mam pewności. Wychodzi na to, że dało się komunikować między sesjami oraz naruszać granice bezpieczeństwa w NT przez prawie dwadzieścia lat i nikt tego nie zauważył. Teraz, gdy powstały odpowiednie narzędzia trudniej będzie takim błędom się schować - podsumował Ormandy.
Ciekawe czy Microsoft postanowi zabrać w tej sprawie głos i jakie będą dalsze kroki twórców Windowsa. Pozostaje mieć nadzieję, że dziury zostaną faktycznie załatane, a znalezienie błędu w tak istotnym komponencie systemu nie doprowadzi do otwarcia swoistej puszki Pandory i wysypu kolejnych podobnych zagrożeń.