r   e   k   l   a   m   a
r   e   k   l   a   m   a

Root na Maku w jednej linijce, OS X 10.10 Yosemite jest bezbronny

Strona główna AktualnościOPROGRAMOWANIE

Podejście Apple do bezpieczeństwa IT, jak i sama jakość kodu wchodzącego w skład systemów operacyjnych firmy z Cupertino pozostawiają nieco do życzenia. Ale czasem bywa jeszcze gorzej. Najnowszy exploit na Maka pokazuje, że zespół bezpieczeństwa Apple powinien jednak zająć się czymś prostszym, np. robieniem tapet. Uzyskanie uprawnień administracyjnych poprzez ten atak sprowadza się bowiem do wydania komendy mieszczącej się w jednej linijce.

Jeśli chcecie uzyskać roota w najnowszej stabilnej wersji OS X 10.10.4 Yosemite, wystarczy uruchomić powłokę systemową i wpisać następującą komendę, której autorem jest użytkownik reddita numinit. echo 'echo "$(whoami) ALL=(ALL) NOPASSWD:ALL" >&3' | DYLD_PRINT_TO_FILE=/etc/sudoers newgrp; sudo -s

Odkrywcą luki jest znany guru od systemów OS X i iOS, Stefan Esser. Na łamach swojego bloga SektionEins wyjaśnia on, że atak eskalacji uprawnień użytkownika możliwy jest dzięki wprowadzeniu w systemie Yosemite zmiennej DYLD_PRINT_TO FILE. Wskazuje ona na miejsce w systemie plików, w którym dynamiczny linker systemu może umieszczać swoje logi. Niestety Apple nie zapewniło tu żadnych zabezpieczeń dla nowej zmiennej, jej obsługę wprowadzono do głównej funkcji linkera.

r   e   k   l   a   m   a

W ten sposób linker przyjmuje wartość zmiennej nawet jeśli wskazuje na zastrzeżone pliki binarne, z flagą suid (działające z uprawnieniami roota). W ten sposób możliwe staje się tworzenie lub otwieranie do zapisu dowolnego pliku w systemie. A jako że log nigdy nie jest zamykany, otwarty deskryptor plików takiej binarki może zostać odziedziczony przez proces potomny, co otwiera drogę do wszelakich nadużyć.

I właśnie takie efektowne nadużycie pojawiło się wczoraj na reddicie. Pokazany powyżej ciąg poleceń uruchamia komendę whoami by wyświetlić nazwę użytkownika, doklejając do niej na końcu ciąg ALL=(ALL) NOPASSWD:ALL. W ten sposób uzyskujemy linię w postaci np. eimi ALL=(ALL) NOPASSWD:ALL, która zostaje przekazana do pliku wskazanego zmienną DYLD_PRINT_TO_FILE, wskazującą na listę użytkowników mających uprawnienia administracyjne. W ten sposób konto eimi nagle zyskuje możliwość uzyskania uprawnień roota bez hasła.

Następnie uruchamiany jest uprzywilejowany program z flagą suid (w tym wypadku newgrp), by zapewnić na poziomie roota dostęp do pliku sudoers, by wreszcie uruchomić sudo -s, dające dostęp do powłoki z uprawnieniami linii komend. Wszystko co nastąpi dalej zależy już od inwencji użytkownika, ma on pełną władzę nad systemem.

Co ciekawe, luka nie występuje już w wersji beta najnowszego OS X 10.11 El Capitan. Najwyraźniej Apple przy okazji prac nad nowym systemem naprawiło obsługę felernej zmiennej. Użytkownicy poprzedniej – stabilnej – wersji systemu łatki jednak nie dostali. Jeśli ktoś chce zabezpieczyć swojego Maka już dziś, niech nie ogląda się na Apple. Należy odwiedzić konto SektionEins na GitHubie i stamtąd pobrać rozszerzenie jądra SUIDguard, dzięki któremu powyższy atak będzie niemożliwy.

© dobreprogramy
r   e   k   l   a   m   a
r   e   k   l   a   m   a

Komentarze

r   e   k   l   a   m   a
r   e   k   l   a   m   a
Czy wiesz, że używamy cookies (ciasteczek)? Dowiedz się więcej o celu ich używania i zmianach ustawień.
Korzystając ze strony i asystenta pobierania wyrażasz zgodę na używanie cookies, zgodnie z aktualnymi ustawieniami przeglądarki.