Windows Vista - User Account Control

User Account Control, ili skraćeno UAC je jedna od tri nove tehnologije na polju bezbednosti u Windows Visti koja je izazvala najviše diskusija i "oštru" razmenu mišljenja (ostale dve su PatchGuard i Kernel Module and Driver Signing, ali o njima sledeći put) između onih koji smatraju da je UAC značajan korak napred u poboljšanju bezbednosti i onih koji tvrde da je UAC "još jedna od mnogobrojnih tehnologija koja ustvari ne poboljšava bezbednost sistema za krajnjeg korisnika".

Autor: Saša Vidanović

Tehnopolis

Izvor: B92

Utorak, 31.10.2006.

16:29

Default images

Kada uključite UAC u Windows Visti, svi korisnici, uključujući i administratora sistema, dobiće po default-u standardni korisnički token prilikom login procedure i sve aplikacije startovane od strane tog korinika biće startovane sa pravima koje su tom korisniku dodeljena preko standardnog tokena. Drugim rečima, svi korisnici na sistemu po default-u rade sa standardnim korisničkim privilegijama.

Šta je zapravo UAC?

U prethodnim verzijama Windowsa, većina običnih korisničkih naloga je bila deo local administrator grupe, što je davalo običnim korisnicima sistemske privilegije i mogućnosti da instaliraju i konfigurišu aplikacije, dodaju drajvere za uređaje ili menjaju sistemske fajlove. Negde sam pročitao (ne sećam se više gde) da je ovakav pristup davanja administratorskih privilegija običnom korisniku (koji pri tome u većini slučajeva toga nije ni svestan) početak puta u katastrofu, i sa time se apsolutno slažem. Jer, kao što sam napisao u prethodnom postu u delu gde je predstavljen zakon #1, ako loši momci provale na vaš sistem, a vi ste administrator na sistemu, gotovo je, priča je završena.

Dakle, glavni cilj UAC tehnologije je da dozvoli običnom korisniku sa standardnim privilegijama udoban rad u Windowsu i da smanji broj zadataka i aplikacija koji zahtevaju administratorske privilegije. Onoga trenutka kada se takav zadatak pojavi, korisniku će biti prikazan prozor sa dijalogom opisujući tačno koja aplikacija traži privilegije od njega i tražeći od korisnika da ukuca administratorsku lozinku (ukoliko je korisnik administrator, ne traži se lozinka, ali se ipak traži saglasnost), da bi se izvršila tzv. elevacija privilegija i na kraju izvršio zadatak koji zahteva administratorske privilegije. Mnogi će reći da UNIX-like operativni sistemi odavno poseduju sličan koncept godinama unazad, preko sudo komande, i to je tačno. Koncept potiče odatle, ali je implementacija drugačija.

Ispod haube

UAC funkcionalnost omogućavaju četiri komponente: IAS (Information Application Service), dijalog o elevaciji privilegija, detektor instalera i na kraju komponenta za virtualizaciju fajl sistema i registry baze.

U toku login procedure, običnom korisniku se dodeljuje standardni korisnički token. Ako je korisnik administrator na sistemu, LSA (Local Security Authority) servis će to primetiti i kreiraće tzv. filtrirani token za tog korisnika. Takav token ustvari ima privilegije standardnog korisničkog tokena, što je prikazano na slici.

Administratorske privilegije

Znači, i običan korisnik i administrator sistema dobijaju standardne tokene po default-u. U trenutku kada npr. korisnik želi da promeni vreme na sistemu, što zahteva administratorske privilegije, desiće se sledeće: Windows Vista prepoznaje da aplikacija za promenu vremena zahteva administratorske privilegije (čitaj kreiranje administratorskog tokena), i ukoliko je korisnik administrator sistema, generiše prompt sa dijalogom koji od njega traži saglasnost za kreiranje tog administratorskog tokena. Korisnik mora da klikne na Allow dugme, da bi se zadatak izvršio. Ukoliko korisnik nije administrator sistema, Windows Vista generiše prompt sa dijalogom koji traži od korisnika da unese administratorsku lozinku, što se vidi na slici.

Korisnik mora da klikne na Allow dugme, da bi se zadatak izvršio. Ukoliko korisnik nije administrator sistema, Windows Vista generiše prompt sa dijalogom koji traži od korisnika da unese administratorsku lozinku:

Trusted path

Korisnik ovde praktično dozvoljava AIS komponenti da koristi administrativni token u njegovo ime. Kao dodatna mera bezbednosti, u Windows Visti RC1 i RC2, uvek kada se pojavi dijalog za elevaciju privilegija, ostatak ekrana se zatamni i prompt sa dijalogom se prikazuje u tzv. secure desktop modu (isti mod rada se startuje kada pritisnete CTRL+ALT+DELETE). U secure desktop modu rada, ostale aplikacije koje su startovane na sistemu ne mogu komunicirati sa dijalogom za elevaciju. U teoriji se ovaj mehanizam komunikacije zove trusted path, a ima za cilja da osigura da između korisnika i, u ovom slučaju dijaloga za elevaciju privilegija, ne stoji nijedan drugi proces koji potencijalno može izmeniti informacije prenesene u toj komunikaciji.

Kao dodatno olakšanje za korisnike, sve aplikacije u Windows Visti koje zahtevaju administratorske privilegije su obeležene malim štitom pored imena. Ovu funkcionalnost omogućuje detektor instalera koji može da prepozna koja aplikacija zahteva administratorske privilegije a koja ne. Na sledećoj slici se vidi jedan takav primer, gde promena vremena zahteva administratorske privilegije, dok promena vremenske zone (više) ne zahteva administratorske privilegije.

Kompatibilnost

Dobro, to je OK, ali šta da radimo sa svim onim grdnim aplikacijama napisanih pre Viste koje zahtevaju administratorske privilegije da bi uopšte funkcionisale? Tu dolazi do izražaja četvrta komponenta UAC tehnologije, a to je virtualizacija fajl sistema i registry baze. BTW, seća li se neko chroot operacije u UNIX operativnim sistemima? Ovakva virtualizacija obezbeđuje aplikacijama koje zahtevaju administratorske privilegije njihovo "virtuelno" okruženje, tj. virtuelne resurse. Npr, kada aplikacija hoće da upiše nešto u Program Files folder, Vista će obezbediti toj aplikaciji privatnu kopiju tog foldera, ali kreiranu u profilu korisnika koji je aplikaciju startovao. Na taj način, aplikacija može da funkcioniše korektno. Po meni, ovakav pristup je samo kratkoročno rešenje problema, dugoročno bi programeri trebalo da koriste sve pogodnosti UAC tehnologije i pišu programe koji ne zahtevaju administratorske privilegije. I tu dolazimo do vrlo bitne stvari: Ako hoće koristiti UAC tehnologiju, programeri će morati malo drugačije da razmišljaju (tu naravno mislim i na Microsoft programere).

Za one programere koji su zainteresovani da razvijaju aplikacije koje će podržavati tj. biti kompatibilne sa UAC tehnologijom, Microsoft je obezbedio dva alata koji su od pomoći: prvi je Standard User Analyzer, koji služi za dijagnozu da li ciljna aplikacija može da radi sa standardnim korisničkim privilegijama, ili joj trebaju administratorske privilegije. Drugi alat je Microsoft Application Compatibility Toolkit, koji je ustvari skup alata za celokupni lifecycle management aplikacija, uključujući i pomoć za rešavanje problema kompatibilnosti sa UAC tehnologijom. Korisno je i pročitati Developer Best Practices and Guidelines for Applications in a Least Privileged Environment, što ustvari predstavlja UAC vodič za programere. Programeri koji malo "dalje" gledaju prepoznaće u ovome potencijal za njihovu prednost u odnosu na konkurenciju…

Jel' radi to čudo i kol'ko to čudo povećava bezbednost?

Pa, radi. U Visti RC2. I Vista RC 1 je imala solidnu implementaciju, dok je implementacija UAC tehnologije u Visti Beta 2 bila katastrofalna. Npr. pokušaj brisanja običnog fajla je okidao dijalog za elevaciju privilegija. I to je ustvari srž celog problema i ključ uspešne implementacije: Naći pravi balans između stvari koje ne zahtevaju administratorske privilegije a istovremeno ne narušavaju bezbednost sistema i onih stvari koje zahtevaju administratorske privilegije. To je ustvari risk management. Bezbednost u kompjuterskim sistemima je, po mom najdubljem ubeđenju, upravo to: upravljanje rizicima.

Zašto je pronalaženje tog balansa toliko važno? Zato što, sam za sebe, pristup sa beskonačnim dijalozima, gde korisnik mora da reaguje i ukuca lozinku ne bi li na kraju nešto dobio (npr. pristup nekom resursu) ne povećava bezbednost. Na kraju korisnik prestane da čita šta piše u dijalogu, i iz očajanja je spreman da uradi svašta da bi došao do krajnjeg cilja. Ovakva tehnologija će biti uspešna jedino ako korisnik može da donese inteligentnu odluku (čitaj zdravorazumsku odluku) o dijalogu. To dalje znači da dijalog mora da pruži korisne informacije korisniku, na osnovu kojih on klikne Yes ili No. U suprotnom, džaba smo krečili...

Kako to funkcioniše u svakodnevnom životu, a primenjeno na prosečnog korisnika? Smatram svoju ženu za prosečnog korisnika: ona koristi kompjuter da bi obavila određene radnje. Pitao sam je da mi navede tačno šta joj treba kada koristi kompjuter, i evo šta mi je rekla: potrebno mi je da mogu da se okačim na Internet bez problema, da mogu da krstarim Internetom, čitam novine i pokoji blog, da mogu da pošaljem i primim e-mail poruke, da snimim na disk slike koje su mi u tim porukama poslate, da koristim Office aplikacije (ponajviše obrada teksta i tabelarne kalkulacije) i snimim te dokumente kako na hard disk, tako i na USB stick, da sa digitalnog fotoaparata prebacim slike i kratke filmove na kompjuter i u nekom programu ih obradim, a možda narežem i koji CD ili DVD, da brišem svoje fajlove koji mi više ne trebaju, da svoj iPod sinhronizujem svakodnevno, da mogu da koritim online banking, i da pri svim ovim radnjama ništa ne "crkne". Vistu imamo instaliranu na kućnom kompjuteru počevši od RC 1 verzije, znači nešto više od dva meseca. UAC tehnologija je uključena, i moja žena ima standardni korisnički nalog na računaru. Za sve to vreme moja žena je obavljala sve gore pomenute radnje, i pri tome ni jednom nije generisan dijalog za elevaciju privilegija.

Do prekjuče. Elem, moja žena se ne "prima" mnogo na najnovija dostignuća na Internetu, međutim, čula se sa prijateljicom iz Londona i ta prijateljica je predložila da probaju da koriste Skype. Zove me žena na posao, pita gde da nađe taj Skype, ja joj dam adresu, ona ga skine i, kroz nekoliko minuta zove me ponovo. Kaže, kompjuter joj traži neki password. Pitam da mi tačno kaže kako ona shvata dijalog koji vidi, i ona ga je protumačila korektno: pošto nema prava kao ja, treba joj password da bi instalirala Skype. To znači da je UAC dijalog nije zbunio, i ona je donela zdravorazumsku odluku da me pozove i potraži password.

A što se mene tiče, ja sam od početka svoje karijere bio neki administrator: prvo sam bio UNIX administrator, pa administrator mreže, pa Linux administrator, pa System administrator (šta god to značilo), pa Windows administrator, pa security administrator, i pravo da vam kažem, ne nedostaje mi uopšte da budem administrator na kućnoj mašini. Koristim standardni korisnički nalog, i do sada nisam primetio nijednu nelogičnost kada mi je Vista tražila administratorovu lozinku. U svim tim slučajevima, radilo se o zadacima koji su stvarno trebali administratorske privilegije.

Koliko procentualno ima prosečnih korisnika (ovde je naravno reš o home korisnicima, ne o business korisnicima) kao što je moja žena? Ja bih rekao više od 80%, mada ima ljudi koji misle da prosečni korisnici predstavljaju više od 90% ukupne korisničke populacije (ko nađe neki podatak neka ga postuje). Za takve korisnike, UAC radi, a bezbednost sistema je veća. Po default-u.

Saša Vidanović radi kao konsultant u Credit Suisse-u u Zürich-u.

Ovo je arhivirana verzija originalne stranice. Izvinjavamo se ukoliko, usled tehničkih ograničenja, stranica i njen sadržaj ne odgovaraju originalnoj verziji.

22 Komentari

Možda vas zanima

Svet

Ukrajina je "pukla"?

Rusija udvostručila svoju ofanzivu u Donbasu tokom prošlog meseca, postižući značajan napredak dok Ukrajina čeka pojačanje u snabdevanju oružjem sa Zapada, navodi AFP.

12:03

7.5.2024.

1 d

Svet

Kina i Francuska se dogovorile: "Dozvolićemo"

Kina će dozvoliti uvoz proteinske hrane svinjskog porekla iz Francuske, kao i uvoz svinjskih iznutrica iz te evropske zemlje, navodi se u današnjim odvojenim saopštenjima kineske carine i francuskog ministarstva poljoprivrede.

19:05

7.5.2024.

1 d

Podeli: