Share via


User Account Control

Igjen, litt om User Account Control. Jeg får ofte en del spørsmål rundt denne og hører at kollegaer av meg får det samme. Hva User Account Control, UAC, er har jeg ikke tenkt å gå i dybden på her. Derimot har jeg tenkt å kommentere spørsmålene jeg ofte får:

  • Hvorfor kan vi ikke markere applikasjoner til å elevere stille og automatisk, uten denne spørsmåls boksen?
  • Er det ikke like greit å skru av UAC?

 

Hva er UAC

Veldig kort forklart, UAC, er funksjonalitet i OS'et som gjør at selv om du er lokal administrator på maskina, så blir alle programmene dine default startet som standard bruker. Med mindre Windows Vista på ulike måter vet at programmet trenger admin rettigheter eller du eksplisitt velger å kjøre programmet som admin når du starter det. Da får du den kjente dialog boksen under, eller en variant av den:

image

Faktisk, når du logger på en Windows Vista maskin med en bruker som er med i lokal admin gruppa, så blir du logget på to ganger, sagt enkelt. Brukeren din får derfor to såkalte AccessToken, en som standard bruker og en som admin. Explorer shellet starter etter logon og den starter som standard bruker.

Hele tankegangen bak UAC er at man ikke trenger å kjøre med administrative rettigheter til enhver tid. Det er rett og slett ganske dumt å gjøre det. Med UAC kan du være admin på maskina di og styre den som du selv vil, men du er ikke like utsatt som om alle programmer (e-post, nettleser etc) kjører med fulle admin rettigheter. De fleste typer malware i dag trenger faktisk admin rettigheter for å infisere maskina di.

Det er mye, mye mer å si om UAC, konfigurasjon og andre fordeler den gir, men det skal jeg ikke inn på her. Sjekk heller ut følgende linker for mer info:

 

Spørsmålene

Det første spørsmålet er egentlig motivert med at man ønsker å slippe denne dialogboksen der man må bekrefte at man ønsker å kjøre med eleverte rettigheter. Det er en rekke problemer med å skulle implementere en slik løsning. Det er jo rett og slett et paradigme skifte å forsøke å gå fra at alt utvikles for å kjøre som admin, til at det skal utvikles til å kjøre som standard bruker. I veldig mange tilfeller skjer dette kun fordi programmet er "dårlig" skrevet, dvs at det strengt tatt ikke har behov for utvidede rettigheter for å yte de tjenestene det skal mot brukeren, men fordi produsenten valgte å skrive til beskyttede steder på OS'et må programmet ha admin rettigheter for å fungere. Denne typen "feil" i utvikling er veldig vanlig og er helt unødvendig. Enkelte programmer trenger selvsagt faktisk utvidede rettigheter, men ofte er det ikke et reellt behov, kun skapt kunstig av produsentens valg under design og utvikling. Det er derfor jeg kaller dette et paradigme skifte, fordi mange må endre sitt syn på hvordan ting gjøres. Og den prosessen må gå videre, XP SP2 strammet inn litt på hvordan programmer bør oppføre seg, det samme gjorde Windows Server 2003 og Windows Vista tar et skritt videre.

Hvis det hadde vært mulig å "tagge" en applikasjon til å elevere rettighetene usynlig i bakgrunnen ville nok mange produsenter bare gjort dette og ikke endret sine programmer til å yte bedre sikkerhet. Og et program som kjører som standard bruker er pr definisjon sikrere enn et som kjører som Admin. Dersom en person forsøker å utnytte et hull i et program som kjører som standard bruker vil han jo ikke få høyere rettigheter enn programmet kjører med selv.

Det var et lengre argument for å ikke ha usynlig/stille elevering. I tillegg er det et annet, mye kortere. Dersom man kunne sette noen instillinger for å bare elevere programmet uten videre, så ville dette garantert bli utnyttet for å både slippe å endre programmet, så vel som av personer med mer ondsinnede hensikter. UAC ville mistet veldig mye av sin evne til å faktisk beskytte OS'et. Hvis man tar en kikk på hull i unix Os vil man kunne se dette illustrert gjennom ulike utnyttelser av setuid og sudo.

Det er også gjort mye for å kartlegge hva man faktisk bør ha admin rettigheter for å kunne endre og ikke, for å differensiere dette mest mulig og klargjøre OS'et for Standard bruker scenarioer. Klokka i Windows Vista er et godt eksempel på dette: Du kan endre tidssone uten å elevere, men å stille tiden trenger du admin rettigheter til. Kommandolinje verktøyet er også et godt eksempel her. Du trenger ikke admin rettigheter for å fornye adresse fra dhcp manuelt, men for release trenger du dette.

 

Når det gjelder selve spørsmålet om hvor vidt UAC faktisk er nødvendig eller ikke, hvorfor ikke bare skru den av, så mener jeg personlig dette er ganske innlysende. Scenarioet er som følger: Du øker sikkerheten i din daglige bruk av maskina betraktelig og sparer deg potensielt for mye ekstra arbeid, men du må leve med noen flere dialog bokser du må klikke på ved bruk av ulike programmer.

Et vanlig argument rundt disse to spørsmålene er også at dersom man selv bestemmer(godkjenner) hvilke programmer som skal eleveres automatisk, eller kjører uten UAC og er nøye med hva man starter, så er det ikke noe problem. Vel, der er jeg ikke helt enig heller. Greit nok at du har godkjent programmet og stoler på det, men hva vet du egentlig om hvilke hull som finnes i programmet og hvordan malwre kan utnytte det? UAC er da med å sikre deg mot ukjente/kjente hull i programmet ved å kjøre det som standard bruker.

 

Kjapp konklusjon

UAC er med å øke sikkerheten på plattformen og en ekstra dialog boks veid opp mot ulike sikkerhetstrussler gjør disse ekstra klikkene verdt det. Så godt som all "modern" malware trenger å kjøre med admin rettigheter for å infisere maskina. Og ettersom OS'et blir sikrere blir applikasjonene mer utsatt og blir i noen tilfeller et lettere mål enn Os'et selv og man bør derfor beskytte applikasjonene også (evt se det som å beskytte OS'et mot applikasjonene).

Mange programmer som i dag trenger å kjøre som administrator vil bli videreutviklet og tilpasset til det nye sikkerhetsmiljøet og trusselbildet og dermed begrense frustrasjonen som enkelte har med dette.

Comments

  • Anonymous
    January 01, 2003
    Jepp, litt om denne igjen. Og fortsatt vil jeg ikke være med på å skru den helt av...