Partilhar via


Mandatory Integrity Control (MIC)

Dette er et klassisk konsept fra 70-tallet, som nå for første gang blir implementert kommersielt. I bunn og grunn går prinsippet ut på å definere i hvor stor grad man har tillitt til objekter(inkludert brukere) på systemet. Jeg må si jeg er ganske så fornøyd med det og glad for å endelig få tid til å skrive om det. Det er ingen tvil om at dette er med å bidra sterkt til den økte sikkerheten i Windows Vista.

 

Hva er dette?

Når man logger på Windows Vista får brukeren lagt til en Integrity SID til sitt Access Token. SID’en inkluderer en integritets henvisning og definerer dermed det høyeste nivået av integritet/tillitt brukeren kan få. Objektene som finnes i systemet for også tildelt en slik SID, som lagres i SACL, System Access Control List. Denne definerer tillitten systemet har til dette objektet og dette inkluderer det meste; filer, foldere, pipes, prosesser, tråder, window stations, registry nøkler, servicer, printere, shares, interprocess objects, jobs og directory objects. Alle OS filer er ikke satt opp med integritetsnivå, noe som gjør at de får default, Medium. Et vedlegg til en epost eller et program du laster ned får som default Low, da det kommer fra en kilde man ikke har tillitt til, nemlig Internett.

Windows Vista definerer tre ulike nivåer: Low, Medium, High og System. (Disse er definert som tallverdiene 4096/8192/12288/16384, som i Hex blir 1000/2000/3000/4000). Prosesser du starter og objekter du lager får ditt standard integrity level.

Standard brukere har Medium nivå og administratorer har High. System Servicer kjører som System.

Merk at når en bruker er lokal administrator og logger på en maskin med User Account Control vil brukeren få to Access Token, et som standard bruker og et som admin. Disse har da også hvert sitt integritylevel.

 

Hva vil det si i praksis?

DACLs, discretionary access control lists, har sine begrensninger, de evaluerer kun hvilke rettigheter en bruker/prosess har og ikke hvilken kilde det kommer fra for eksempel.

MIC sørger for eksempel for at en prosess eller bruker med lavt integritetsnivå ikke kan endre dataene til et objekt med høyere integritetsnivå. Prosesser med høyere integritetsnivå kan heller ikke tvinges til å motta data fra prosesser med lavere integritsnivå.

I praksis skjer kontrollen med dette før DACL (brukerens tilgang ) evalueres. Hvis brukerens integritetsnivå er likt eller høyere enn objektet vil brukeren kunne skrive til og slette objektet dersom også DACL gir brukeren denne tilgangen selvsagt. Dersom brukeren har lavere integritetsnivå enn objektet vil brukeren kunne lese, men ikke skrive til eller slette objektet, uavhengig av hva DACL tillatter. I praksis er det altså MIC som vinner over DACL.

Hvis du mottar et vedlegg på epost og lagrer dette får det automatisk integritetsnivå Low. Når du så kjører dette vedlegget blir denne prosessen kjørt med integritetsnivå Low. Derfor er det aller meste av dine filer beskyttet fra denne prosessen, da de vil ha integritetsnivå Medium eller High. Andre programmer du kjører og system services er også beskyttet fra å motta data fra prosessen da de kjører med høyere integritetsnivå.

Du har kanskje hørt om Internet Explorer Protected Mode også? Denne er bygget rundt MIC. IEPM kjører med integritetsnivå Low og har derfor begrenset tilgang til systemet. MIC sørger dermed for at IEPM bare får skrevet til et fåtall steder på systemet og registeret og angrep via IE blir dermed vesentlig vanskeligere. Siden desktopen din og alle andre programmer som har mer tilgang kjører med integritetsnivå Medium eller høyere kan heller ikke IE sende meldinger til disse. Dette ødelegger da for såkalte Shatter-style angrep, angrep fra en prosess til en annen prosess som benytter seg av systemet for meldinger mellom prosesser.

 

Under ser du to bilder fra Process explorer (sysinternals) som viser hvilke nivåer de ulike prosessene kjører som. Kolonne tre viser Integrity level.

procexp mic 1   procexp mic 2

 

 

Under ser du et bilde av verktøyet icacls i bruk, dette kan vise og sette integritetsnivåer. Mer om verktøyet her