W Sylwestra do publicznej wiadomości trafiła informacja zawierająca szczegóły niezałatanej luki w zabezpieczeniach systemu operacyjnego MacOS firmy Apple, którą można wykorzystać do przejęcia pełnej kontroli nad systemem.

Użytkownik o pseudonimie Siguza opublikował szczegóły niezałatanej luki i  ujawnił w repozytorium GitHub kod źródłowy wykorzystujący proof-of-concept (PoC).

Ta poważna luka w zabezpieczeniach lokalnych uprawnień (LPE) może umożliwić nieuprzywilejowanemu użytkownikowi uzyskanie dostępu do uprawnień administratora w docelowym systemie i wykonanie złośliwego kodu. Złośliwe oprogramowanie zaprojektowane w celu wykorzystania tej luki może swobodnie zainstalować się w systemie. Siguza twierdzi, że luka istnieje co najmniej od 2002 roku. Znajduje się ona w IOHIDFamily, rozszerzeniu jądra macOS, które zostało zaprojektowane dla urządzeń z interfejsem użytkownika (HID), umożliwiając atakującemu przejęcie uprawnień administratora i wykonanie dowolnego kodu w systemie.

Exploit stworzony przez Siguzę, nazwany przez niego IOHIDeous, działa na wszystkich wersjach systemu MacOS i umożliwia zapis i odczyt pluskwy w jądrze.

Dodatkowo, IOHIDeous wyłącza również funkcje System Integrity Protection (SIP) i Apple Mobile File Integrity (AMFI), które zapewniają ochronę przed złośliwym oprogramowaniem.

Kod PoC udostępniony przez Siguzę z jakiegoś powodu przestał działać na MacOS High Sierra 10.13.2 i działa tylko na MacOS High Sierra 10.13.1 i wcześniejszych wersjach systemu operacyjnego, ale prawdopodobnie kod exploita można zmodyfikować tak, aby działał również na najnowszej wersji.

Siguza w swojej publikacji zauważa, że aby jego exploit zadziałał, musi najpierw wymusić wylogowanie aktywnego użytkownika, ale można tego dokonać, gdy urządzenie, które ma być celem zostanie manualnie wyłączone lub zrestartowane.

Teoretycznie oznaczałoby to, że zagrożenie nie jest tak duże. Haker opisuje jednak kilka sposobów, dzięki którym można to obejść i dokonać ataku zdalnie. Jedna z metod wykorzystuje to, że WindowServer w momencie wylogowywania się użytkownika z systemu puszcza swojego klienta na kilka sekund. Wówczas można przejąć jego konto i wymusić wylogowanie i uruchomić exploita.

Kolejny sposób pozwala wykorzystać exploita z poziomu nieuprawnionego konta, musimy tylko oszukać AppleScript. Loginwindow implementuje polecenie “AppleEventReallyLogOut” lub “aevtrlgo”, co pozwala na wylogowanie aktywnego użytkownika bez uruchomienia okienka potwierdzającego chęć wylogowania i bez weryfikacji skąd przychodzi polecenie. Ta metoda nie działa jednak za każdym razem, gdyż jeśli użytkownik jest w trakcie pracy na niezapisanych plikach, uruchomione programy mogą zatrzymać wylogowanie z systemu lub prosić o potwierdzenie chęci porzucenia niezapisanych zmian.

Ostatni sposób proponowany przez Siguzę to wykorzystanie programu, który zaimplementowany na komputerze potencjalnej ofiary uruchamia się w tle, czekając na okazję, aby użytkownik wyłączył lub ponownie uruchomił swój komputer. Wówczas program uruchamia się i przejmuje potrzebne mu IOHIDUserClient.

Według doniesień Apple już pracuje nad patchem, który zabezpieczy ich oprogramowanie przed tym zagrożeniem.