macOS Gatekeeper / Quarantine / XProtect
Gatekeeper
Gatekeeper è una funzionalità di sicurezza sviluppata per i sistemi operativi Mac, progettata per garantire che gli utenti eseguano solo software attendibili sui loro sistemi. Funziona validando il software che un utente scarica e cerca di aprire da fonti al di fuori dell'App Store, come un'applicazione, un plug-in o un pacchetto di installazione.
Il meccanismo chiave di Gatekeeper risiede nel suo processo di verifica. Controlla se il software scaricato è firmato da un sviluppatore riconosciuto, garantendo l'autenticità del software. Inoltre, verifica se il software è notarizzato da Apple, confermando che è privo di contenuti dannosi noti e che non è stato manomesso dopo la notarizzazione.
Inoltre, Gatekeeper rafforza il controllo e la sicurezza dell'utente chiedendo agli utenti di approvare l'apertura del software scaricato per la prima volta. Questa protezione aiuta a impedire agli utenti di eseguire involontariamente codice eseguibile potenzialmente dannoso che potrebbero aver scambiato per un file dati innocuo.
Firme delle Applicazioni
Le firme delle applicazioni, anche conosciute come firme di codice, sono un componente critico dell'infrastruttura di sicurezza di Apple. Sono utilizzate per verificare l'identità dell'autore del software (lo sviluppatore) e per garantire che il codice non sia stato manomesso dall'ultima firma.
Ecco come funziona:
Firmare l'Applicazione: Quando uno sviluppatore è pronto a distribuire la propria applicazione, firma l'applicazione utilizzando una chiave privata. Questa chiave privata è associata a un certificato che Apple rilascia allo sviluppatore quando si iscrive al programma per sviluppatori Apple. Il processo di firma prevede la creazione di un hash crittografico di tutte le parti dell'applicazione e la crittografia di questo hash con la chiave privata dello sviluppatore.
Distribuire l'Applicazione: L'applicazione firmata viene quindi distribuita agli utenti insieme al certificato dello sviluppatore, che contiene la corrispondente chiave pubblica.
Verificare l'Applicazione: Quando un utente scarica e cerca di eseguire l'applicazione, il sistema operativo Mac utilizza la chiave pubblica dal certificato dello sviluppatore per decrittare l'hash. Successivamente ricalcola l'hash in base allo stato attuale dell'applicazione e confronta questo con l'hash decrittato. Se corrispondono, significa che l'applicazione non è stata modificata dall'ultima firma dello sviluppatore e il sistema permette all'applicazione di eseguirsi.
Le firme delle applicazioni sono una parte essenziale della tecnologia Gatekeeper di Apple. Quando un utente cerca di aprire un'applicazione scaricata da Internet, Gatekeeper verifica la firma dell'applicazione. Se è firmata con un certificato rilasciato da Apple a uno sviluppatore conosciuto e il codice non è stato manomesso, Gatekeeper permette all'applicazione di eseguirsi. In caso contrario, blocca l'applicazione e avvisa l'utente.
A partire da macOS Catalina, Gatekeeper verifica anche se l'applicazione è stata notarizzata da Apple, aggiungendo un ulteriore livello di sicurezza. Il processo di notarizzazione controlla l'applicazione per problemi di sicurezza noti e codice dannoso e, se questi controlli hanno esito positivo, Apple aggiunge un biglietto all'applicazione che Gatekeeper può verificare.
Verifica delle Firme
Quando si controlla un campione di malware, è sempre consigliabile verificare la firma del binario poiché lo sviluppatore che l'ha firmato potrebbe essere già associato a un malware.
Notarizzazione
Il processo di notarizzazione di Apple funge da ulteriore salvaguardia per proteggere gli utenti da software potenzialmente dannoso. Coinvolge lo sviluppatore che invia la propria applicazione per esame al Servizio di Notarizzazione di Apple, che non va confuso con la Revisione dell'App. Questo servizio è un sistema automatizzato che esamina il software inviato alla ricerca di contenuti dannosi e potenziali problemi con la firma del codice.
Se il software supera questa ispezione senza sollevare preoccupazioni, il Servizio di Notarizzazione genera un ticket di notarizzazione. Lo sviluppatore è quindi tenuto a allegare questo ticket al proprio software, un processo noto come 'stapling'. Inoltre, il ticket di notarizzazione viene anche pubblicato online dove Gatekeeper, la tecnologia di sicurezza di Apple, può accedervi.
Alla prima installazione o esecuzione del software da parte dell'utente, l'esistenza del ticket di notarizzazione - che sia allegato all'eseguibile o trovato online - informa Gatekeeper che il software è stato notarizzato da Apple. Di conseguenza, Gatekeeper visualizza un messaggio descrittivo nella finestra di avvio iniziale, indicando che il software è stato sottoposto a controlli per contenuti dannosi da parte di Apple. Questo processo aumenta la fiducia dell'utente nella sicurezza del software che installano o eseguono sui propri sistemi.
Enumerazione di GateKeeper
GateKeeper è sia diversi componenti di sicurezza che impediscono l'esecuzione di app non attendibili ed è anche uno dei componenti.
È possibile verificare lo stato di GateKeeper con:
Si noti che i controlli delle firme di GateKeeper vengono eseguiti solo per file con l'attributo Quarantena, non per ogni file.
GateKeeper verificherà se, in base alle preferenze e alla firma, un binario può essere eseguito:
Il database che mantiene questa configurazione è situato in /var/db/SystemPolicy
. È possibile controllare questo database come root con:
Nota come la prima regola sia terminata in "App Store" e la seconda in "ID sviluppatore" e che nell'immagine precedente era abilitato ad eseguire app dall'App Store e sviluppatori identificati. Se modifichi quell'impostazione in App Store, le regole "ID sviluppatore notarizzato scompariranno**.
Ci sono anche migliaia di regole di tipo GKE:
Queste sono gli hash che provengono da /var/db/SystemPolicyConfiguration/gke.bundle/Contents/Resources/gke.auth
, /var/db/gke.bundle/Contents/Resources/gk.db
e /var/db/gkopaque.bundle/Contents/Resources/gkopaque.db
Oppure potresti elencare le informazioni precedenti con:
Le opzioni --master-disable
e --global-disable
di spctl
disabiliteranno completamente questi controlli delle firme:
Quando completamente abilitato, apparirà una nuova opzione:
È possibile verificare se un'app sarà consentita da GateKeeper con:
È possibile aggiungere nuove regole in GateKeeper per consentire l'esecuzione di determinate app con:
File in quarantena
Al momento del download di un'applicazione o di un file, specifiche applicazioni macOS come browser web o client di posta elettronica aggiungono un attributo file esteso, comunemente noto come "flag di quarantena," al file scaricato. Questo attributo funge da misura di sicurezza per marcare il file come proveniente da una fonte non attendibile (internet) e potenzialmente portatore di rischi. Tuttavia, non tutte le applicazioni aggiungono questo attributo, ad esempio, i comuni software client BitTorrent di solito evitano questo processo.
La presenza di un flag di quarantena segnala la funzione di sicurezza Gatekeeper di macOS quando un utente tenta di eseguire il file.
Nel caso in cui il flag di quarantena non sia presente (come nei file scaricati tramite alcuni client BitTorrent), le verifiche di Gatekeeper potrebbero non essere eseguite. Pertanto, gli utenti dovrebbero fare attenzione nell'aprire file scaricati da fonti meno sicure o sconosciute.
Verificare la validità delle firme dei codici è un processo intensivo in termini di risorse che include la generazione di hash crittografici del codice e di tutte le sue risorse raggruppate. Inoltre, verificare la validità del certificato comporta un controllo online ai server di Apple per vedere se è stato revocato dopo essere stato emesso. Per questi motivi, eseguire una verifica completa della firma del codice e della notarizzazione è impraticabile da eseguire ogni volta che un'app viene avviata.
Pertanto, queste verifiche vengono eseguite solo quando si eseguono app con l'attributo in quarantena.
Questo attributo deve essere impostato dall'applicazione che crea/scarica il file.
Tuttavia, i file che sono sandboxed avranno questo attributo impostato per ogni file che creano. E le app non sandboxed possono impostarlo da sole, o specificare la chiave LSFileQuarantineEnabled nell'Info.plist che farà sì che il sistema imposti l'attributo esteso com.apple.quarantine
sui file creati,
Inoltre, tutti i file creati da un processo che chiama qtn_proc_apply_to_self
sono messi in quarantena. Oppure l'API qtn_file_apply_to_path
aggiunge l'attributo di quarantena a un percorso file specificato.
È possibile verificarne lo stato e abilitare/disabilitare (richiede privilegi di amministratore) con:
Puoi anche verificare se un file ha l'attributo esteso di quarantena con:
Verifica il valore degli attributi estesi e scopri l'app che ha scritto l'attributo di quarantena con:
In realtà un processo "potrebbe impostare i flag di quarantena ai file che crea" (ho provato ad applicare il flag USER_APPROVED in un file creato ma non lo applica):
Last updated