På hackersamlingen Black Hat Briefings i august 2006 holdt den unge polske IT-sikkerhetseksperten Joanna Rutkowska en oppsiktsvekkende presentasjon under tittelen Subverting Vista Kernel for Fun and Profit. Her lanserte hun konseptet «Blue Pill»: En type ondsinnet kode, nærmere bestemt en «rootkit», som bruker Intel eller AMDs virtualiseringsteknologi for å kapre Windows Vista-maskiner på en måte som er bortimot umulig å avsløre.
Rutkowska har siden arbeidet videre med konseptet, og rapporterer jevnlig om det på BluePillProject.org. I fjor høst gikk hennes nystiftede selskap, Warszawa-baserte Invisible Things Lab, inn i et partnerskap med BIOS-leverandøren Phoenix Technologies med tanke på å utvikle en ny type tynn hypervisor for PC-er. Phoenix bruker Blue Pill for å bryne sitt prosjekt HyperCore: Det gjelder ikke bare sikkerhet, men også for å prøve ut en del felles ideer, blant annet såkalt nøstet virtualisering («nested virtualization») der enhver hypervisor selv kan være vert for en eller flere hypervisorer i en nærmest uendelig kjede.
BIOS-leverandørens støtte til Blue Pill-prosjektet har også medført at koden til Blue Pill er gjort fritt tilgjengelig for alle, som åpen kildekode.
Rutkowska arbeider med Blue Pill både som bevis på en ny type angrep, og for å kartlegge hva som trengs for å verne om sikkerheten i virtualiserte miljøer.
I går presenterte hun prosjektet på den årlige konferansen til IT-sikkerhetsselskapet mnemonic, Risk 2008.
Det som er poenget med Rutkowskas Blue Pill, er at koden, når den kommer inn i en Vista-drevet PC, straks legger seg under operativsystemet som en kontrollerende hypervisor. Operativsystemet blir degradert fra vert til gjest. Ingen prosess i operativsystemet er i stand til å oppdage at det nå kjører oppe på en hypervisor, eller reagere på hva som skjer i hypervisoren.
– Det er ingen steder i operativsystemet med haker mot Blue Pill, forklarer Rutkowska. – Blue Pill legger seg rett inn, og bryr seg ikke om å endre oppstart sekvens eller BIOS. Virtualiseringen gjelder ikke I/O, slik at virkningen på ytelsen er neglisjerbar. Det nye 3D-grafikkortet ditt vil virke aldeles utmerket, selv om Blue Pill styrer PC-en.
Hvordan skal man kunne oppdage om PC-en er kapret av en Blue Pill?
– De som har sagt hittil at de har en kur mot Blue Pill, har i praksis bare en metode for å avsløre hvorvidt det finnes en virtuell maskin i systemet eller ikke. Etter hvert som virtualisering blir mer populært, blir slike metoder absolutt meningsløse.
Man må med andre ord utvikle metoder som eksplisitt er i stand til å avsløre ikke bare at det finnes en virtuell maskin i systemet, men også at det i hypervisoren pågår lumske ting.
– Det finnes heuristiske metoder som kan tenkes brukt til å avsløre en Blue Pill i minne. Men det finnes samtidig trivielle metoder for å lure unna Blue Pill slik at den ikke kan oppdages.
I mange fora siden august 2006 har Rutkowska stått på sitt: Det finnes ingen måte som konsekvent vil være i stand til å avsløre en Blue Pill på en PC.
– Siden Blue Pill ikke kan avsløres, må det satses desto sterkere på å hindre den fra å infisere en PC. Man kan selvsagt ikke slå av all virtualisering. Derfor må man heller satse på metoder som kan sørge for den hypervisoren man installerer i bunn, er både klarert og sikker.
Rutkowska har utarbeidet to mulige metoder, som begge bruker nye prosessorers TPM-modul, og som hun kaller henholdsvis «static root of trust measurement» og «dynamic root of trust measurement». Særlig den siste er forholdsvis komplisert. Begge har den svakheten at de bare sørger for at hypervisoren er klarert.
– De kan ikke garantere at hypervisoren er sikker. Klarering [«trust»] og sikkerhet er to forskjellige ting. Skal hypervisoren være sikker, må den være fri for lus. Og det er svært vanskelig å gjøre noe med.
En metode for å innføre lus i en ellers klarert – eller betrodd – og sikker hypervisor, er å utnytte det faktum at hypervisorer gjerne lar gjestende operativsystemer kommunisere direkte med maskinvarekomponenter for å spare tid, det vil si bedre ytelsen.
– Enhver ordning som lar operativsystemet kommunisere direkte med maskinvare, gjennom hypervisoren, innebærer at man tillater direkte tilgang til minne. Og det er ingen beskyttelse på slike forespørsler for DMA [«direct memory access»]. Derfor er det mulig å utnytte slike kall til å injisere fremmed kode i minne, og dermed korrumpere hypervisoren.
Dette er med andre ord en metode for å lure en Blue Pill under hypervisoren. Blue Pill har nemlig en løsning for nøstet virtualisering. Det betyr at den ondsinnede hypervisoren (Blue Pill) like gjerne kan være vert for systemets egen klarerte hypervisor som for et operativsystem, uten at det påvirker forholdet mellom operativsystemet og den klarerte hypervisoren.
Rutkowska mener en teknologi kjent som IOMMU («input/output memory management unit») er løsningen på akkurat dette problemet. En vanlig MMU står mellom prosessor og minne, og tilordner fysiske minneadresser til de virtuelle adressene som CPU-en opererer med. Tilsvarende står en IOMMU mellom en maskinvareenhet og minnet, og oversetter adressene som gis av enheten til fysiske adresser i minnet.
– En IOMMU som styres av hypervisoren kan brukes til å begrense maskinvarekomponenters adgang til bestemte områder i minnet. Det betyr at en IOMMU kan hindre forsøk på å bruke direkte kall mellom et gjestende operativsystem og maskinvaren, til å korrumpere selve hypervisoren.
Rutkowska mener at en IOMMU er så viktig, at ingen i bransjen må tenke seg å slippe en tynn hypervisor som ikke er utstyrt med en IOMMU.
Blant selskapene som har spesifisert IOMMU for hypervisorer er Intel, Sun og IBM. Intels er døpt «Virtualization Technology for Directed I/O», med VT-d som kortversjon. Maskinvarestøtten for IOMMU er imidlertid fortsatt sterkt begrenset.
Av sikkerhetshensyn er Rutkowska ellers opptatt av at hypervisorer skal være så tynne som mulig.
Hun peker på at mens kjernen i noen operativsystemer kan være svært sikre, i betydning tilnærmet lusfrie, er den faktiske kjernen svulmet opp fordi den funksjonelt omfatter også alle drivere. Det innebærer at den funksjonelle kjernen kan være befengt med ganske mange sårbarheter. Hun vil ikke at noe liknende skal skje med hypervisorer. De må være tynne, så godt som lusfrie, og ikke belastes med unødvendig funksjonalitet.
– Ellers går vinningen opp i spinningen. Den forenklingen hypervisorer utgjør i dag, vil være tapt dersom hypervisorer svulmer opp på samme måte som operativsystemene har gjort det.
Rutkowska peker på at det har allerede vært konstatert flere sikkerhetshull i hypervisorer, fra både VMware, Microsoft og Xen. Skal de holdes tilnærmet lusfrie, må kodemengden begrenses. En sårbarhet i en hypervisor som kontrollerer mengder av virtuelle maskiner, kan få langt større følger enn en sårbarhet begrenset til et operativsystem.