Kääreohjelmat (2-A)

Käyttöjärjestelmiä ei yleensä ole tehty alkujaan kovin turvallisiksi (vrt. hankkeet tähän suuntaan? ) ja toisaalta niissä halutaan ajaa ohjelmia, joihin ei voida täysin luottaa. Tämä ei tarkoita vain verkosta ladattavia ohjelmia vaan yleisemmin kaupallisia valmiita ohjelmistoja (COTS, commercial off-the shelf), joita käytetään laajempien tietojärjestelmien osina.

Ongelma on lähinnä siinä, ettei käyttöjärjestelmän pääsynvalvonta ole riittävän turvallinen. Lisäksi sen olisi vaikea edes hoitaa tehtäväänsä niiden ohjelmien, erityisesti monenlaisten ajureiden (MS) tai laajennusten (Linux) osalta, joita ajetaan osana ydintä. Tietysti käyttöjärjestelmään voitaisiin tehdä muutoksia, mutta se ei tietenkään onnistu COTS-tapauksessa muuten kuin uusilla vastaavilla laajennuksilla.

Täydentävän pääsynvalvonnan voi hoitaa ohjelmien ja resurssien väliin asennettava uusi ohjelmakerros, joka ei edellytä muutoksia kummallekaan puolelleen. Tällainen välikerros siis käärii ('wraps') sovellusohjelman ja välittää kaikki tai osan sen systeemikutsuista: Kääre voidaan asettaa odottamaan tietynlaisia kutsuja ja niiden sattuessa se voi estää kutsun, muuntaa sitä tai sen paluuarvoa. Jos käärittävä kohde on ytimessä, itse kääreenkin pitää olla siellä. Käytännössä sovellusohjelmienkn kääreet voivat olla ladattavia ytimen moduuleja.

Laajasti ymmärrettynä wrapper-tekniikan voi ajatella tarjoavan monenlaista turvapalvelua, myös esim. Kerberos-autentikointi ja SSL-salaus voidaan tulkita käärijöiksi. Suppeassa mielessä wrapper tarkoittaa sellaista järjestelmää, joka tarkistaa, että politiikka sallii käärittävän ohjelman käynnistämisen, mutta ei puutu siihen enempää.

Tärkeä suppeamman tulkinnan mukainen käärijä on TCP-wrapper, tcpd. Sen itsensä tyypillisesti käynnistää Unix-tiedostossa /etc/inetd.conf oleva koodirivi, johon verkosta tuleva palvelupyynnön protokolla sopii. Normaalisti kyseinen rivi käynnistäisi varsinaisen palvelun, mutta nyt käynnistetään tcpd-ohjelma, jolle varsinainen palvelu annetaan parametrina. Seuraavaksi tcpd etsii palvelupyynnölle täsmäyksen tiedostoistaan /etc/hosts.allow ja -deny. Tuloksena voi kyllä olla muutakin kuin palvelun käynnistäminen tai epääminen, mutta toimet eivät liity enää siihen mitä palvelussa itsessään tapahtuu (ja myös epääminen tapahtuu käytännössä -allow -tiedostosta käsin). Sen sijaan tcpd voi tehdä lisätarkistuksia palvelupyynnön oikeutuksen selvittämiseksi (esim. ident käyttäjätunnuksen kyselyyn tai finger kontekstin tarkasteluun), lähettää kutsujalle tiedotteen näytettäväksi käyttäjälle ja luonnollisesti tehdä lokikirjauksen syslogin avulla. Tietenkin käynnistettävä palvelu voi myös olla jokin muu kuin alkuperäinen. Se voi toimia esim. hunajapurkissa, mutta tcpd on joka tapauksessa jättänyt omat kääretoimensa ennen sitä.

Javan virtuaalikone hiekkalaatikkoineen? (ja nykyisin politiikkariippuvaisine suoja-alueineen) on esimerkki käärimisestä, joka toimii ohjelman ympärillä koko ajan. Siinäkin alkuvaiheessa tapahtuu erilaisia tarkistuksia ennenkuin kohdeohjelma päästetään lainkaan käyntiin.

Jatkuvasti käynnissä oleva kääre aiheuttaa lisäkuormaa, jota syntyy myös siitä järjestelmästä, joka hallinnoi kääreitä. Esimerkkinä Fraserin ym. artikkelissa? (1999) esitelty Wrapper Support System käynnistää kääreiden instansseja ja kytkee niihin aktivointisäännöt, eli vahdittavat systeemikutsut, joiden tapahtuessa kääreen täytyy toimia jollain tavalla. Tämä järjestelmä aiheuttaa yli puolet lisäkuormasta, joka tehdyissä kokeiluissa oli kaikkiaan noin 7%. Artikkelissa esitellään myös kieli, jolla kääreohjelmien toiminnallisuus määritellään. [ Lisätietoja tästä hankkeesta ja mm. GPL-ohjelma? ]

Kääreen toiminnalla on yhteys myös tunkeutumisen havainnointiin, koska yhtenä toimintana voi olla kirjanpitotiedon keruu tietynlaisista kutsuista. Toinen näkökulma on tiedostojärjestelmän näkymän rajoittaminen. Kääreillä on kuitenkin vaikea saada kiinni sovellusohjelmien tuottamia turvaloukkauksia ja erityisesti piilokanavien? torjunta voi olla vaikeaa, vaikka sitä nimenomaan myös yritetään kääreohjelmilla (eri lähteissä tähän mahdollisuuteen suhtaudutaan eri tavoin).

Kääreitä on sovellettu myös siten, että tavoitteena ei ole suojautuminen pahantahtoisia vaan ainoastaan virheellisesti toimivia ajureita vastaan. Tälläkin on suuri merkitys vikasietoisuuden ja sitä kautta luotettavuuden kannalta. Ajurit ja laajennukset muodostavat nykyään suurimman osan käyttöjärjestelmien koodista ja aiheuttavat osuuttaan suuremman osan vioista. [ Swift ym. 2003? ]

Kääretekniikalla voi turvallisuuden rinnalla olla tavoitteena sovittimen tapainen asema. Ajatuksena on, että käärittäviä kohteita voitaisiin vaihtaa toisiksi ja että kääreet itse olisivat käyttökelpoisia muissakin käyttöjärjestelmissä.

Unixin systeemikutsu chroot ei ole kääreohjelma, mutta eräänlainen kääre kumminkin. Sillä voi kääriä prosessin näkemän tiedostojärjestelmän juuren ('root'in) joksikin alihakemistoksi. Tällaisessa "putkassa" ('jail') pitää olla kaikki tarpeelliset tiedostot ja hakemistot (/etc, /lib, /usr/lib ja /bin) kopioituna (kovilla linkeillä). Menettelyllä voidaan rajoittaa tiettyjä ohjelmia, tiettyjen käyttäjien oikeuksia tai sitä voi käyttää uuden arveluttavan ohjelmiston tutkimiseen. Erityisesti kääreohjelman turvatehtävä helpottuu, jos sitä voidaan ajaa chroot-rajoitettuna: esim. smap, 'simple mail access protocol' on kokeellinen sähköposti-wrapper, jota voidaan ajaa (esim.) hakemistossa /var/spool/mail/.

LUE: Syksyn 2004 tietoturvaseminaarin raportista? luku 5 "Monitorit ja kääreet", jossa esitellään kaksi erityistä esimerkkiä. Edeltävä luku 4 tarkastelee asiaa hieman yleisemmällä tasolla ja sopii edellä sanotun täydennykseksi (ei silti "LUE").

-- JukkaKoskinen?

SivuTiedotLaajennettu edit

Vaativuus Perus
Valmius Valmisteilla
Tyyppi Ydin
Luokitus Uhkat
Mitä Luottamuksellisuus
Miltä Ihmisetön uhka
Missä Organisaatio
Kuka Tite-ammattilainen
Milloin Ennakolta
Miksi Hyvä tapa
Print version |  PDF  | History: r2 < r1 | 
Topic revision: r2 - 26 Sep 2010 - 11:10:27 - MarkoHelenius
 

TUTWiki

Copyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TUTWiki? Send feedback