Kritischer Fehler, der zum Glück nur wenige betrifft: "sudo" erlaubt Ausführung mit höheren Privilegien
Das "sudo"-Kommando erlaubt es, ein Programm mit den Privilegien eines anderen Nutzers auszuführen. Früher stand "sudo" für "superuser do" – da "sudo" Programme nur mit Superuser-Privilegien ausführen konnte. Doch "sudo" wurde erweitert und konnte fortan auch Programme mit den Rechten anderer Nutzer-Accounts ausführen. Nun aber deckte Apple selbst eine mögliche Sicherheitslücke in sudo auf, welche sich aber glücklicherweise in der Standard-Konfiguration von macOS nicht ausnutzen lässt.
Beim Sudo-Kommando vor Version 1.8.26 lässt sich ein möglicher Puffer-Überlauf ausnutzen, indem man eine sehr lange Zeichenfolge bei der Passwort-Abfrage eingibt. Dies lässt sich über ein simples Terminal-Kommando realisieren:
perl -e 'print(("A" x 100 . "\x{00}") x 50)' | sudo -S id
Hier kommt es zu einem kontrollierten Puffer-Überlauf, welcher dazu missbraucht werden kann, Code mit Superuser-Rechten auszuführen – völlig ohne das Passwort eines Nutzers mit Administrationsrechten. Glücklicherweise erfordert dieser Angriff aber, dass eine bestimmte Konfiguration für "sudo" gesetzt ist: pwfeedback. Diese Option bewirkt, dass man bei der Passworteingabe via "sudo" im Terminal die Anzahl der Zeichen des Passwortes sieht – in der Standardkonfiguration wird kein interaktives Feedback bei der Eingabe des Passwortes gezeigt. In macOS ist diese Option standardmäßig deaktiviert.
Will man überprüfen, ob die Option aktiviert ist, muss man folgende Zeile im Terminal gefolgt vom Passwort eingeben:
sudo -l
Findet man daraufhin die Option "pwfeedback", ist diese aktiv und somit "sudo" angreifbar. Hier bestehen nun zwei mögliche Optionen. Die einfachste ist, auf macOS Catalina 10.15.3 zu upgraden oder die Sicherheitsupdates für 10.13.6 und 10.14.6 einzuspielen – hier wurde "sudo" auf Version 1.8.31 aktualisiert, in welcher der Mangel behoben ist. Die zweite Möglichkeit ist, die "sudoers"-Datei, zu finden unter /etc/sudoers, anzupassen und die entsprechende Option zu entfernen.
Der Fehler wurde ursprünglich von
Joe Vennix, Mitarbeiter in Apples Sicherheitsteam gefunden und gemeldet. Vennix fand bereits im letzten Jahr einen Mangel in "sudo": Gibt man eine nicht valide Nutzer-ID-Nummer an (beispielsweise -1), kann man dies ebenfalls ausnutzen, um Programme mit höheren Privilegien auszuführen.