Jeśli chcecie uzyskać roota w najnowszej stabilnej wersji OS X10.10.4 Yosemite, wystarczy uruchomić powłokę systemową i wpisaćnastępującą komendę, której autorem jest użytkownik redditanuminit.
echo 'echo "$(whoami) ALL=(ALL) NOPASSWD:ALL" >&3'| DYLD_PRINT_TO_FILE=/etc/sudoers newgrp; sudo -sOdkrywcąluki jest znany guru od systemów OS X i iOS, Stefan Esser. Na łamachswojego bloga SektionEins wyjaśniaon, że atak eskalacji uprawnień użytkownika możliwy jest dziękiwprowadzeniu w systemie Yosemite zmiennej DYLD_PRINT_TO FILE.Wskazuje ona na miejsce w systemie plików, w którym dynamicznylinker systemu może umieszczać swoje logi. Niestety Apple niezapewniło tu żadnych zabezpieczeń dla nowej zmiennej, jej obsługęwprowadzono do głównej funkcji linkera.
W ten sposób linker przyjmuje wartość zmiennej nawet jeśliwskazuje na zastrzeżone pliki binarne, z flagą suid (działające zuprawnieniami roota). W ten sposób możliwe staje się tworzenie lubotwieranie do zapisu dowolnego pliku w systemie. A jako że log nigdynie jest zamykany, otwarty deskryptor plików takiej binarki możezostać odziedziczony przez proces potomny, co otwiera drogę dowszelakich nadużyć.
I właśnie takie efektowne nadużycie pojawiło się wczoraj nareddicie. Pokazany powyżej ciąg poleceń uruchamia komendę whoamiby wyświetlić nazwę użytkownika, doklejając do niej na końcuciąg ALL=(ALL) NOPASSWD:ALL. W ten sposób uzyskujemy linię wpostaci np. eimi ALL=(ALL) NOPASSWD:ALL, która zostaje przekazana dopliku wskazanego zmienną DYLD_PRINT_TO_FILE, wskazującą na listęużytkowników mających uprawnienia administracyjne. W ten sposóbkonto eimi nagle zyskuje możliwość uzyskania uprawnień roota bezhasła.
Następnie uruchamiany jest uprzywilejowany program z flagą suid(w tym wypadku newgrp), by zapewnić na poziomie roota dostępdo pliku sudoers, by wreszcie uruchomić sudo -s, dające dostęp dopowłoki z uprawnieniami linii komend. Wszystko co nastąpi dalejzależy już od inwencji użytkownika, ma on pełną władzę nadsystemem.
Co ciekawe, luka nie występuje już w wersji beta najnowszego OSX 10.11 El Capitan. Najwyraźniej Apple przy okazji prac nad nowymsystemem naprawiło obsługę felernej zmiennej. Użytkownicypoprzedniej – stabilnej – wersji systemu łatki jednak niedostali. Jeśli ktoś chce zabezpieczyć swojego Maka już dziś,niech nie ogląda się na Apple. Należy odwiedzić konto SektionEinsna GitHubie i stamtąd pobrać rozszerzenie jądra SUIDguard,dzięki któremu powyższy atak będzie niemożliwy.