Controllo di integrità obbligatorio

Il controllo di integrità obbligatorio (MIC) fornisce un meccanismo per controllare l'accesso a oggetti a protezione diretta. Questo meccanismo si aggiunge al controllo di accesso discrezionale e valuta l'accesso prima che vengano valutati i controlli di accesso rispetto all'elenco di controllo di accesso discrezionale (DACL) di un oggetto.

MIC usa i livelli di integrità e i criteri obbligatori per valutare l'accesso. Alle entità di sicurezza e agli oggetti a protezione diretta vengono assegnati livelli di integrità che determinano i livelli di protezione o accesso. Ad esempio, un'entità con un livello di integrità basso non può scrivere in un oggetto con un livello di integrità medio, anche se l'elenco DACL di tale oggetto consente l'accesso in scrittura all'entità.

Windows definisce quattro livelli di integrità: basso, medio, alto e sistema. Gli utenti standard ricevono utenti con privilegi medi e elevati ricevono un livello elevato. Elabora l'avvio e gli oggetti creati ricevono il livello di integrità (medio o alto) o basso se il livello del file eseguibile è basso; i servizi di sistema ricevono l'integrità del sistema. Gli oggetti che non dispongono di un'etichetta di integrità vengono considerati come medi dal sistema operativo; in questo modo si impedisce la modifica di oggetti senza etichetta da parte del codice a bassa integrità. Windows garantisce inoltre che i processi in esecuzione con un livello di integrità basso non possano ottenere l'accesso a un processo associato a un contenitore di app.

Etichette di integrità

Le etichette di integrità specificano i livelli di integrità degli oggetti a protezione diretta e delle entità di sicurezza. Le etichette di integrità sono rappresentate dai SID di integrità. Il SID di integrità per un oggetto a protezione diretta viene archiviato nel relativo elenco di controllo di accesso di sistema (SACL). Sacl contiene un SYSTEM_MANDATORY_LABEL_ACEvoce di controllo di accesso (ACE) che a sua volta contiene il SID di integrità. Qualsiasi oggetto senza un SID di integrità viene considerato come se avesse un'integrità media.

Il SID di integrità per un'entità di sicurezza viene archiviato nel token di accesso. Un token di accesso può contenere uno o più SID di integrità.

Per informazioni dettagliate sui SID di integrità definiti, vedere SID noti.

Creazione del processo

Quando un utente tenta di avviare un file eseguibile, il nuovo processo viene creato con il livello minimo di integrità dell'utente e il livello di integrità del file. Ciò significa che il nuovo processo non verrà mai eseguito con un'integrità superiore rispetto al file eseguibile. Se l'utente amministratore esegue un programma di integrità basso, il token per il nuovo processo funziona con il livello di integrità basso. Ciò consente di proteggere un utente che avvia codice non attendibile da atti dannosi eseguiti da tale codice. I dati utente, che si trova al livello di integrità utente tipico, sono protetti da scrittura in base a questo nuovo processo.

Criteri obbligatori

La SYSTEM_MANDATORY_LABEL_ACE ACE nell'elenco SACL di un oggetto a protezione diretta contiene una maschera di accesso che specifica l'accesso concesso alle entità con livelli di integrità inferiori all'oggetto. I valori definiti per questa maschera di accesso sono SYSTEM_MANDATORY_LABEL_NO_WRITE_UP, SYSTEM_MANDATORY_LABEL_NO_READ_UP e SYSTEM_MANDATORY_LABEL_NO_EXECUTE_UP. Per impostazione predefinita, il sistema crea ogni oggetto con una maschera di accesso di SYSTEM_MANDATORY_LABEL_NO_WRITE_UP.

Ogni token di accesso specifica anche un criterio obbligatorio impostato dall'Autorità di sicurezza locale (LSA) quando viene creato il token. Questo criterio viene specificato da una struttura TOKEN_MANDATORY_POLICY associata al token. È possibile eseguire query su questa struttura chiamando la funzione GetTokenInformation con il valore del parametro TokenInformationClass impostato su TokenMandatoryPolicy.