Sicurezza della ROM opzionale in macOS
Nota: le ROM opzionali non sono attualmente supportate sui Mac dotati di chip Apple.
Sicurezza della ROM opzionale sui Mac con chip di sicurezza Apple T2
Sia i dispositivi Thunderbolt che PCIe possono avere una ROM opzionale (OROM) collegata fisicamente al dispositivo (in genere non si tratta di una vera e propria ROM, ma di un chip riscrivibile che contiene il firmware). Sui sistemi basati su UEFI, tale firmware normalmente è un driver UEFI, che viene letto dal firmware UEFI ed eseguito. Il codice eseguito deve inizializzare e configurare l’hardware da cui viene recuperato, in modo da renderlo utilizzabile dal resto del firmware. Si tratta di una funzionalità necessaria perché l’hardware specializzato di terze parti possa essere caricato e funzionare durante le prime fasi di avvio, per esempio per l’avvio da array RAID esterni.
Tuttavia, dal momento che le ROM opzionali sono generalmente riscrivibili, se un hacker sovrascrive la ROM opzionale di una periferica valida, il suo codice verrà eseguito nelle prime fasi del processo di avvio, consentendogli di alterare l’ambiente di esecuzione e di violare l’integrità del software caricato successivamente. Allo stesso modo, se l’hacker introduce il proprio codice dannoso nel sistema, sarà in grado anche di eseguire del codice dannoso.
In macOS 10.12.3, il comportamento dei computer Mac immessi sul mercato dopo il 2011 è stato modificato per non eseguire le ROM opzionali di default al momento dell’avvio del Mac, salvo nei casi in cui viene premuta una determinata combinazione di tasti. In questo modo i computer venivano protetti dall’immissione involontaria di OROM dannose nella sequenza di avvio di macOS. È stato modificato anche il comportamento di default di Utility Password Firmware in modo che, quando l’utente impostava una password per il firmware, le OROM non potessero essere eseguite anche se la combinazione di tasti era premuta. Questa misura di sicurezza proteggeva nei casi in cui un hacker, fisicamente presente, tentasse di introdurre un’OROM dannosa. Gli utenti che devono comunque eseguire le OROM quando hanno una password del firmware impostata possono configurare un’opzione non attiva di default tramite lo strumento a linea di comando firmwarepasswd
in macOS.
Sicurezza della sandbox dell’OROM
In macOS 10.15, il firmware UEFI è stato aggiornato per includere un meccanismo di sandbox e per diminuire i privilegi delle ROM opzionali. Il firmware UEFI normalmente esegue tutto il codice, ROM opzionali incluse, al livello di privilegio massimo della CPU, chiamato “livello 0”, e ha un’unica memoria virtuale condivisa per tutto il codice e tutti i dati. Il livello 0 è il livello di privilegio in cui viene eseguito il kernel di macOS, mentre il livello di privilegio più basso, ossia il livello 3, è quello in cui vengono eseguite le app. La sandbox dell’OROM riduce i privilegi delle OROM utilizzando una separazione della memoria virtuale allo stesso modo del kernel e facendo quindi in modo che le OROM siano eseguite al livello 3.
La sandbox limita notevolmente sia le interfacce che possono essere chiamate dalle OROM (in modo simile al sistema di filtraggio delle chiamate adottato dai kernel) sia il tipo di dispositivo a nome di cui un’OROM può registrarsi (in modo simile all’approvazione delle app). Il vantaggio di questo approccio è che le OROM dannose non possono più scrivere direttamente in nessuna posizione all’interno del livello 0. Esse sono invece limitate a un’interfaccia sandbox molto ristretta e ben definita. Tale interfaccia limitata riduce notevolmente la superficie esposta agli attacchi e obbliga i malintenzionati prima a evadere la sandbox e poi ad aumentare il privilegio.