tiistai 10. marraskuuta 2009

UAC ei korvaa tietoturvaohjelmia

Nyt kun Windows 7 on julkaistu, tietoturvaohjelmistoja valmistavat tahot julkaisevat omia tutkimuksiaan siitä, että edelleen Windowsissa tarvitaan tietoturvaohjelmistoja. Ja kyllä, ne ovat tässä oikeassa. Kenties siksi on syytä muistuttaa siitä, mikä UAC on ja miksi se aikoinaan Vistaan kehitettiin.

Ennen Vistaa


Ennen Vistaa Windowsissa oli kovin vaikeaa käyttää ns. rajoitettua käyttäjätiliä (nykyään tunnetaan nimellä Normaali käyttäjätili, eng. Standard user account), koska suuri osa ohjelmista oli kirjoitettu siten, että ne olettivat niillä olevan järjestelmänvalvojan (eng. Administrator account) rajattomat oikeudet järjestelmään. Allekirjoittanut on käyttänyt kotona jopa Windows XP:tä rajoitetuilla oikeuksilla, ja voin kertoa, että se jos mikä vaati viitseliäisyyttä, eikä kaikkia ohjelmia vain saanut millään toimimaan rajoitetulla tilillä.

Tarvitsivatko monikaan näistä ohjelmista oikeasti järjestelmänvalvojan korotettuja oikeuksia? Itse asiassa korotettuja oikeuksia oikeasti tarvitsevia ohjelmia on pienen pieni joukko, mutta ennen Vistaa ohjelmistojen kehittäjät eivät viitsineet ottaa tällaisia asioita huomioon, olihan oletuksena kaikilla järjestelmänvalvojan tili korotettuine oikeuksineen joka tapauksessa käytössä. Niinpä moni ohjelma on alun perin suunniteltu ajattelemattomasti siten, että ohjelma huomaamattaan vaatii korotettuja oikeuksia, vaikkei se todella niitä tarvitsisi toimiakseen.

Miksei järjestelmänvalvojan tiliä?


Mitä vikaa sitten on käyttää järjestelmänvalvojan tiliä ja korotettuja oikeuksia? On hyvä muistaa, että Windows on käytetyin käyttöjärjestelmä, ja osittain tätä kautta varmasti hyökätyin käyttöjärjestelmä. Rikolliset pyrkivät tekemään haittaohjelmansa siten, että ne toimisivat mahdollisimman suuressa konekannassa, siksi heitä ei juuri kiinnosta kirjoittaa haittaohjelmia marginaalisille käyttöjärjestelmille, kuten esim. Linuxille. Linuxilla muuten on yksi järkevä asia puolellaan, siitä tuonnempana enemmän. Rikolliset siis pyrkivät saamaan tavallisten käyttäjien koneita haltuunsa eri syiden takia, yleensä kuitenkin taustalla nykyään on järjestäytynyt rikollisuus ja rahallisen hyödyn tavoittelu. Siinä missä järjestelmänvalvojan tilin käyttäminen toki helpottaa koneen ylläpitoa, se helpottaa myös haittaohjelmien toimintaa. Varsinkin ennen Vistaa Windows on osaamattomissa käsissä todellinen haittaohjelmaimuri: sille tehdään paljon haitakkeita, ja moni käyttää Windowsia järjestelmänvalvojana, joka taas mahdollistaa haittaohjelmien helpon tarttumisen.

Ennen oli ennen ja nyt on nyt


Eikö sitten entistä valistuneemmat käyttäjät takaa sen, etteivät haittaohjelmat enää niin vain järjestelmään tartukaan? Tosiaan, ennen vanhaan haitakkeita lähetettiin mm. sähköpostin välityksellä, ja käyttäjä yleensä itse klikkasi epäilyttävän liitteen auki, jolloin haitallinen ohjelmisto pääsi ajoon. Vuosien opettamisella tavalliset käyttäjät ovat pikku hiljaa oppineet olemaan klikkaamatta kaikkea eteen tulevaa, joten rikolliset ovat siirtyneet entistä viekkaimpiin viritelmiin. Nykyään suurin osa haitakkeista tarttuu Internet-sivustoilta, jopa ns. turvallisten sivujen kautta (katso cross site scripting, XSS) voi saada haittaohjelmatartunnan. Käyttäjältä itseltään ei oikeastaan vaadita mitään toimia, pelkkä haitallisella sivulla vierailu voi riittää. Toki edelleen myös käyttäjä voi olla osallisena saastumiseen, esim. usein käytetty keino on ilmoittaa, että jokin sivulla oleva video vaatii muka jonkun videokoodekin, jotta video voitaisiin esittää, ja ladatessaan tällaisen koodekiksi naamioidun haittaohjelman tietämätön käyttäjä toivottaa haittaohjelman tervetulleeksi järjestelmäänsä.

Edellä kerrottu olisi estettävissä, järjestelmänlaajuisesti ainakin, jos käytettäisiin normaalia käyttäjätiliä. Haitalliselta sivustolta selaimen kautta yrittävä haitake ei pääsisi asentumaan, eikä tietämätön käyttäjä saisi asennettua huijaavaa videokoodekia, koska häneltä puuttuisi oikeudet asentaa ohjelmaa järjestelmään (tietävä, järjestelmänvalvojan oikeudet omaavaahan ei taas menisi moista asentamaan, eihän?). Olisipa järjestelmä suojassa niin tahallisilta kuin tahattomilta muutoksilta, joita osaamaton käyttäjä voisi tehdä.

Jotain on tehtävä, ja on tehtykin


Koska Windowsissa on aina käytetty päivittäisessäkin käytössä järjestelmänvalvojan tiliä, millä ihmeellä käyttäjät saataisiin siirtymään normaalin tilin käyttäjiksi? Ainakin ohjelmistojen pitäisi toimia myös normaalilla tilillä, mutta toisaalta järjestelmänvalvojan korotettujen oikeuksien tulee olla helposti käytettävissä tarvittaessa. Myös vanhojen, ennen Vistaa tehtyjen ohjelmien tulisi toimia normaalilla tilillä ilman, että käyttäjän tulisi nähdä vaivaa asian eteen. Siitä se ajatus sitten varmaan lähti.

Vistan kanssa esitelty UAC (User Account Control), eli Käyttäjätilien valvonta, toi joukon nerokkaita muutoksia järjestelmään.

Ensiksikin oletuksena järjestelmän valvojan tilistä tehtiin niin sanottu suojattu järjestelmänvalvojan tili (Protected Administrator, PA) jolla oletuksena on käytössään normaalin käyttäjätilin oikeudet, samalla istunnolla toki on olemassa ja odottamassa korotetut oikeudet. Mitä hienoa tässä siis on? Tällä saadaan ohjelmistokehittäjät pikkuhiljaa suunnittelemaan ohjelmat siten, että ne toimivat normaaliltakin tililtä. Sillä jos kerran järjestelmänvalvojakin käyttää oletuksena normaaleita oikeuksia entisten järjestelmänvalvojan korotettujen oikeuksien sijaan, on tämä otettava huomioon ohjelmistoja suunniteltaessa. Varsinkin kun ohjelmiston muokkaaminen siten, että se toimii ilman järjestelmänvalvojan oikeuksia, ei ole kovinkaan vaikeaa. Joten aina vain enemmän ohjelmistoja on tehty siten, että ne toimivat ilman korotettuja järjestelmänvalvojan oikeuksia. Jos siis ohjelmistot tehdään toimimaan siten, että ne toimivat ilman korotettuja oikeuksia, syyt pysytellä järjestelmänvalvojan tilillä vähenevät olemattomiin.

Toinen UAC:n idea oli tarjota ohjelmilla mahdollisuutta pyytää korotettuja oikeuksia tarvittaessa. Jos jokin ohjelma tarvitsee korotettuja oikeuksia, se voi pyytää niitä tarvittaessa, eikä käyttäjän tarvitse normaalilta tililtä antaa kuin järjestelmänvalvojan tunnukset. UAC mahdollistaa tämän, eikä käyttäjän tarvitse esim. ylläpitotoimia varten kirjautua erilliselle järjestelmänvalvojan tilille.

Kolmas tärkeä asia on tiedostojen ja rekisterin virtualisointi, jotka omalta osaltaan auttaa "väärin" tehtyjä ohjelmia toimimaan oikein myös ilman korotettuja oikeuksia. Usean ennen Vistaa tehdyn ohjelman ongelma on se, että ne olettavat niillä olevan täydet oikeudet järjestelmän kansioihin (esim. %SystemRoot% ja %ProgramFiles%) tai rekisteriin (HKEY_LOCAL_MACHINE\SOFTWARE) joihin niillä ei olekaan enää oikeuksia Vistassa. UAC:n tiedostojen ja rekisterin virtualisointi rientää tässä avuksi, ja se uskottelee ohjelmalle, että se voi edelleen kirjoittaa alueille joille sillä ei oikeasti ole oikeuksia.

Olet kokenut valaistuksen, oletko?


Jos jaksoit lukea koko tekstin, ymmärrät kenties ettei UAC:tä ole suunniteltukaan korvaamaan tietoturvaohjelmistoja. Edelleen tarvitaan palomuuri- yms. tietoturvaohjelmistoja, ja ne kaikki ohjelmistot on edelleen pidettävä päivitettynä. Mutta yhdessä normaalin käyttäjätilin kanssa, UAC antaa erittäin tukevan pohjan rakentaa turvallinen käyttöjärjestelmä. Luit oikein, Windowsista saa turvallisen käyttöjärjestelmän kyllä, mutta se vaatii, että haluat sitä ja toimit sen mukaan: Käytä siis normaalia käyttäjätiliä päivittäisessä käytössä.

Mutta odota, ei tässä vielä kaikki


Sen lisäksi että käytät normaalia tiliä, suosittelen tutustumaan myös Tietojen suorittamisen estämiseen (Data Execution Prevention, DEP). DEP auttaa tietokoneen suojaamisessa valvomalla sitä, että ohjelmat käyttävät järjestelmän muistia turvallisella tavalla. Jos jokin ohjelma esimerkiksi yrittää suorittaa ohjelmakoodia muistista väärällä tavalla, tietojen suorittamisen estäminen sulkee ohjelman. Yhdessä DEP:n kanssa toimiva ASLR (Address Space Layout Randomization) antaa lisäsuojaa, sijoittamalla järjestelmätoimintoja sattumanvaraisiin sijanteihin. DEP ja ASLR täydentävät siis toisiaan: ASLR tekee hyökkäyksen vaikeaksi, koska hyökkääjä ei tiedä missä koodi sijaitsee. Ja jos tarttuminen onnistuukin, DEP estää koodin ajon.

Oletuksena DEP valvoo Windowsin tärkeitä ohjelmia ja palveluita, mutta voit parantaa suojausta asettamalla tietojen suorittamisen estämisen valvomaan kaikkia ohjelmia.

Ai niin, melkein unohtui. Se järkevä asia Linuxista, joka tekee siitä omalta osaltaan turvallisen: Linuxia käytetä järjestelmänvalvojan tiliä vastaavalla käyttäjätilillä. Tämä on itsestään selvää Linux -puolella, ja tämän pitäisi olla selvää myös Windows -puolella.

Lisää tietoa


Käytä päivittäisessä käytössä normaalia käyttäjätiliä
UAC:n tiedostojärjestelmän ja rekisterin virtualisointi
Tietojen suorittamisen estäminen

1 kommentti:

atanos kirjoitti...

Hyvää tekstiä, kiitos tästä! Eiköhän tuosta ja noista linkeistä osaa se kuuluisa Perttikin lukea, että miten sitä UAC:ta voi käyttää hyödyksi haitakkeita vastaan ja miten sitä muutenkin käytetään avuksi ja hyödyksi :)

Eli hyvät ihmiset, katselkaa vähän mille ohjelmille niitä järjestelmänvalvojan oikeuksia annatte, ainakin jos/kun UAC sattuu kysymään jostakin tuntemattomasta ohjelmasta joka sijaitsee esim. nettiselaimen väliaikaistiedostoissa ;)