Ambienti di diagnosi e recoveryOS per i Mac dotati di processore Intel
recoveryOS
recoveryOS è completamente separato dal sistema macOS principale e tutti i suoi contenuti sono archiviati in un file immagine disco chiamato BaseSystem.dmg. Esiste anche un file BaseSystem.chunklist associato, che viene utilizzato per verificare l’integrità del file BaseSystem.dmg. Il file chunklist consiste in una serie di hash per blocchi di 10 MB del file BaseSystem.dmg. Il firmware UEFI valuta la firma del file chunklist, quindi valuta l’hash, un blocco alla volta, del file BaseSystem.dmg. Questo meccanismo aiuta a garantire la corrispondenza con il contenuto firmato presente nel file chunklist. In caso di mancata corrispondenza di uno qualsiasi di questi hash, l’avvio dal recoveryOS locale viene annullato e il firmware UEFI cerca quindi di avviare da recoveryOS tramite internet.
Se la verifica viene completata correttamente, il firmware UEFI attiva il file BaseSystem.dmg come disco RAM e avvia il boot.efi lì contenuto. Il firmware UEFI non dovrà effettuare una verifica specifica del boot.efi né il boot.efi dovrà verificare il kernel, perché la verifica dell’integrità dei contenuti completi del sistema operativo (di cui questi elementi rappresentano solo un sottoinsieme) è già avvenuta.
Strumenti di diagnosi Apple
Il processo di avvio dell’ambiente di diagnosi locale è perlopiù uguale a quello di avvio di recoveryOS. Vengono utilizzati dei file AppleDiagnostics.dmg e AppleDiagnostics.chunklist separati, che però vengono verificati nello stesso modo dei file BaseSystem. Invece di avviare il boot.efi, il firmware UEFI avvia un file che si trova all’interno dell’immagine disco (file .dmg) chiamato diags.efi, che si occupa di richiamare una varietà di altri driver UEFI con cui interfacciarsi e verificare la presenza di eventuali errori nell’hardware.
Ambiente di diagnosi e recoveryOS tramite internet
Se si è verificato un errore durante l’avvio degli ambienti di diagnosi o recupero locali, il firmware UEFI cerca di scaricare le immagini da internet. (L’utente può anche richiedere specificamente che le immagini siano scaricate da internet usando una speciale sequenza di tasti da tenere premuti durante l’avvio). La convalida dell’integrità delle immagini disco e dei file chunklist scaricati da OS Recovery Server viene effettuata nello stesso modo utilizzato per le immagini recuperate da un dispositivo di archiviazione.
Nonostante la connessione a OS Recovery Server avvenga tramite HTTP, i contenuti completi scaricati vengono comunque sottoposti alla verifica dell’integrità descritta sopra e sono quindi protetti da attacchi di hacker che dovessero assumere il controllo della rete. Nel caso in cui un singolo blocco non superi la verifica dell’integrità, la richiesta a OS Recovery Server viene effettuata altre 11 volte prima che il processo venga interrotto e venga visualizzato un errore.
Quando il recupero via internet e le modalità di diagnosi sono state aggiunte ai Mac nel 2011, è stato deciso di preferire il trasferimento tramite un protocollo più semplice come HTTP e gestire l’autenticazione dei contenuti tramite il meccanismo del chunklist, piuttosto che implementare una funzionalità più complicata come HTTPS nel firmware UEFI, aumentando le possibilità di attacco al firmware.