15-letnia luka 0day w Makach: root dla każdego szkodnika, a łatki wciąż brak

15-letnia luka 0day w Makach: root dla każdego szkodnika, a łatki wciąż brak02.01.2018 11:38

Nowy rok zaczyna się dla Apple bardzo starym bugiem. Podatnośćwystępująca w systemie macOS (który nazywał się wtedy jeszczeMac OS X) od przynajmniej 15 lat, została wykorzystana przez hakerao pseudonimie s1guza do zbudowania exploitu, pozwalającego nazdobycie uprawnień administratora przez dowolny nieuprzywilejowanyproces. Twórcy złośliwego oprogramowania na Maka mogą byćzadowoleni – w Sieci pojawił się nie tylko gotowy exploit, aleteż i kompletna dokumentacja luki. Apple jak to Apple milczy, pókico łatki brak.

Jeden mały, brzydki błąd, popełniony w czasie, gdy Makikorzystały jeszcze z architektury PowerPC. Zapewne tygodnie męczącejpracy i niezwykła chęć jej udokumentowania – rzadko się zdarzaatak tak dokładnie udokumentowany, jak zrobiłto Siguza. IOHIDFamily to rozszerzenie kernela, które dostarczaabstrakcyjny interfejs dla urządzeń interfejsu użytkownika (HID).Rozszerzenie to występuje zarówno w macOS-ie jak i iOS-ie, jednakna Maku jest obszerniejsze. Zawiera klasę o nazwie IOHIDSystem, wktórym właśnie znalazła się podatność.

W ogromnym uproszczeniu można powiedzieć, że wspomniana klasazawiera trzy klienty użytkownika, z których jeden, IOHIDUserClient,ma ogromne uprawnienia w systemie, a podczas normalnej pracy możewystępować tylko jedna jego instancja, sterowana przezWindowServer, czyli systemowy komponent rysujący wszystko co widzimyna ekranie. Cały ten system oferuje pewną ilość pamięci nakolejkę wydarzeń i dane związane z kursorem, które możeprzekazać do przestrzeni adresowej WindowServera. Mamy oczywiściefunkcje do zarządzania tą pamięcią, a jedna z nich,IOHIDSystem::initShmemsłuży do czyszczenia i inicjalizacji struktur danych. I to ona jestszczególnie interesująca, można bowiem zmieniać w niej wartośćglobalnego offsetu i zmusić wskaźnik by wskazywał gdzie indziej,niż zamierzano.

Zbudowanie exploita nie było trywialne – choćby dlatego, żeWindowServer trzyma sobie jedyną dostępną instancjeIOHIDUserClienta i trzeba mu ją wykraść. Co więcej, trzeba byłozrobić to tak, by nie potrzebować do tego roota. Haker odkryłjednak, że WindowServer na chwilę puszcza swojego klienta, wmomencie wylogowania użytkownika z systemu. Można więc wymusićwylogowanie i w tym momencie mamy już naszego klienta i manipulujemyjego pamięcią. Ale wciąż przecież trzeba być użytkownikiem, bysię wylogować – czy nie można zrobić tego lepiej?

Fuck it, dropping a macOS 0day. Happy New Year, everyone. https://t.co/oG2nOlUOjk

— Siguza (@s1guza) December 31, 2017Najwyraźniej można. Któryś z programistów macOS-a popadłbowiem w chwilowe szaleństwo, oprogramowując zachowanie okienkadialogowego potwierdzającego chęć wylogowania. Okienko to w ogólenie weryfikuje skąd przyszło żądanie wylogowania, więc wylogowaćsię może każdy proces, nawet jakieś nobody – wystarczy do tegojeden wiersz AppleScriptu.

Trzecia metoda to stworzenie programu, który działając sobie wtle, czeka na sprzyjające warunki, w końcu użytkownik swojego Makawyłączy lub zrestartuje. W tym właśnie momencie złośliwy kodmoże sobie porwać potrzebnego mu IOHIDUserClienta.

Mając już dostęp, s1guza poeksperymentował z różnymimetodami uszkadzania pamięci i analizowania jej zawartości. W gręwchodzi tu spora struktura – od macOS-a 10.12.0 do 10.13.1 idziecałe dwa gigabajty RAM. Między Sierrą a High Sierrą występowałypewne różnice, ale udało się w końcu znaleźć sposób nazmaksymalizowanie szansy wylądowania tam, gdzie pamięć zostałazmodyfikowana za pomocą przeróżnych sztuczek ze wspomnianąfunkcją IOHIDSystem::initShmem.

IOHIDeous Udostępniony przez hakera exploit składa się z trzech elementów: – poc (make poc): celuje we wszystkie wersje macOS-a, zawieszając kernel by wykazać istnienie uszkodzenia pamięci, – leak (make leak): celuje w macOS-a High Sierra, by udowodnić że nie potrzeba tu specjalnego obejścia KASLR, – hid (make hid): celuje w macOS-a Sierra i High Sierra, zapewniając pełen dostęp do systemu i wyłączając System Integrity Protection, by pokazać, że nieuprzywilejowany użytkownik może zrobić to wszystko.

Pozostaje jeszcze poradzić sobie z zabezpieczeniami samegokernela (KASLR) – co już samo w sobie było niezłym wyczynem.Proces ten zajmuje 12 kroków, prowadzących do zbudowania fałszywegozadania pod określonym adresem i zmuszenia portu zadań kernela dojego odczytania. Kolejną częścią układanki jest atak ROP(Return-oriented programming), który prowadzi do uzyskania roota, anastępnie podłączenie portu zadań kernela do przestrzeniużytkownika, zainstalowanie powłoki z uprawnieniami roota iwyłączenie obsługi podpisów plików wykonywalnych oraz blokadymodyfikacji plików systemowych. Efekt? macOS przechodzi pod pełnąkontrolę napastnika. Jedyną pociechą jest to, że nie jest to atakzdalny, exploit musi znaleźć się na maszynie ofiary.

Wraz z rosnącą popularnością Maków takich starych luk wsystemie znajdzie się pewnie jeszcze więcej. System Apple’awydaje się ogromnie skomplikowany, jest w nim pełno „ruchomych”części… a to oznacza, że wiele można w tym wszystkim popsuć.Użytkownikom można jedynie poradzić, by korzystali z antywirusówi nie uruchamiali oprogramowania z podejrzanych źródeł. Jak widaćpo tym ataku 0day, jedno kliknięcie w może doprowadzić to tego,że wasz komputer przestanie należeć do was.

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.