Wie deaktiviere oder entferne ich das Root-Konto, das als Nebeneffekt dieses Sicherheitsfehlers in High Sierra erstellt wurde?

Dieser Artikel beschreibt einen Fehler , bei dem die Eingabe von root bei Aufforderung zur Entsperrung es jedem Benutzer ermöglicht, Systemeinstellungen zu entsperren. Es warnt davor:

Sie müssen dies nicht selbst tun, um es zu überprüfen. Dadurch wird ein „Root“-Konto erstellt, das andere möglicherweise nutzen können, wenn Sie es nicht deaktivieren.

Der Artikel beschreibt nicht, was zu tun ist, wenn ein übereifriger Techniker das Problem reproduziert hat und nun das Root-Konto entfernen oder deaktivieren muss.

Wie kann dieses Konto sicher deaktiviert oder entfernt werden?

Auf dieser Apple-Seite wird beschrieben, wie Sie das Konto deaktivieren, dies schützt jedoch nicht vor dem Fehler, da der Fehler das Konto nur wieder aktivieren kann. Es wird funktionieren, um das System in seinen normalen Zustand mit deaktiviertem Root wiederherzustellen, sobald der Sicherheitsfehler behoben ist.

Aktualisierung 2017-11-29 16:43 UTC

Siehe Informationen zum Sicherheitsinhalt des Sicherheitsupdates 2017-001 zum Aktualisieren von macOS High Sierra zum Schutz vor der Umgehung der Administratorauthentifizierung ohne Angabe des Administratorkennworts.

Der Titel dieser Frage ist wie derzeit angegeben ein XY, da das Entfernen oder Deaktivieren des Kontos nicht erwünscht ist.

Antworten (6)

Patch verfügbar, klicken Sie hier, oder aktualisieren Sie einfach auf der Maschine

Interessanterweise gibt es meines Wissens noch keinen Patch für die Beta- und Entwicklerversionen von OSX. Ich werde diese Antwort aktualisieren, sobald ich davon höre.

Laden Sie den Patch oben herunter. Den Rest des Beitrags der Geschichte überlassen :-)

Die CVE ist CVE-2017-13872 und NIST wird die Analyse in naher Zukunft aktualisieren.

Ursprüngliche Antwort, ohne Patch relevant

Deaktivieren Sie zunächst nicht das Root-Konto über die GUI, da ein "deaktiviertes" Root-Konto die Ursache des Problems ist.

Sie müssen den Root-Benutzer aktivieren und ihm ein Passwort geben. Dies ist wichtig , da die Schwachstelle auch remote verfügbar ist, über VNC und Apple Remote Desktop (um nur einige zu nennen) (eine andere Quelle) .

Es gibt zwei grundlegende Möglichkeiten, dies zu tun; GUI und Terminal.

Zunächst einmal GUI

Um das Root-Konto zu aktivieren, gehen Sie zu "Directory Utility", dh cmd + Leerzeichen und suchen. Drücken Sie die Sperre, um den "Admin-Modus" zu entsperren, und aktivieren Sie dann das Root-Konto durch Bearbeiten -> "Root-Benutzer aktivieren".

So aktivieren Sie root

Es sollte nach einem Root-Passwort fragen, geben Sie jetzt Ihr normales Passwort ein (damit Sie es nicht vergessen). Wenn es nicht nach einem Passwort fragt, verwenden Sie Bearbeiten -> "Root-Passwort ändern ..." oben.

Terminal

Wenn Sie eher eine Terminal-Person sind, verwenden Sie das Folgende:

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

Das reicht mit einem Terminal, das Problem mit der GUI-Methode ist, dass wir das Konto aktivieren müssen, um ein Passwort festzulegen, was wir mit dem Terminal nicht müssen.

Anmerkungen

Selbst wenn Sie ein Passwort für das Root-Konto festgelegt haben, wird Ihr Computer angreifbar, wenn Sie das Root-Konto deaktivieren. Die Deaktivierung des Root-Kontos scheint der Schuldige zu sein. Ich wiederhole also, der Root-Benutzer sollte aktiviert sein und ein Passwort haben , wenn er die GUI verwendet, während über das Terminal nur die Verwendung von ´passwd´ "ok" ist (obwohl dieser Zustand nicht nur über die GUI erreichbar ist). Es scheint, dass das "Disable Root User" in "Directory Utility" das Passwort für das Root-Konto entfernt, wodurch Sie in gewisser Weise ein root-Konto ohne Passwort erhalten, das anfällig ist.

Es scheint, als ob der Versuch, sich mit "root" in einem System-Anmeldefenster anzumelden, das Root-Konto aktiviert, wenn es zuvor deaktiviert wurde. Das heißt, mit einem deaktivierten Root-Konto müssen Sie root zweimal in ein System-Anmeldefenster eingeben, um Root-Zugriff zu erhalten, und (meinen Tests zufolge) ist das Root-Konto beim ersten Versuch aktiviert (ohne Passwort, wenn es nicht über festgelegt passwdwurde), und Beim zweiten Versuch kommst du durch.

Es scheint, dass das Problem mindestens seit dem 13. November 2017 (13. November) offen ist, als es im Apple-Support-Forum erwähnt wird .

Bitte beweisen Sie mir das Gegenteil, ich würde es wirklich begrüßen, wenn ich mich jetzt irre.

Gruseliges Update

Nach dem Aktivieren des passwortlosen Root-Kontos (dh über das Systemeinstellungsfenster und Klicken auf ein „Schloss“ und ein-, zwei- oder dreimaliges Eingeben von „root“ mit leerem Passwort (die Anzahl der Male hängt vom Ausgangszustand ab)) ist es möglich, sich anzumelden den Computer aus dem Hauptanmeldebildschirm mit "root" und einem leeren Passwort (!). SSH/Telnet scheint nicht zu funktionieren, aber Apple Remote Desktop, Screen Sharing und VNC sind anfällig.

Für Netzwerkadministratoren könnte es also interessant sein, Pakete vorübergehend an die folgenden Ports zu verwerfen:

  • 5900-5905 (ish, um sicher zu sein), um die gängigsten VNC-Ports zu erhalten. VNC beginnt standardmäßig bei 5900 und zählt aufwärts, wenn Sie mehrere Displays verwenden (allerdings ungewöhnlich). Bildschirmfreigabe und Apple Remote Desktop scheinen diese Ports ebenfalls zu verwenden ( Liste der Apple-Software-Ports )
  • 3283 und 5988 für Apple Remote Desktop ( Liste der Apple-Software-Ports )

Zusätzliche Lektüre:

Ein tapferer Versuch, auf andere Quellen zu verweisen, die sich mit dem Thema befassen. Bearbeiten und aktualisieren Sie meine Antwort, wenn Sie mehr haben.

Ok, ich verstehe, warum die Selbstantwort falsch ist. Das Deaktivieren von root nützt nichts, bis dieser Fehler behoben ist, da der Fehler selbst nur das Konto wieder aktiviert. Haben Sie einige Upvotes, damit Sie kommentieren können!
Ich bin kein Mac-Typ, aber in der *nix-Welt sollte das Deaktivieren des Root-Passworts nicht weniger sicher sein als ein sicheres Passwort. Tatsächlich ist es sehr üblich, das Passwort zu deaktivieren und die Shell auf /dev/nullroot zu setzen. Auf diese Weise erfolgt der Zugriff auf das Root-Konto über suSystemaufrufe für Benutzer mit dieser Berechtigung.
@crasic AFAIK OSX macht etwas Seltsames mit ihren Systemanmeldefenstern. Sie aktivieren anscheinend Konten im Allgemeinen oder rooten speziell, wenn sie es versuchen. Und es gibt praktisch keine Dokumentation dieses Verhaltens. Beachten Sie, dass die BSD-Besonderheiten (dh Befehlszeilen-/Bash-Nutzung) unproblematisch sind.
Sie können also mit dem Terminal-Befehl das Root-Passwort festlegen, ohne Root zu aktivieren? Das scheint die sicherste Option zu sein.
@wisbucky Absolut, das ist es sehr, aber das Aktivieren des Root- und Einstellungspassworts ist viel besser als das Deaktivieren von Root und kein Passwort. Aber meiner Erfahrung nach kann das Terminal manchmal beängstigend sein.
Leute twittern (z. B. 1 , 2 ), dass die Schwachstelle über VNC aus der Ferne ausgenutzt werden kann.
@DarkDust Die Antwort wurde entsprechend aktualisiert. Ich kann kein lokales Root-Login von Clean Slate (dh nach einem Kaltstart) erhalten, nur wenn ein Benutzer zuerst angemeldet wird. Kann das jemand verifizieren?
„Auch wenn Sie ein Passwort haben, ist Ihr Computer angreifbar, wenn Sie das Root-Konto nach dem Festlegen des Passworts deaktivieren. Ich wiederhole also, der Root-Benutzer sollte aktiviert sein und ein Passwort haben (technisch gesehen ist nur das Passwort „ok“, aber es gibt keins Weg, diesen Zustand nur mit der GUI zu erreichen)" Hier scheint ein Widerspruch zu bestehen.
@jcm Nein, es ist eigentlich nicht nur sehr schlecht formuliert, nachdem der Text ein wenig verschoben wurde. Ich werde versuchen, es ein wenig zu klären, sehen Sie in einer Minute nach?

Wenn Sie den offiziellen Patch nicht installieren können oder nicht darauf vertrauen möchten, dass er funktioniert hat, dann

Sie möchten den Root-Benutzer nicht nur auf High Sierra deaktivieren.

Um Ihren Mac zu sichern, aktivieren Sie root mit einem langen sicheren Passwort.

Wir werden dies bei der Arbeit nicht ändern, bis die nächste Vollversion für macOS herauskommt, die wahrscheinlich 10.13.2 sein wird


Wenn Sie keine Maßnahmen ergreifen, ist der Root-Benutzer standardmäßig deaktiviert, und dies ist schlecht, wenn Ihr Mac nicht korrekt gepatcht ist.

Wenn Sie möchten, können Sie die Shell optional härten, bis Apple einen offiziellen Patch oder Fix hat.

Hier ist ein großartiges Skript, um ein zufälliges Root-Passwort festzulegen und die Root-Shell /usr/bin/falseso zu ändern / einzustellen, dass sich die Root-Shell selbst dann nicht anmelden kann, wenn das Passwort erraten wird:

Es macht im Grunde drei wichtige Dinge:

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

Die UserShell-Erstellung erfolgt, wenn die Shell nicht festgelegt ist und das vollständige Skript nach einer vorhandenen Shell sucht und diese ersetzt -change, anstatt sie zu -createsenden.

Wie schütze ich mich vor der Root-Schwachstelle in macOS High Sierra?

Es ist im Allgemeinen vorzuziehen, ein Passwort nicht einmal vorübergehend auf diese Weise zu speichern. Die dcsl-Manpage schlägt vor, "das Kennwort nicht als Teil des Befehls anzugeben, und Sie werden sicher aufgefordert"
Einverstanden @JoshCaswell - es ist besser, es in einem Skript zu haben, da die Variable nicht exportiert und generiert wird. Die gute Nachricht ist, dass Apple einen offiziellen Patch hat, der diesen Hack zu einer kurzlebigen Notwendigkeit macht – wir haben dies als Prophylaxe für den viel größeren Schaden ausgeführt, der dadurch entsteht, dass das gleiche Passwort für die gesamte Flotte hartcodiert wird oder überhaupt kein Passwort vorhanden ist. Es war sicherlich ein Kompromiss und keine Lösung.
Warum haben Sie aus reiner Neugier einen Link zu dieser Frage am Ende Ihrer Antwort?
@reirab total durcheinander. Siehe Bearbeiten, um den richtigen Link zu korrigieren. Danke!

Führen Sie ein Software-Update aus dem App Store aus. Apple hat heute Morgen ein Sicherheitsupdate veröffentlicht.

Sie müssen sich als Root-Benutzer anmelden und das Passwort in ein starkes ändern. Wenn tatsächlich ein neues Konto erstellt wird (im Gegensatz zur Aktivierung des bereits vorhandenen Root-Kontos), sollten Sie dieses Konto zuerst löschen.

Siehe meine Selbstantwort. Ihr Rat, ein sicheres Passwort festzulegen, ist vernünftig, aber das Konto vollständig zu deaktivieren, scheint ein noch strengerer Schutz zu sein und OS X in seinen Standardzustand zurückzusetzen. support.apple.com/en-us/HT204012 . Würde das Festlegen eines starken Passworts verhindern, dass der beschriebene Fehler ausgenutzt wird, selbst wenn das Root-Konto wieder aktiviert wird?
Auf High Sierra, 10.13.0 und 10.13.1 möchten Sie das Root-Konto auf keinen Fall deaktivieren . Das Problem besteht darin, dass, wenn root deaktiviert ist und Sie versuchen, sich in einem beliebigen Anmeldefenster als root anzumelden, das Anmeldefenster das root-Konto mit einem leeren Passwort aktiviert . Wenn root bereits mit einem starken Passwort aktiviert ist, löscht das Anmeldefenster das Passwort nicht. Die einzige Abhilfe besteht darin , root mit einem starken Passwort zu aktivieren .

Apple hat gerade ein Update veröffentlicht, um das Problem zu beheben.

Sicherheitsupdate 2017-001 https://support.apple.com/en-us/HT208315

Um unbefugten Zugriff auf Ihre Mac-Computer zu verhindern, sollten Sie außerdem das Root-Benutzerkonto aktivieren und ein Kennwort speziell für den Root-Benutzer festlegen.

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

Wenn Ihr Root-Benutzerkonto bereits aktiv ist, stellen Sie sicher, dass Sie das Passwort ändern, nur um sicherzustellen, dass die Schwachstelle für das leere Passwort nicht gesetzt ist.

Nein! Entfernen Sie nicht das Root-Konto!

Zunächst einmal war rootes in allen Versionen von macOS, Mac OS X, Mac OS und sogar alten Versionen des Betriebssystems vorhanden. macOS hat dieses Konto kürzlich aufgrund einer Schwachstelle nicht erstellt. Es hat es nur zufällig freigelegt.

Das Entfernen rootwäre eine sehr schlechte Idee, und lassen Sie mich Ihnen sagen, warum.

Es würde macOS vollständig lahmlegen, da es kein Konto mit ausreichenden Berechtigungen zum Ausführen kritischer Dienste (wie WindowServer, auf dem die GUI ausgeführt wird) gäbe. Es gibt Sicherheitsvorkehrungen, um zu verhindern, dass ahnungslose Benutzer entfernen root, und Sie sollten nicht versuchen, sie zu umgehen.

Lassen Sie uns herausfinden, wer die allerersten Prozesse im System ausführt, die wichtigsten Prozesse (mit Activity Monitor):

kernel_task und launchd sind ebenfalls im Besitz von

Hey, es ist wieder unsere freundliche Nachbarschaft root! Der erste Prozess (mit PID 0) wird tatsächlich vom Kernel gesteuert und wird wahrscheinlich sowieso alle Berechtigungen haben, aber sein untergeordneter Prozess launchd(der für das Starten von Diensten wie dem Anmeldefenster und dem Windows-Server selbst verantwortlich ist) wird mit den Berechtigungen von gestartet root. Wenn rooter nicht vorhanden wäre, wäre dieser Prozess nie gestartet worden oder hätte keine Berechtigungen.

Sichern des Root-Kontos

Andere Antworten haben einen von Apple veröffentlichten Patch bereitgestellt, der das Problem beheben sollte. Wenn Sie es jedoch nicht installieren können oder wollen ...

Es funktioniert, weil macOS das eingegebene Passwort als „Upgrade“ erneut hasht, da das deaktivierte Konto (root) fälschlicherweise als einen alten Hash erkannt wurde. Es wird immer noch sagen, dass es falsch ist, aber das nächste Mal stimmen die Hashes überein (weil macOS es geändert hat) und es wird Sie hereinlassen.

Um zu sichern root, müssen Sie das Verzeichnisdienstprogramm verwenden. Es gibt zwei Möglichkeiten, darauf zuzugreifen:

  1. Spotlight verwenden.Starten des Verzeichnisdienstprogramms mit Spotlight
  2. Verwenden Sie den Finder. Öffnen Sie den Finder, drücken Sie Befehl+Umschalt+G (oder wählen Sie , geben Sie in /System/Library/CoreServices/Applications/ein und drücken Sie Los (oder drücken Sie die Eingabetaste). Öffnen Sie dann von dort aus das Verzeichnisdienstprogramm.Auswählen von Los Auswählen, wohin es gehen soll Verzeichnisdienstprogramm öffnen

Sobald Sie das Verzeichnisdienstprogramm geöffnet haben, müssen Sie dies tunKlicken Sie auf das Schloss, um Änderungen vorzunehmen

Nachdem Sie dies getan haben, wählen Sie Change Root Passwordoder Enable Root Useraus dem Menü Bearbeiten. Ich zeige, Change Root Passwordda mein Root-Konto bereits mit einem starken Passwort aktiviert ist.

Root-Passwort ändern auswählen

Wählen Sie ein Passwort, und jetzt funktioniert das leere Passwort nicht mehr.

Auswahl eines Passworts

Herzliche Glückwünsche! Sie sind nicht mehr anfällig für den Root-Hack.

"Reine Spekulation, das System aktiviert wahrscheinlich das Root-Konto wieder, weil Sie das richtige Passwort eingegeben haben (in diesem Fall leer). " -- nicht ganz richtig. Es gibt einen Migrationspfad zum Aktualisieren von Passwörtern mit einem alten Hashing-Mechanismus, der !(den Sie wahrscheinlich als UNIX-Typ erkennen werden) nicht richtig verarbeitet.
Siehe object-see.com/blog/blog_0x24.html für eine Ursachenanalyse.
Richtig - meine Spekulation war also nicht korrekt. Es wird also ein leeres Passwort als "Upgrade" erneut gehasht, weil das deaktivierte Konto fälschlicherweise als einen alten Hash erkannt wurde? Hab ich recht?
Theoretisch soll in diesem Codepfad überprüft werden, ob der alte Hash-Algorithmus das eingegebene Passwort validiert, und dann mit einem neuen Hash (des eingegebenen Passworts, von dem bekannt ist, dass es mit dem alten übereinstimmt) aktualisiert werden. In der Praxis prüft es nicht auf Fehler von der Funktion, die den alten Hash aus dem „ShadowHash“-Feld abrufen soll (oder es prüft vielmehr nur den Rückgabewert, aber nicht den zur Rückgabe verwendeten Referenzwert das Vergleichsergebnis) und generiert dann einen neuen Hash aus dem Passwort (leer oder nicht!).
... also, ziemlich genau, ja, du hast recht. :)