Jak mogę wyłączyć lub usunąć konto root utworzone jako efekt uboczny tego błędu bezpieczeństwa High Sierra?

40

W tym artykule opisano błąd polegający na tym, że wprowadzenie roota po wyświetleniu monitu o odblokowanie umożliwia każdemu użytkownikowi odblokowanie preferencji systemowych. Ostrzega, że:

Nie trzeba tego robić samodzielnie, aby to zweryfikować. Takie postępowanie tworzy konto „root”, z którego inni mogą korzystać, jeśli go nie wyłączysz.

W tym artykule nie opisano, co zrobić, jeśli nadmiernie chętny inżynier odtworzył problem i teraz musi usunąć lub wyłączyć konto root.

W jaki sposób można bezpiecznie wyłączyć lub usunąć to konto?

Ta strona Apple opisuje, jak wyłączyć konto, ale to nie chroni przed błędem, ponieważ błąd może po prostu ponownie włączyć konto. Będzie działać, aby przywrócić system do normalnego stanu z wyłączonym rootem po usunięciu błędu bezpieczeństwa.

Aktualizacja 29.11.2017, 16:43 UTC

Zobacz Informacje o zawartości związanej z zabezpieczeniami w aktualizacji zabezpieczeń 2017-001 w celu zaktualizowania systemu macOS High Sierra w celu ochrony przed obejściem uwierzytelnienia administratora bez podania hasła administratora.

Freiheit
źródło
Tytuł tego pytania to XY, jak obecnie stwierdzono, ponieważ usunięcie lub wyłączenie konta nie jest pożądane.
Monty Harder

Odpowiedzi:

40

Łatka jest dostępna, kliknij tutaj lub po prostu zaktualizuj na maszynie

Co ciekawe, o ile wiem, nie ma łatki dla wersji beta i deweloperskich OSX. Zaktualizuję tę odpowiedź, jak tylko o nich usłyszę.

Pobierz łatkę powyżej. Pozostawiając resztę postu dla historii :-)

CVE to CVE-2017-13872, a NIST zaktualizuje analizę w najbliższej przyszłości.

Oryginalna odpowiedź, bez poprawek

Po pierwsze, nie wyłączaj konta root za pomocą GUI, ponieważ przyczyną problemu jest posiadanie konta root „wyłączonego”.

Należy włączyć użytkownika root i podać mu hasło. Jest to ważne , ponieważ luka jest dostępna również zdalnie, za pośrednictwem VNC i Apple Remote Desktop (aby wymienić tylko kilka) (inne źródło) .

Można to zrobić na dwa podstawowe sposoby; GUI i terminal.

Po pierwsze, GUI

Aby włączyć konto roota, przejdź do „Directory Utility”, tj. Cmd + spacja i wyszukiwanie. Naciśnij blokadę, aby odblokować „tryb administratora”, a następnie włącz konto root poprzez edycję -> „Włącz użytkownika root”.

Jak włączyć root?

Powinien prosić o hasło roota, na razie wprowadź swoje normalne hasło (abyś go nie zapomniał). Jeśli nie prosi o hasło, użyj Edycji -> „Zmień hasło roota” powyżej.

Terminal

Jeśli jesteś bardziej osobą terminalną, skorzystaj z poniższych:

sudo passwd -u root
## Enter passwords as needed.... 
## (if you are using the terminal you should know what you are doing...)

To wystarcza w przypadku terminala, problem ze sposobem GUI polega na tym, że musimy umożliwić konto ustawienie hasła, czego nie musimy robić z terminalem.

Notatki

Nawet jeśli masz ustawione hasło do konta root, twój komputer stanie się podatny, jeśli wyłączysz konto root. Sprawą wydaje się być wyłączenie konta root. Powtarzam, więc użytkownik root powinien być włączony i mieć hasło, jeśli używasz GUI, podczas gdy przez terminal tylko używając „passwd” jest „ok” (chociaż ten stan jest nieosiągalny tylko przez GUI). Wygląda na to, że „Wyłącz root użytkownika” w „Directory Utility” usuwa hasło do konta root, w pewnym sensie dając ci konto root bez hasła, które jest podatne na atak.

Wygląda na to, że próba zalogowania się przy użyciu „root” w oknie logowania do systemu włącza konto roota, jeśli zostało wcześniej wyłączone. Tj. Z wyłączonym kontem root musisz wprowadzić root dwa razy w okienkach logowania systemu, aby uzyskać dostęp do roota i (zgodnie z moimi testami) przy pierwszej próbie konto root jest włączone (bez hasła, jeśli nie zostało ustawione przez passwd), i przy drugiej próbie przejścia.

Wygląda na to, że problem jest otwarty od co najmniej 13.11.2017 (13 listopada), kiedy wspomniano o nim na forum wsparcia Apple .

Proszę, udowodnij, że się mylę, naprawdę doceniłbym teraz, że się mylę.

Straszna aktualizacja

Po włączeniu konta roota bez hasła (tj. Za pomocą panelu preferencji systemowych i kliknięciu „blokady” i wpisaniu „root” pustym hasłem raz, dwa lub trzy razy (liczba razy zależy od stanu początkowego)) można zalogować się do komputer z głównego ekranu logowania przy użyciu „root” i pustego hasła (!). Wydaje się, że SSH / Telnet nie działa, ale Apple Remote Desktop, Screen Sharing i VNC są podatne na ataki.

Dlatego dla administratorów sieci może być interesujące tymczasowe upuszczenie pakietów do następujących portów:

  • 5900-5905 (aby być bezpiecznym ninja), aby uzyskać najpopularniejsze porty VNC. VNC uruchamia się domyślnie od 5900 i wylicza w górę, jeśli używasz wielu wyświetlaczy (choć jest to rzadkie). Udostępnianie ekranu i Apple Remote Desktop wydaje się również, aby korzystać z tych portów ( listy portów oprogramowania firmy Apple )
  • 3283 i 5988 dla Apple Remote Desktop ( lista portów oprogramowania Apple )

Dodatkowe czytanie:

Odważna próba odniesienia się do innych źródeł zajmujących się tym problemem. Edytuj i zaktualizuj moją odpowiedź, jeśli masz więcej.

Flindeberg
źródło
5
Ok, rozumiem, dlaczego odpowiedź na pytanie jest błędna. Wyłączenie roota nie przynosi żadnej korzyści, dopóki błąd nie zostanie naprawiony, ponieważ sam błąd po prostu ponownie włączy konto. Poproś o opinie, aby móc komentować!
Freiheit
1
Nie jestem facetem od komputerów Mac, ale w świecie * nix wyłączenie hasła roota nie powinno być mniej bezpieczne niż posiadanie bezpiecznego hasła. W rzeczywistości bardzo często wyłącza się hasło i ustawia powłokę /dev/nullna root. W ten sposób dostęp do konta root odbywa się poprzez susyscalls dla użytkowników z tym uprawnieniem.
krytyczny
1
@crasic AFAIK OSX robi coś dziwnego z oknami logowania do systemu. Najwyraźniej włączają konta w ogóle lub root w określonych, jeśli próbowano. I nie ma praktycznie żadnej dokumentacji tego zachowania. Zauważ, że specyfika BSD (tj. Użycie linii poleceń / bash) jest bezproblemowa.
flindeberg
Więc za pomocą polecenia Terminal możesz ustawić hasło roota bez włączania roota? To wydaje się najbezpieczniejszą opcją.
wisbucky,
1
@ jcm Nie, tak naprawdę to nie jest po prostu źle sformułowane po przesunięciu tekstu. Spróbuję to trochę wyczyścić, zajrzyj za minutę?
flindeberg
10

Jeśli nie możesz zainstalować oficjalnej łaty lub nie chcesz ufać, że działała, to

Nie chcesz wyłączać użytkownika root tylko w High Sierra.

Aby zabezpieczyć komputer Mac, włącz root z długim bezpiecznym hasłem.

Nie zmieniamy tego w pracy, dopóki nie pojawi się kolejna pełna wersja wydania dla systemu macOS, która prawdopodobnie wynosiłaby 10.13.2


Jeśli nie podejmiesz żadnych działań, użytkownik root zostanie wyłączony po wyjęciu z pudełka, a to źle, jeśli komputer Mac nie zostanie poprawnie załatany.

Jeśli chcesz, opcjonalnie utwardzaj powłokę, aż Apple ma oficjalną łatkę lub poprawkę.

Oto świetny skrypt do ustawiania losowego hasła roota i zmiany / ustawiania powłoki roota /usr/bin/falsetak, aby nawet jeśli hasło zostało odgadnięte, powłoka roota nie może się zalogować:

Zasadniczo robi trzy kluczowe rzeczy:

rootpassword=$(openssl rand -base64 32)
/usr/bin/dscl . -passwd /Users/root "$rootpassword"
/usr/bin/dscl . -create /Users/root UserShell /usr/bin/false

Tworzenie UserShell ma miejsce, jeśli powłoka nie jest ustawiona, a pełny skrypt sprawdza istniejącą powłokę i -changees ją zamiast -createją ing.

Jak chronić się przed podatnością na rootowanie w macOS High Sierra?

bmike
źródło
1
Zasadniczo lepiej nie przechowywać hasła nawet tymczasowo w ten sposób. Strona podręcznika dcsl sugeruje „nie podawaj hasła jako części polecenia, a zostaniesz bezpiecznie poproszony”
Josh Caswell
1
Uzgodniony @JoshCaswell - posiadanie go w skrypcie jest lepsze, ponieważ zmienna nie jest eksportowana i generowana. Dobrą wiadomością jest to, że Apple ma oficjalną łatkę, która sprawia, że ​​ten hack jest krótkotrwałą koniecznością - uruchomiliśmy to jako profilaktykę znacznie większej szkody wynikającej z twardego kodowania tego samego hasła we flocie lub braku hasła. Z pewnością był to kompromis, a nie rozwiązanie.
bmike
Z czystej ciekawości, dlaczego masz link do tego pytania na końcu swojej odpowiedzi?
reirab
1
@reirab całkowicie zawiedli. Zobacz edycję, aby naprawić odpowiedni link. Dzięki!
bmike
0

Musisz zalogować się jako użytkownik root i zmienić hasło na coś silnego. Jeśli faktycznie tworzy ono nowe konto (w przeciwieństwie do włączenia już istniejącego konta root), należy je najpierw usunąć.

moneyt
źródło
Zobacz moją odpowiedź. Twoja rada dotycząca ustawienia silnego hasła jest rozsądna, ale całkowite wyłączenie konta wydaje się być jeszcze bardziej rygorystyczną ochroną i przywraca OS X do stanu domyślnego. support.apple.com/en-us/HT204012 . Czy ustawienie silnej ochrony hasłem przed wykorzystaniem opisanego błędu, nawet jeśli konto root zostanie ponownie włączone?
Freiheit,
W High Sierra, 10.13.0 i 10,13.1 absolutnie nie chcesz wyłączać konta root. Problem polega na tym, że jeśli root jest wyłączony i spróbujesz użyć dowolnego okna logowania do zalogowania się jako root, okno logowania włączy konto root z pustym hasłem. Jeśli root jest już włączony z silnym hasłem, okno logowania nie usuwa hasła. Jedynym ograniczeniem jest włączenie roota z silnym hasłem .
Brian Reiter
0

Firma Apple właśnie wydała aktualizację, aby rozwiązać problem.

Aktualizacja zabezpieczeń 2017-001 https://support.apple.com/en-us/HT208315

Aby zapobiec nieautoryzowanemu dostępowi do komputerów Mac, należy włączyć konto użytkownika root i ustawić hasło specjalnie dla użytkownika root.

https://support.apple.com/en-ph/HT204012

Jeśli Twoje konto użytkownika root jest już aktywne, upewnij się, że zmieniłeś hasło, aby upewnić się, że nie jest ustawiona luka w zabezpieczeniach hasła pustego.

Melvin Jefferson
źródło
0

Nie! Nie usuwaj konta roota!

Przede wszystkim rootbył obecny we wszystkich wersjach macOS, Mac OS X, Mac OS, a nawet w starożytnych wersjach systemu operacyjnego. macOS nie utworzył ostatnio tego konta z powodu podatności. Po prostu odsłonił go przypadkiem.

Usunięcie rootbyłoby bardzo złym pomysłem i powiem ci dlaczego.

To całkowicie sparaliżuje macOS, ponieważ nie byłoby konta z wystarczającymi uprawnieniami do uruchamiania krytycznych usług (takich jak WindowServer, który uruchamia GUI). Istnieją zabezpieczenia zapobiegające usuwaniu nieświadomych użytkowników rooti nie należy ich omijać.

Dowiedzmy się, kto uruchamia pierwsze procesy w systemie, najważniejsze procesy (za pomocą Monitora aktywności):

Kernel_task i launchd są również własnością

Hej, to rootznowu nasza przyjazna okolica ! Pierwszy proces (z PID 0) jest faktycznie kontrolowany przez jądro i prawdopodobnie będzie miał pełne uprawnienia, ale jego proces potomny launchd(odpowiedzialny za uruchamianie usług takich jak okno logowania i sam serwer okien) jest uruchamiany z uprawnieniami root. Gdyby rootnie istniał, proces ten nigdy by się nie rozpoczął lub nie miałby żadnych uprawnień.

Zabezpieczanie konta root

Inne odpowiedzi dostarczyły łatkę wydaną przez Apple, która powinna rozwiązać problem. Jeśli jednak nie możesz lub nie chcesz go zainstalować ...

Działa, ponieważ macOS ponownie hashuje wprowadzone hasło jako „aktualizację”, ponieważ wyłączone konto (root) zostało nieprawidłowo wykryte jako posiadające stary skrót. Nadal będzie mówić, że jest niepoprawny, ale następnym razem skróty będą pasować (ponieważ macOS to zmienił) i pozwoli ci wejść.

Aby zabezpieczyć root, będziesz musiał użyć Directory Utility. Istnieją dwa sposoby dostępu do niego:

  1. Użyj Spotlight. Uruchamianie programu Directory Utility przy użyciu narzędzia Spotlight
  2. Użyj Findera. Otwórz Finder, naciśnij klawisze Command + Shift + G (lub wybierz, wprowadź /System/Library/CoreServices/Applications/i naciśnij Idź (lub naciśnij Enter). Następnie otwórz Narzędzie katalogu.Wybierz Idź Wybór dokąd iść Otwieranie narzędzia Directory Directory

Po otwarciu Directory Utility musisz to zrobić kliknij blokadę, aby wprowadzić zmiany

Po wykonaniu tej czynności wybierz Change Root Passwordlub Enable Root Userz menu Edycja. Wyświetlam się, Change Root Passwordponieważ moje konto root jest już włączone z silnym hasłem.

Wybieranie Zmień hasło roota

Wybierz hasło, a teraz puste hasło nie będzie już działać.

Wybieranie hasła

Gratulacje! Nie jesteś już podatny na włamanie do roota.

Dev
źródło
„Zgadując czystą spekulacją, system prawdopodobnie ponownie włącza konto root, ponieważ wpisałeś poprawne hasło (w tym przypadku puste).” - niezupełnie poprawnie. Istnieje ścieżka migracji do aktualizacji haseł przy użyciu starego mechanizmu mieszającego, który nie obsługuje !(który, jako typ UNIX, prawdopodobnie rozpoznasz) poprawnie.
Charles Duffy
Zobacz objective-see.com/blog/blog_0x24.html do analizy przyczyn.
Charles Duffy
Racja - więc moje spekulacje nie były dokładne. Czyli przetasowuje puste hasło jako „uaktualnienie”, ponieważ wyłączone konto zostało nieprawidłowo wykryte jako posiadające stary skrót? Mam rację?
Dev
Teoretycznie to, co powinno zrobić w tej ścieżce kodowej, to sprawdzenie, czy stary algorytm skrótu sprawdza poprawność wprowadzonego hasła, a następnie aktualizacja z nowym hashem (wpisanego hasła, o którym wiadomo, że pasuje do starego). W praktyce nie sprawdza błędów funkcji, która ma odzyskać stary skrót z pola „ShadowHash” (a raczej sprawdza tylko wartość zwracaną, ale nie wartość przekazywaną przez referencję użytą do zwrócenia wynik porównania), a następnie generuje nowy hash na podstawie hasła (puste lub nie!).
Charles Duffy,
... więc właściwie tak, masz rację. :)
Charles Duffy,