1 Punkte von GN⁺ 2025-03-21 | 1 Kommentare | Auf WhatsApp teilen

Passwortleck (und noch viel mehr!) unter macOS

Einführung

Dieser Artikel beschreibt die Schwachstelle CVE-2024-54471, die in Apples Sicherheitsupdates enthalten ist. Diese Schwachstelle wurde in macOS Sequoia 15.1, macOS Sonoma 14.7.1 und macOS Ventura 13.7.1 behoben. Wenn du ein macOS-Gerät verwendest, wird empfohlen, auf die neueste Version zu aktualisieren.

Was ist ein Kernel?

Der Code in einem Betriebssystem, der mit der Hardware kommuniziert und Anwendungen ein Multitasking-Modell bereitstellt, wird Kernel genannt. Der Kernel von macOS ist XNU, ein Hybrid-Kernel, der Varianten des BSD-Kernels und des Mach-Kernels enthält.

Die Geschichte von Mach

Der Mach-Kernel ist eng mit den Unix-Kriegen der 1980er- und 1990er-Jahre verflochten. Mach begann als Forschungsprojekt für Betriebssysteme an der Carnegie Mellon University und wurde im Betriebssystem NeXTSTEP eingesetzt, das letztlich die Grundlage für macOS bildete.

Warum Mach?

Mach wurde entwickelt, um die Komplexität von Entwurf und Nutzung von Unix-Systemen zu verringern. Mach besteht aus vier grundlegenden Abstraktionen, die auch im modernen macOS weiterhin verwendet werden.

Die Architektur von Mach

Vier Abstraktionen

  • Task: Eine Umgebung, in der Threads ausgeführt werden können, und die grundlegende Einheit der Ressourcenzuweisung.
  • Thread: Die grundlegende Einheit der CPU-Nutzung, die innerhalb eines Tasks mit einem unabhängigen Programmzähler arbeitet.
  • Port: Ein Kommunikationskanal für Nachrichten, der vom Kernel geschützt wird.
  • Nachricht: Eine Menge von Datenobjekten, die zur Kommunikation zwischen Threads verwendet wird.

Tasks, Ports und Port-Rechte

Ports existieren nur im Kernel-Space und werden im User-Space als Port-Rechte offengelegt. Mehrere Tasks können Senderechte für einen Port besitzen, aber das Empfangsrecht kann nur ein einziger Task haben.

Die Struktur von Nachrichten

Jede Mach-Nachricht besteht aus einem Header, optionalen Deskriptoren, einer beliebigen Payload und einem vom Kernel hinzugefügten Trailer.

Wege zum Erhalt von Senderechten

macOS verfügt über einen Bootstrap-Server, der das Empfangsrecht für Ports hält, für die alle Tasks Senderechte besitzen. Clients können beim Bootstrap-Server Senderechte für einen Mach-Service mit einem bestimmten Namen anfordern.

Mach Interface Generator (MIG)

Einführung

MIG ist ein Tool, das funktionale Schnittstellen zum Senden und Empfangen von Mach-Nachrichten erzeugt. Es stellt eine nachrichtenbasierte RPC-ähnliche Schnittstelle bereit und erhöht dadurch die Speichersicherheit.

Technische Details

MIG ist ein Wrapper für Mach-Nachrichten. Jede Funktion wird Routine genannt, und eine Menge von Routinen wird Subsystem genannt. Subsysteme werden über das Message-ID-Feld indiziert.

Schwachstellen in MIG-Servern

Sicherheit von MIG-Servern

Wenn ein MIG-Server den Absender einer Nachricht nicht überprüft, kann jeder Task mit Senderechten die Routinen des Servers aufrufen.

MIG-Server finden

Mit dem CLI-Tool ipsw lassen sich Binärdateien suchen, die das Symbol NDR_record verwenden. Das ist nützlich, um MIG-Server und -Clients zu finden.

Schwachstelle in NetAuthAgent

Einführung in NetAuthAgent

NetAuthAgent ist ein Daemon unter macOS, der Anmeldedaten für Dateiserver verarbeitet. Bevor diese Schwachstelle behoben wurde, lieferte er Server-Anmeldedaten auf Anfrage aus.

So funktioniert NetAuthAgent

NetAuthAgent verwendet den macOS-Schlüsselbund, um Anmeldedaten zu speichern. Der Schlüsselbund ist ein zentraler Secret-Manager, und jeder Eintrag hat seine eigene Access Control List.

Der MIG-Server von NetAuthAgent

NetAuthAgent stellt einen MIG-Server bereit, der beim Bootstrap-Server unter dem Namen com.apple.netauth.user.gui registriert ist. Dieser Server bietet Routinen zum Lesen, Erstellen und Überschreiben von Anmeldedaten.

Auswirkungen der Schwachstelle

Offenlegung von iCloud-API-Tokens

Diese Schwachstelle kann iCloud-API-Tokens offenlegen, wodurch Angreifer Nutzerinformationen exfiltrieren oder den Standort anderer Geräte verfolgen könnten.

Was Apple hätte tun sollen

Dieser Artikel enthält auch eine Diskussion darüber, welche Maßnahmen Apple zur Behebung dieser Schwachstelle hätte ergreifen sollen.

1 Kommentare

 
GN⁺ 2025-03-21
Hacker-News-Kommentare
  • Gut geschriebener Artikel. Er erinnert mich an den Zero-Day-Vorfall, den Apple eine Zeit lang eher herunterzuspielen versuchte. Damals konnte man den Root-Login umgehen, indem man „leeres Passwort zweimal versuchen“ nutzte. Das war wohl 2017 oder 2018

    • Wenn man den Administrator-Benutzernamen eingab und versuchte, sich mit einem leeren Passwort anzumelden, erschien zunächst eine Warnung, dass das Passwort falsch sei. Ignorierte man die Warnung und klickte ein zweites Mal auf den Login-Button, wurde man als dieser Benutzer angemeldet
    • Das Problem wurde kurz nach seiner Verbreitung in den sozialen Medien gepatcht. Es wirkt immer noch wie ein grober Fehler
    • Es scheint, als gäbe es im Authentifizierungsmechanismus des Mac noch immer Probleme. Interessant, dass das Port-System erwähnt wird. Das ist eine wenig bekannte Eigenschaft des Mach-Kernels
  • „ACLs don’t“: <a href="https://waterken.sourceforge.net/aclsdont/current.pdf" rel="nofollow">https://waterken.sourceforge.net/aclsdont/current.pdf</a>;

  • Wenn ein Mechanismus offengelegt wird, mit dem ein Prozess Keychain-Abfragen für einen anderen Prozess weiterleiten kann, kann das die Sicherheit des gesamten Systems schwächen

    • Das scheint ein Fall des Confused-Deputy-Problems zu sein: <a href="https://en.wikipedia.org/wiki/Confused_deputy_problem" rel="nofollow">https://en.wikipedia.org/wiki/Confused_deputy_problem</a>;
    • Ein fähigkeitsbasiertes Design sollte solche Probleme systematisch verhindern können
  • Es gab eine kleine Korrektur im Artikel

    • Die Berechtigungsprüfung befindet sich nicht in der Mach-Schicht des Kernels
    • <a href="https://github.com/nmggithub/wts/commit/2bdce1c0c76c7adc360e17a6a42ee547462b99d3" rel="nofollow">https://github.com/nmggithub/wts/…;
    • Es war eine Änderung um ein einziges Wort, um einen sachlichen Fehler zur Funktionsweise von XNU zu korrigieren
  • Es hat 8 Stunden gedauert, aber dieser Beitrag ist jetzt nicht mehr unter den Top 5 auf der Startseite (derzeit #27, also immer noch auf der Startseite, aber weiter unten). Danke für alle Kommentare

  • Ich frage mich, ob der Autor tatsächlichen PoC-Code bereitstellt. Ich möchte die Gegenmaßnahmen testen. Ich habe Beispielcode gesehen, aber er wirkt unvollständig

    • Ich frage mich, welches reale Risiko hier besteht
  • Sehr interessanter Artikel. Ich wusste nicht, dass es zur Entstehung von Mach und des Darwin-Kernels so viel zu erzählen gibt

  • Im Moment wirkt Mach wie eine verlässliche Quelle für Bugs in macOS. Ich weiß, dass Apple intensiv daran arbeitet, das alles abzuriegeln, aber ich frage mich, ob es einen Weg gibt, sich vollständig von Mach zu lösen

  • [tot]