Estensione sicura del kernel in macOS
A partire da macOS 11, se le estensioni del kernel di terze parti sono abilitate, non possono essere caricate nel kernel su richiesta. Vengono invece unite in una raccolta del kernel ausiliaria, che viene caricata durante il processo di avvio. Per i Mac dotati di chip Apple, la misurazione della raccolta del kernel ausiliaria viene firmata in LocalPolicy (per i modelli di hardware precedenti la raccolta del kernel ausiliaria risiedeva nel volume dedicato ai dati). La ricostruzione della raccolta del kernel ausiliaria richiede l’approvazione dell’utente e il riavvio di macOS per caricare le modifiche nel kernel; richiede inoltre che l’avvio protetto sia configurato su “Sicurezza ridotta”.
Importante: le estensioni del kernel non sono più consigliate per macOS. Le estensioni del kernel mettono a repentaglio l’integrità e l’affidabilità del sistema operativo; Apple consiglia agli utenti di optare per soluzioni che non richiedano l’estensione del kernel.
Estensioni del kernel sui Mac dotati di chip Apple
Nei Mac dotati di chip Apple, le estensioni del kernel devono essere abilitate esplicitamente tenendo premuto il tasto di accensione durante l’avvio per entrare in modalità One True Recovery (1TR), scegliendo l’opzione “Sicurezza ridotta” e selezionando il riquadro per abilitarle. Questa azione richiede anche l’inserimento di una password da amministratore per autorizzare la riduzione del livello di sicurezza. La combinazione di modalità 1TR e richiesta della password rendono difficile a un hacker che effettui un attacco solo al software a partire da macOS applicare estensioni del kernel al sistema operativo per poi sfruttarle per ottenere privilegi kernel.
Una volta che un utente ha autorizzato il caricamento delle estensioni del kernel, per autorizzare l’installazione delle stesse viene utilizzata la procedura di caricamento delle estensioni del kernel approvate dall’utente descritta sopra. L’autorizzazione utilizzata per la procedura descritta viene usata anche per registrare un hash SHA384 dell’elenco delle estensioni del kernel autorizzate dall’utente in LocalPolicy. Successivamente, il deamon di gestione del kernel (kmd
) si occupa di convalidare solo le estensioni del kernel presenti nell’elenco delle estensioni del kernel autorizzate dall’utente per essere incluse nella raccolta del kernel ausiliaria.
Se la protezione dell’integrità del sistema è abilitata, prima dell’inclusione nella raccolta del kernel ausiliaria, viene verificata la firma di ogni estensione del kernel.
Se la protezione dell’integrità del sistema è disabilitata, la firma delle estensioni del kernel non è richiesta.
Questo approccio consente operazioni in modalità “Sicurezza assente” in cui sviluppatori o clienti che non fanno parte dell’Apple Developer Program testano le estensioni del kernel prima che vengano firmate.
Dopo che la raccolta del kernel ausiliaria è stata creata, la relativa misurazione viene inviata a Secure Enclave perché venga firmata e inclusa in una struttura di dati Image4 che possa essere valutata da iBoot durante l’avvio. Durante la creazione della raccolta del kernel ausiliaria, viene generata anche una ricevuta per le estensioni del kernel. Essa contiene l’elenco delle estensioni del kernel effettivamente incluse nella raccolta del kernel ausiliaria, perché potrebbe essere un sottoinsieme dell’elenco delle estensioni del kernel autorizzate dall’utente se sono state trovate estensioni del kernel non autorizzate. Un hash SHA384 della struttura di dati Image4 della raccolta del kernel ausiliaria e la ricevuta delle estensioni del kernel vengono inclusi in LocalPolicy. L’hash Image4 della raccolta del kernel ausiliaria viene utilizzato per un’ulteriore verifica da parte di iBoot all’avvio, per aiutare a garantire che non sia possibile avviare un file Image4 della raccolta del kernel ausiliaria meno recente firmato da Secure Enclave con un LocalPolicy più recente. La ricevuta delle estensioni del kernel è usata da sottosistemi come Apple Pay per determinare se ci sono estensioni del kernel attualmente caricate che possano interferire con l’attendibilità di macOS. Se sono presenti, le funzionalità di Apple Pay potrebbero venire disabilitate.
Estensioni di sistema
macOS 10.15 consente agli sviluppatori di ampliare le funzionalità di macOS installando e gestendo le estensioni di sistema eseguite sullo spazio utente piuttosto che al livello del kernel. Se eseguite sullo spazio utente, le estensioni di sistema aumentano la stabilità e la sicurezza di macOS. Sebbene le estensioni del kernel abbiano accesso per definizione all’intero sistema operativo, quelle eseguite sullo spazio utente ricevono unicamente i privilegi necessari all’esecuzione della loro funzione specifica.
Gli sviluppatori possono utilizzare i framework, come DriverKit, EndpointSecurity e NetworkExtension, per scrivere su driver UI e USB, strumenti di sicurezza endpoint (come la prevenzione della perdita di dati o altri agenti endpoint) nonché strumenti di rete e VPN, il tutto senza dover scrivere delle estensioni del kernel. Gli agenti di sicurezza di terze parti dovrebbero essere utilizzati solo se sfruttano queste API o se hanno una solida roadmap di transizione verso di esse e di allontanamento dalle estensioni del kernel.
Caricamento delle estensioni del kernel approvate dall’utente
Per migliorare la sicurezza, per il caricamento delle estensioni del kernel installate con o dopo aver installato macOS 10.13 è necessario il consenso dell’utente. Questo processo è noto come caricamento delle estensioni del kernel approvate dall’utente. Per l’approvazione di un’estensione del kernel è necessaria l’autorizzazione di un amministratore. Le estensioni del kernel non richiedono autorizzazione se:
Sono installate su un Mac con macOS 10.12 o versioni precedenti.
Sostituiscono delle estensioni approvate in precedenza.
Possono essere caricate senza il consenso dell’utente usando lo strumento a linea di comando
spctl
disponibile quando il Mac è avviato da recoveryOS.Possono essere caricate tramite una configurazione MDM (Mobile Device Management).
A partire da macOS 10.13.2, gli utenti possono usare la MDM per indicare un elenco di estensioni del kernel che può essere caricato senza il consenso dell’utente. Questa opzione richiede un Mac con macOS 10.13.2 registrato in una soluzione MDM effettuata dall’utente oppure tramite Apple School Manager o Apple Business Manager.