recoveryOS und Diagnoseumgebungen bei Intel-basierten Mac-Computern
recoveryOS
Das recoveryOS ist völlig separat vom Haupt-macOS und sein gesamter Inhalt ist in einer Image-Datei namens „BaseSystem.dmg“ gespeichert. Die ebenfalls zugeordnete Datei „BaseSystem.chunklist“ wird verwendet, um die Integrität der Datei „BaseSystem.dmg“ zu überprüfen. Diese „chunklist“ besteht aus einer Reihe von Hash-Werten für 10-MB-Blöcke der Datei „BaseSystem.dmg“. Die UEFI-Firmware (Unified Extensible Firmware Interface) evaluiert zuerst die Signatur der chunklist-Datei und dann den Hash-Wert für jeweils einen Block (oder „Chunk“) der Datei „BaseSystem.dmg“. Dadurch soll sichergestellt werden, dass dieser Hash dem signierten Inhalt in der chunklist-Datei entspricht. Ergibt sich bei einem dieser Hash-Werte keine Übereinstimmung, wird das Starten der lokalen recoveryOS-Software abgebrochen. Danach versucht die UEFI-Firmware, von der recoveryOS-Version im Internet zu starten.
Wenn die Überprüfung erfolgreich abgeschlossen wird, aktiviert die UEFI-Firmware die Image-Datei „BaseSystem.dmg“ als RAM und startet die darin enthaltene Datei „boot.efi“. Da der gesamte Inhalt des Betriebssystems (von dem diese Elemente lediglich eine Untergruppe bilden) bereits auf seine Integrität überprüft wurde, ist es weder erforderlich, dass die UEFI-Firmware boot.efi prüft, noch dass boot.efi den Kernel prüft.
Apple-Diagnose
Das Verfahren zum Starten der lokalen Diagnoseumgebung ist größtenteils identisch mit dem beim Starten des recoveryOS. Es werden separate Dateien „AppleDiagnostics.dmg“ und „AppleDiagnostics.chunklist“ verwendet, wobei diese jedoch auf die gleiche Weise überprüft werden wie die BaseSystem-Dateien. Anstatt boot.efi zu starten, startet die UEFI-Firmware innerhalb der Image-Datei (.dmg-Datei) eine Datei namens „diags.efi“. Diese Datei ist wiederum verantwortlich dafür, eine Reihe anderer UEFI-Treiber aufzurufen, die mit der Hardware interagieren und nach Fehlern in der Hardware suchen können.
recoveryOS aus dem Internet und Diagnoseumgebungen
Wenn beim Starten der lokalen Wiederherstellungs- oder Diagnoseumgebungen ein Fehler auftritt, versucht die UEFI-Firmware, die Image-Dateien stattdessen aus dem Internet zu laden. (Darüber hinaus kann ein Benutzer explizit fordern, dass die Image-Dateien aus dem Internet abgerufen werden. Dazu muss er beim Starten eine bestimmte Tastenkombination gedrückt halten.) Die Integritätsüberprüfung der Image-Dateien und Chunklists, die vom OS-Wiederherstellungsserver geladen werden, erfolgt auf die gleiche Weise wie bei Image-Dateien, die von einem Speichergerät abgerufen werden.
Auch wenn die Verbindung zum OS-Wiederherstellungsserver mittels HTTP erfolgt, werden alle geladenen Inhalte wie oben beschrieben weiterhin auf ihre Integrität überprüft. Daher bieten sie keine Angriffsfläche für Manipulationsversuche durch einen Angreifer, der die Kontrolle über das Netzwerk erlangt hat. Sollte ein einzelner Block die Integritätsprüfung nicht bestehen, wird er vom OS-Wiederherstellungsserver maximal 11-mal neu angefordert, bevor der Vorgang abgebrochen und eine Fehlermeldung angezeigt wird.
Als 2011 die Wiederherstellung aus dem Internet und die Diagnosemodi für Mac-Computer eingeführt wurden, kam man zu der Entscheidung, dass es besser sei, für die UEFI-Firmware das einfachere HTTP-Transportprotokoll zu verwenden und die Authentifizierung von Inhalten mithilfe des Chunklist-Mechanismus vorzunehmen, anstatt die kompliziertere HTTPS-Funktionalität zu verwenden, durch die die potenzielle Angriffsfläche der Firmware vergrößert würde.