Che cos'è il meccanismo di integrità di Windows?

Il meccanismo di integrità di Windows è un componente principale dell'architettura di sicurezza di Windows che limita le autorizzazioni di accesso delle applicazioni in esecuzione con lo stesso account utente e meno affidabili.

Il meccanismo di integrità di Windows Vista® estende l'architettura di sicurezza del sistema operativo assegnando un livello di integrità ai processi dell'applicazione e agli oggetti a protezione diretta.

Il livello di integrità è una rappresentazione dell'attendibilità dei processi e degli oggetti dell'applicazione in esecuzione, ad esempio i file creati dall'applicazione. Il meccanismo di integrità consente ai gestori di risorse, ad esempio il file system, di usare criteri predefiniti che bloccano i processi di integrità inferiore o meno attendibilità, dalla lettura o dalla modifica di oggetti di maggiore integrità. Il meccanismo di integrità consente al modello di sicurezza di Windows di applicare nuove restrizioni di controllo di accesso che non possono essere definite concedendole le autorizzazioni utente o di gruppo negli elenchi di controllo di accesso .The integrity mechanism allows the Windows security model to enforce new access control restrictions that cannot be defined by granting user or group permissions in access control list (ACL).

L'architettura di sicurezza di Windows si basa principalmente sulla concessione di diritti di accesso (autorizzazioni di lettura, scrittura ed esecuzione) e privilegi a utenti o gruppi rappresentati internamente dagli identificatori di sicurezza (SID). Quando un utente accede a Windows, il sottosistema di sicurezza imposta i SID dell'utente e i SID di appartenenza ai gruppi in un token di accesso di sicurezza. Il token di accesso di sicurezza viene assegnato a ogni processo dell'applicazione eseguito dall'utente. Ogni volta che il processo dell'applicazione apre un oggetto, ad esempio un file o una chiave del Registro di sistema, gestione risorse che gestisce le chiamate all'oggetto nel sottosistema di sicurezza per prendere una decisione di accesso. Il controllo di accesso determina le autorizzazioni di accesso consentite per l'utente. Il sottosistema di sicurezza (noto anche come Monitoraggio riferimenti alla sicurezza) confronta i SID utente e di gruppo nel token di accesso con i diritti di accesso in un descrittore di sicurezza associato all'oggetto . Se al SID utente vengono concessi diritti di accesso completi nell'ACL dell'oggetto, il processo dell'applicazione eseguito dall'utente ha accesso completo all'oggetto. Per altre informazioni sull'architettura di sicurezza di Windows, vedere Risorse del meccanismo di integrità di Windows.

Estensione dell'architettura di sicurezza di Windows

Il meccanismo di integrità di Windows estende l'architettura di sicurezza definendo un nuovo tipo di voce di controllo di accesso (ACE) per rappresentare un livello di integrità nel descrittore di sicurezza di un oggetto. Il nuovo ACE rappresenta il livello di integrità dell'oggetto. Un livello di integrità viene assegnato anche al token di accesso di sicurezza quando viene inizializzato il token di accesso. Il livello di integrità nel token di accesso rappresenta un livello di integrità del soggetto. Il livello di integrità nel token di accesso viene confrontato con il livello di integrità nel descrittore di sicurezza quando il monitoraggio dei riferimenti di sicurezza esegue un controllo di accesso. Windows Vista usa la funzione AccessCheck per determinare quali diritti di accesso sono consentiti a un oggetto a protezione diretta. Windows limita i diritti di accesso consentiti a seconda che il livello di integrità dell'oggetto sia superiore o inferiore all'oggetto e a seconda dei flag dei criteri di integrità nel nuovo controllo di accesso ACE. Il sottosistema di sicurezza implementa il livello di integrità come etichetta obbligatoria per distinguerlo dall'accesso discrezionale sotto il controllo utente fornito dagli ACL.

Obiettivi di progettazione del meccanismo di integrità di Windows

Il meccanismo di integrità di Windows consente diversi scenari importanti in Windows Vista. Per soddisfare i requisiti, la progettazione del meccanismo di integrità di Windows doveva soddisfare gli obiettivi seguenti.

  • I livelli di integrità devono essere assegnati automaticamente a ogni token di accesso di sicurezza durante la creazione del token di accesso, in modo che ogni processo e thread abbia un livello di integrità efficace per il controllo di accesso.
  • Il sottosistema di sicurezza assegna automaticamente etichette obbligatorie a tipi di oggetto specifici.
  • Il sistema deve usare il minor numero possibile di livelli di integrità per semplificare la comprensione e l'uso dell'architettura di base.
  • I criteri di integrità devono essere flessibili per soddisfare i requisiti di accesso di diversi strumenti di gestione delle risorse degli oggetti e consentire un'estendibilità futura.
  • Il meccanismo di integrità deve integrarsi con l'architettura di sicurezza esistente per ridurre al minimo l'impatto sulla grande legacy del codice di sistema e dell'applicazione che dipende dalla sicurezza di Windows.
  • Non è necessario che gli amministratori o gli utenti configurino i livelli di integrità per il corretto funzionamento del meccanismo di imposizione.

Il meccanismo di integrità di Windows soddisfa questi obiettivi definendo un nuovo tipo ACE di etichetta obbligatoria per l'assegnazione di un livello di integrità agli oggetti. I dettagli di questa struttura sono descritti in una sezione successiva di questo documento. Tuttavia, l'etichetta ACE obbligatoria definisce un livello di integrità dell'oggetto senza modifiche alla definizione della struttura dei dati del descrittore di sicurezza esistente o all'elenco di controllo di accesso discrezionale comunemente usato.

Il meccanismo di integrità di Windows si basa su un'etichetta obbligatoria assegnata dal sistema operativo per distinguerla dall'accesso discrezionale sotto il controllo utente. Il controllo di accesso discrezionale consente al proprietario dell'oggetto o al gruppo autorizzato a modificare le autorizzazioni di accesso dell'oggetto. Windows fornisce un'interfaccia utente grafica per consentire agli utenti avanzati di visualizzare e modificare le autorizzazioni di sicurezza (rappresentate dall'ACL discrezionale) su oggetti, ad esempio file e chiavi del Registro di sistema. Le etichette obbligatorie vengono sempre assegnate a oggetti specifici e sono disponibili controlli sul modo in cui l'autore di oggetti può impostare o inizializzare l'etichetta alla creazione dell'oggetto. Non è stata implementata alcuna interfaccia utente grafica per la gestione delle etichette di integrità per Windows Vista perché la gestione delle etichette è disponibile o necessaria per alcune aree relativamente poche.

Perché esiste un meccanismo di integrità di Windows?

Lo scopo del meccanismo di integrità di Windows è limitare le autorizzazioni di accesso delle applicazioni in esecuzione con lo stesso account utente e meno affidabili. Codice sconosciuto, potenzialmente dannoso scaricato da Internet deve essere impedito di modificare lo stato del sistema, modificare i file di dati utente o modificare il comportamento di altri programmi dell'applicazione. Il sottosistema di sicurezza di Windows assegna una semplice gerarchia di livelli di integrità al codice in esecuzione a livelli di privilegio diversi per lo stesso utente. Le versioni precedenti di Windows possono modificare i privilegi dei token di accesso di sicurezza di un processo dell'applicazione, anche se tale rettifica non è comune. Prima di Windows Vista, la maggior parte delle applicazioni è stata eseguita usando un account amministrativo con diritti di amministratore completi. Windows Vista incorpora il concetto di privilegio minimo abilitando un uso più ampio degli account utente standard. Controllo dell'account utente (UAC) in Amministrazione modalità approvazione per gli account amministratore significa che più applicazioni nello stesso desktop sono in esecuzione con livelli di privilegi diversi. Ad esempio, Internet Explorer modalità protetta usa il meccanismo di integrità per eseguire il Web browser in un processo con autorizzazioni di accesso limitate.

Il problema di sicurezza principale che il meccanismo di integrità di Windows risolve è un'manomissione non autorizzata con i dati utente e, indirettamente, con lo stato del sistema. Un problema secondario con cui il meccanismo di integrità aiuta è la divulgazione di informazioni. Tuttavia, la divulgazione di informazioni viene impedita solo per quanto riguarda l'accesso allo spazio indirizzi del processo. La condivisione delle informazioni è molto comune tra le applicazioni Windows e la condivisione di informazioni tra le applicazioni è fondamentale per l'esperienza utente. Un esempio è copia e incolla. Limiti di sicurezza rigidi per la condivisione delle informazioni tra le applicazioni in esecuzione con lo stesso account utente possono influire gravemente sulla compatibilità delle applicazioni e sull'esperienza utente.

Il codice non attendibile può provare a modificare i dati utente in molti modi. Alcuni attacchi possono tentare di modificare i dati direttamente creando, modificando o eliminando file. Altri attacchi usano un altro processo in esecuzione con privilegi più elevati, con l'obiettivo di ottenere codice arbitrario da eseguire in un'altra applicazione con il livello di accesso richiesto. Esistono molti tipi di attacchi tra processi. A causa dell'ampia gamma di progettazione e implementazione dell'applicazione, il meccanismo di integrità non può fornire una barriera di isolamento completa. Il meccanismo di integrità di Windows non è progettato come sandbox dell'applicazione. Tuttavia, può essere uno degli strumenti di sicurezza usati dagli sviluppatori di applicazioni per limitare il comportamento di applicazioni meno affidabili.

Meccanismo di integrità di Windows Vista e modelli di integrità precedenti

Alcuni tratti del meccanismo di integrità di Windows sono simili ai modelli di integrità precedenti per la sicurezza del computer. Tuttavia, il meccanismo di integrità di Windows è progettato principalmente per risolvere la manomissione o l'elevazione dei privilegi nell'ambiente applicativo Windows altamente collaborativo. I modelli di integrità precedenti erano più interessati a mantenere l'integrità dei processi attendibili applicando criteri che impediscono la lettura di dati non attendibili.

Il modello di sicurezza Biba si basa su una gerarchia di etichette di integrità e sui criteri di accesso consentiti quando un livello di integrità del soggetto domina il livello di integrità dell'oggetto. Il meccanismo di integrità di Windows è simile al modello Biba nei modi seguenti:

  • Usa una gerarchia di etichette di integrità (le etichette di integrità non corrispondono alle etichette di sicurezza nel modello di Bell-LePadula).
  • Il sistema usa un set di soggetti, oggetti e livelli di integrità ordinati.
  • Il livello di integrità del soggetto domina (è maggiore o uguale a) il livello di integrità dell'oggetto.
  • I criteri di integrità impediscono l'accesso agli oggetti ma non vengono usati principalmente per limitare il flusso di informazioni.
  • Impedire la divulgazione di informazioni non è un obiettivo del meccanismo di integrità in Windows Vista.

I livelli di integrità di Windows vengono ordinati in modo che un valore inferiore indichi meno attendibilità e un valore più alto indica una maggiore attendibilità. Un soggetto di livello inferiore non può modificare un oggetto di livello superiore. Il livello di integrità del soggetto non è dinamico. Ad esempio, il livello di integrità di un soggetto non viene modificato in un valore inferiore se il processo legge i dati da un oggetto a bassa integrità. Il modello di integrità strict in Biba non consente a un processo di integrità più elevata di leggere i dati di integrità inferiore. A volte si tratta di un criterio di integrità senza lettura. I criteri di integrità di Windows, descritti più dettagliatamente di seguito, non impediscono o impediscono ai soggetti di integrità superiore di leggere o eseguire oggetti con integrità inferiore. Esistono molti esempi di attacchi in cui la lettura di dati di input non attendibili non attendibili comporta un exploit di una vulnerabilità in un'applicazione e un'esecuzione arbitraria del codice. Il meccanismo di integrità di Windows non impedisce o impedisce la lettura dei dati a qualsiasi livello. Windows non applica criteri di integrità rigorosi descritti nel modello Biba. La progettazione dell'integrità presuppone che i processi progettati per gestire i dati non attendibili da un'origine sconosciuta o non attendibile vengano eseguiti a un livello di integrità inferiore o che i dati non attendibili vengano verificati prima dell'uso. Tuttavia, il meccanismo di integrità di Windows non impone tale vincolo.

Il meccanismo di integrità di Windows non implementa criteri dinamici o "Low-Water-Mark". Un criterio dinamico modifica il livello di integrità dell'oggetto quando l'oggetto apre oggetti di integrità inferiore. Un problema con l'integrità dinamica è quando un processo di integrità elevata ottiene handle aperti a molti oggetti in base all'integrità elevata e quindi diventa improvvisamente un soggetto con integrità inferiore dopo l'apertura di un particolare file di integrità bassa. Forzando tutti gli handle aperti a oggetti di integrità superiore a chiudersi quando il livello di integrità cambia in modo significativo influisce sul comportamento dell'applicazione. Il processo di integrità inferiore dinamica diventa un oggetto di destinazione di altri processi a livello di integrità inferiore. Questi processi potrebbero ora essere in grado di modificare il comportamento dell'applicazione (allo stesso livello inferiore) con handle aperti per oggetti di integrità superiore.

Il meccanismo di integrità di Windows non è progettato per la protezione dell'integrità dei dati per supportare requisiti militari o commerciali, come descritto nel modello di Clark-Wilson. L'implementazione di Windows dei controlli di integrità non si basano sui concetti relativi agli elementi di dati vincolati o non vincolati e alle procedure di trasformazione certificate. Tuttavia, questi concetti sono utili per i progettisti di applicazioni quando considerano il flusso di informazioni da origini non attendibili a processi di integrità superiore.

Anche se il meccanismo di integrità di Windows è simile ai modelli di integrità precedenti nella sicurezza del computer, Windows Vista non tenta di implementare alcun modello. Il meccanismo di integrità di Windows limita invece le autorizzazioni di accesso disponibili per i processi in esecuzione con privilegi o livelli di attendibilità diversi. Per altre informazioni sul lavoro precedente sui modelli di integrità di Biba e Clark-Wilson e sui criteri di integrità dinamica, vedere Risorse del meccanismo di integrità di Windows.