Tapaustutkimus – Qubes OS

Johdanto

Qubes OS on puolalaisen Invisible Things Labin kehitteillä oleva avoimenkoodin käyttöjärjestelmä, joka on rakennettu Xen-virtualisoinnin ja Linuxin yhdistelmänä. Käyttöjärjestelmä pyrkii tarjoamaan tietoturvaa eristämällä järjestelmän osia toisistaan. Ajatuksena tämän takana on taata, etteivät edes mahdollisesti tietomurrolle altistuneet järjestelmän osat pääse vaikuttamaan muun järjestelmän eheyteen. Tässä tapaustutkimuksessa perehdytään keinoihin, joilla Qubes OS toteuttaa eristämistä järjestelmän osien välillä, sekä pyritään selvittämään keinojen hyötyjä ja haittoja.

Käyttöjärjestelmien ongelmia

Käyttöjärjestelmä hallinnoi tietokoneen resursseja, joten sen tietoturvallisuus on käyttäjän ja tämän tietojen kannalta erittäin olennaista. Käyttöjärjestelmissä parannetaan tietoturvaa hyödyntämällä paljon laitteiston, kuten prosessorin, toteuttamia ominaisuuksia, eikä Qubes OS ole poikkeus. Prosessorin avulla voidaan laitetasolla estää esimerkiksi laittomia muistiviittauksia ja tarjota tehokkaita ratkaisuja vaikkapa virtualisointiin.

Useiden käyttöjärjestelmien ongelmana on, että ne ovat todella suuria ohjelmia ja niiden etuoikeutettuun tilaan sisältyy myös paljon kolmansien osapuolten laiteajureita ja muita ohjelmistoja. Formaali tai sitä vähemmänkin vaativa oikeaksi todistaminen on vaikeaa, ellei mahdotonta. Lisäksi käyttöjärjestelmät käyttävät usein vain kaksitilaista järjestelmää (user mode/supervisor mode), jossa käyttöjärjestelmä käyttää etuoikeutettua tilaa. Jos hyökkääjä pääsee käyttämään tätä tilaa, mikä monoliittisissa käyttöjärjestelmissä on hyvinkin mahdollista, niin koko järjestelmä on haavoittuvainen.[1][2]

Mikroydinjärjestelmät ovat pyrkineet ratkaisemaan tätä ongelmaa hieman samalla tavalla kuin Qubes OS eli siirtämällä ulos ytimestä kaiken koodin, joka ei tarvitse etuoikeutettua tilaa. Niiden suosio on kuitenkin jäänyt vähäiseksi heikoksi väitetyn tehokkuuden vuoksi. Tähänkin asiaan saattaa olla tulossa muutoksia tulevaisuudessa, kuten Tanenbaum ym. toteavat vuonna 2006[3]. Artikkelissaan he ennustavat, että monoliittisista ytimistä ollaan siirtymässä mikroytimiin tai vastaaviin ratkaisuihin niiden rakenteen tuoman turvallisuuden vuoksi.

Arkkitehtuuri

Pääpiirteet

Qubes OS toteuttaa tietoturvaa eristämällä järjestelmän palasia toisistaan virtualisoinnin avulla. Virtualisointi toteutetaan ns. kevyillä virtuaalikoneilla, joita pyöritetään useita rinnakkain käyttäjän määrittämillä eri luottamustasoilla. Käyttöjärjestelmä pyrkii tarjoamaan parempaa tietoturvaa yksittäisten käyttäjien tietokoneisiin, eikä se siis ole kohdistettu palvelintoimintaan eikä myöskään useamman käyttäjän käyttöjärjestelmäksi.

Virtualisoinnin toteuttaa Xen, jonka avulla pyöritetään useita käyttäjän virtuaalikoneita. Ne toimivat siis toisistaan eristettyinä ja ovat käyttäjän määriteltävissä. Taustalla on idea, että kaikki ohjelmat, jotka ovat liian suuria kunnolla tarkistettaviksi, sisältävät haavoittuvuuksia ja siksi ne tulee eristää. Qubes OS:n tekijät keskittyvät vain kriittisten järjestelmänosien tarkistamiseen ja pyrkivät minimoimaan etuoikeutetun koodin määrän.

Xen ja virtualisointi

Xen koostuu kolmesta osasta: hypervisorista, etuoikeutetusta hallinnointialueesta (dom0) ja useasta etuoikeudettomasta alueesta (domU). Siinä missä yleisimmissä käyttöjärjestelmissä on useita miljoonia rivejä koodia on Xenin etuna ”vaivaiset” muutama satatuhatta riviä koodia. Tekijät myöntävät, että Xen:in kokoista ohjelmaa ei voi formaalisti todistaa, joten he pyrkivät manuaalisesti auditoimaan sen ja pitämään sen mahdollisimman pienenä, jolloin mahdolliset haavoittuvuudet pysyvät mahdollisimman vähäisinä.

Xen hypervisor on suoraan tietokoneen laitteiston päällä toimiva ohjelmistokerros, joka korvaa käyttöjärjestelmän paikan laitteiston käyttäjänä ja mahdollistaa useamman eri käyttöjärjestelmän suorituksen samanaikaisesti.[4] Dom0 pidetään Qubes OS:ssä mahdollisimman pienenä, eikä siellä ole muuta ulkopuolelta käsiksi päästävää koodia kuin järjestelmän rekisteri ja graafisen käyttöliittymän koodi. Kaikki muut käyttöjärjestelmän toiminnot, kuten laiteajurit ovat siirretty domU- alueisiin, jossa niiden toiminta on rajoitettua.

Virtualisointi itsessään ei tuo tietoturvaa, mutta sen käyttö on mahdollistanut sen, että koko järjestelmä on voitu suunnitella uusiksi edellä mainitulla tavalla ja silti sisällytetty mahdollisuus säilyttää yhteensopivuus kaikkiin ”tavallisiin” käyttöjärjestelmiin. Tällöin ei tarvitse luoda alusta alkaen kaikkia järjestelmän ohjelmia uudestaan vaan voidaan käyttää jo olemassa olevia ohjelmia, jotka eivät edes tajua olevansa eristetyssä muistialueessa. Tämä mahdollistaa Qubes OS:n tavoitteleman eristyksen järjestelmän osien välillä.[5]

Virtuaalikoneet[1]

Qubes OS käyttää Intelin VT-d -tekniikkaa (ks. jäljempänä) suojaamaan Xen-järjestelmän ja tarjoamaan joillekin virtuaalikoneille väylän laitteille. Lisäksi järjestelmän palasia jaetaan omiin virtuaalikoneisiinsa, joita on kahden tyyppisiä: sovelluksien virtuaalikoneita (AppVM) ja systeemipalveluiden virtuaalikoneita (SystemVM).

SystemVM:t toimivat etuoikeudettomilla alueilla ja toimittavat käyttöjärjestelmän normaaleja rutiineita. Niillä on VT-d -tekniikalla toteutettu suora yhteys laitteeseen, jota ne käyttävät. Yksi SystemVM on verkkoalue, jossa sijaitsevat verkkokortin ajurit ja protokollapinot. Toinen on varastointialue, jolla on yhteys kovalevyihin, USB-muisteihin ja CD/DVD-asemaan, ja se sisältää tiedostojärjestelmän ja levyajurit. Varastointialue on kriittinen osa järjestelmää, koska kaikkien virtuaalikoneiden tiedot kulkevat sen kautta. Sen tietojen suojaksi on otettu käyttöön kryptografiaa, jolloin varastointialue ei pääse käsiksi muiden virtuaalikoneiden tietoihin. Lisäksi Intel TXT:n (ks. jäljempänä) avulla estetään systeemin käynnistyslohkon muokkaus. Pahimmassakaan tapauksessa hyökkääjä ei siis pääse käsiksi käyttäjän tietoihin vaan aiheutaa korkeintaan ongelmia saatavuudelle.

AppVM:t ovat käyttäjän sovelluksille tarkoitettuja virtuaalikoneita, joille käyttäjä voi määritellä mieleisiään luottamustasoja ja joissa säilötään kaikki käyttäjän tiedostot. AppVM:t pystyvät jakamaan yhteisen käyttöjärjestelmän, jolla ne toimivat. Tällä hetkellä vaihtoehtona on vain Linux, mutta suunnitteilla on lisätä tuki useammalle eri järjestelmälle. Käyttäjä voi tehdä useita virtuaalikoneita. Ajamalla niissä eri luottamustason ohjelmia, muut säilyvät turvassa, vaikka yksi taso vaarantuisikin. Esimerkiksi vaikka nettiselailuvirtuaalikoneen selaimeen asentuu troijalainen, ei se pääse tekemään MitB-hyökkäystä pankkimaksuvirtuaalikoneen selaimen pankkitransaktioon.

Intel VT-d ja TXT[6][7]

Intel Trusted Execution Technology (TXT) tarjoaa eristetyn suoritusympäristön keskusmuistista ja suljetun varaston, jossa voidaan säilyttää arkaluontoista tietoa kuten salausavaimia. Lisäksi TXT tarjoaa mahdollisuuden estää käynnistyslohkon muokkaus. Tämä varmistaa, että järjestelmän suoritus aloitetaan oikeasta paikkaa. TXT:n avulla voidaan toteuttaa myös esimerkiksi salaus näppäimistön ja tietokoneen välillä, jolloin nuuskinta estetään.

Intel VT-d puolestaan on I/O-laitteiden virtualisointiin tarkoitettu teknologia, joka tarjoaa tehostettua eristämistä eri I/O-laitteiden välillä. Teknologian avulla yhdessä SystemVM:ssä oleva laiteajuri pääsee vain sille määriteltyyn laitteeseen ja muistialueeseen käsiksi. Viallisen tai pahantahtoisen laiteajurin toiminta rajoittuu tehokkaasti vain sen omaan virtuaaliavaruuteen. Tämä tarjoaa suojaa ja parempaa tehokkuutta laitteistopuolelta useiden virtuaalikoneiden pyörittämiseen ja sillä saavutetaan parempaa turvaa ja saatavuutta.

Vaatimukset

Qubes OS ei ole mitenkään kevyt käyttöjärjestelmä. Se vaatii markkinoiden uusimpia tekniikoita toimiakseen, mikä on ymmärrettävää virtualisoinnin takia. Onko se hyväksyttävää käyttäjien kannalta, jää nähtäväksi.

Minimi[8]:
  • 4GB RAM

  • 64-bit Intel- tai AMD-prosessori

  • Intel-näytönohjain (core iX -sarjaa suositellaan, Nvidia ja ATI toimivat, mutta niitä ei ole tuettu)

  • 10GB kovalevytilaa (isoa SSD-levyä suositellaan)

Hyödyt ja haitat

Tässä luvussa tarkastellaan, mitä hyötyjä ja haittoja Qubes OS tuo mukanaan ja verrataan niitä hieman muihin virtualisointitekniikoihin ja tavallisiin käyttöjärjestelmiin.[9]

Hyödyt

  • Eristys virtuaalikoneiden välillä on tehokkaampaa kuin tavanomaisten käyttöjärjestelmien prosessien eristys.

    • Laiteajurit eristetty omiin virtuaalikoneisiinsa, jolloin niiden koodin ei tarvitse olla luotettua järjestelmän eheyden kannalta. Tätä esimerkiksi KVM ei tue.

    • Eristää tehokkaasti epävakaat ja tietomurrolle altistuneet virtuaalikoneet.

    • Osa järjestelmän tietoturvasta vastaavista osista kuten palomuuri tai IDS voidaan sijoittaa omiin virtuaalikoneisiinsa, joihin haittaohjelma ei pääse käsiksi ja siksi sen toiminta voidaan havaita tai estää.

  • Paljon vähemmän täysillä oikeuksilla ajettavaa koodia kuin tavallisissa käyttöjärjestelmissä ja useimmissa virtualisointi ratkaisuissa kuten esimerkiksi KVM:ssä. Toisin sanoen pienempi TCB (Trusted Computing Base).

  • Mahdollistaa käyttäjälle virtuaalikoneiden jaon omiin tarpeisiin ja turvavaatimuksiin sopiviksi.

Haitat

  • Useiden virtuaalikoneiden ylläpito vaatii paljon keskusmuistia.

  • Paljon laitteistoriippuvaisia toiminnallisuuksia.

  • Ei tue 3D:tä AppVM:ssä, joten sitä tarvitsevat pelit ynnä muut eivät toimi.

  • Jos jokin SystemVM altistuu haittaohjelmalle, on palvelunestohyökkäyksen mahdollisuus ilmeinen.

Päätelmä

Qubes OS tarjoaa hyviä ratkaisuja käyttöjärjestelmiä vaivaaviin tietoturvaongelmiin ja antaa myös mahdollisuuden käyttäjälle jaotella toimintansa luottamustasoihin. Lisäksi käyttöjärjestelmä hyödyntää kehittyneitä laitteistotason suojauksia, uusinta tekniikkaa ja paljon kryptografiaa. Suunnittelu on alusta alkaen tehty tietoturvaa ajatellen ja siksi järjestelmä voi tulevaisuudessa olla varteenotettava vaihtoehto yrityksien työasemille ja yksityisille tietoturvastaan huolestuneille. Jos kuitenkin vaaditaan korkeaa suorituskykyä, rajoittuneet laitteistovalinnat ja järjestelmän keskeneräisyys, jättävät Qubes OS:n toistaiseksi (2011) vielä lupauksen asteelle.

Lähteet

SivuTiedotLaajennettu edit

Vaativuus Jatko
Valmius Kehitteillä
Tyyppi Esitys
Luokitus Atk
Mitä Eheys
Miltä Useita
Missä Järjestelmä
Kuka Muu
Milloin Rakennettaessa
Miksi Muu
Print version |  PDF  | History: r11 < r10 < r9 < r8 | 
Topic revision: r11 - 25 Sep 2012 - 19:36:53 - JukkaKoskinen
 

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