Hack-kode stjeler CPU-tid uten å bli oppdaget

Tre forskere har utredet en ny type angrep som virker mot Linux, Windows og Unix.

I forkant av en internasjonal samling i Boston i august av eksperter innen IT-sikkerhet – Usenix Security ’07 – har tre av dem publisert utredningen som de skal presentere der: Secretly Monopolizing the CPU Without Superuser Privileges.

De tre, Dan Tsafrir, Yoav Etsion og Dror G. Feitelson, sogner alle til School of Computer Science and Engineering ved Hebrew University i Jerusalem. En av dem, Tsafrir, er dessuten knyttet til IBMs Watson Research Center i delstaten New York.

Utredningen viser hvordan man kan lage et program som belaster kapasitet på en prosessor, og som operativsystemet ikke er i stand til å avsløre: Prosessen er totalt usynlig for operativsystemets overvåkingsmekanismer. Belastningen den påfører CPU-en, «bokføres» på de øvrige prosessene som kjører, i den grad operativsystemet i det hele tatt merker den. Programmet krever ikke annet enn normale brukerrettigheter.

Metoden kan brukes til å lage et hackerverktøy som kan kjøre et hvilket som helst program skjult for maskinens operativsystem, og følgelig også skjult for alle slags overvåkingsverktøy og innbruddsvern.

Forskerne har døpt verktøyet «Cheat» – «snyt» – og lar den styres slik:

cheat p prog

I denne kommandoen er «prog» det vilkårlig valgte programmet som skal kjøres i det skjulte, og p er den prosentandelen av CPU-tiden som prog skal kapre.

Kontrollmekanismen til de fleste av dagens allmenne operativsystemer krever at det lages en «interrupt», kalt «tick» ved jevne tidsintervaller. Avhengig av operativsystem går det typisk mellom 1 og 15 millisekunder mellom hver tick.

Ved hver tick får operativsystemet innsyn i alt som skjer. Angrepet går derfor ut på å sørge for at cheat aldri kjører et program når det kommer en tick: Prosessene til cheat er bare aktive i tidsrommet mellom to tick. Operativsystemene har mekanismer på plass for å hindre at slikt skjer. Forskerne viser hvordan disse mekanismene kan omgås, også av programmer uten spesielle privilegier. Dette bildet fra utredningen viser hva som skjer:

Cheat-prosessen er den røde. «Clock interrupt» er ticken. Uttrykket «billed» viser til hvordan operativsystemet bokfører klokkesyklusene som cheat har brukt.

Cheat virker på Linux 2.4, Linux 2.6 (der tick-mekanismen ble endret i forhold til 2.4), BSD, Unix-variantene Solaris, AIX, HPUX og IRIX, samt Windows. Den virker ikke på operativsystemer som benytter andre kontrollmekanismer enn tick, det vil si i hovedsak sanntidssystemer som QNX og Mac OS.

Forsøkene med Cheat viser at den uten videre kan kapre 80 prosent av klokkesyklusene til en prosessor uten at verken operativsystem eller sikkerhetsverktøy kan avsløre hva som faktisk skjer: De «ærlige» prosessene får 20 prosent av CPU-tiden, men bokføres for alt. Forsøkene med ulike fordelingsparametere viser også at Cheat får nøyaktig den prosentandelen av CPU-tiden som parameteren tilsier.

Det kan tenkes alle former for skrekkscenarier dersom ondsinnede hackere lykkes med å bruke angrep av typen cheat. Cheat-kode virker på PC-er og servere. Et intelligent angrep vil legge opp til at cheat nøyer seg med bare noen få prosent av CPU-tiden, for ikke å vekke mistanke. Bare fantasien setter grenser for hva slags skade som kan utføres: Maskiner kan brukes som zombier, følsom informasjon kan kapres, tjenester kan saboteres, nettbanker kan settes ut av spill, data kan forfalskes og så videre.

For å verne mot cheat, må operativsystemene endres slik at de både registrerer mer nøyaktig hvordan CPU-tiden faktisk fordeles, og er i stand til å bruke denne registreringen på en hensiktsmessig måte, skriver forskerne. De viser til at både Solaris og Windows har mer nøyaktige mekanismer enn tick for å registrere hva som skjer, men at cheat greier å omgå dem, fordi operativsystemene kan sies å ikke forstå sine egne registreringer. Et forsøk der Linux ble endret for å bedre CPU-registreringen, viste at en cheat-prosess innstilt på å kapre 80 prosent av CPU-tiden, fortsatt greide i praksis å tilrane seg 46 prosent av CPU-tiden.

Forskerne legger til at økt behov for å støtte CPU-intensiv multimedia har fått Windows, Linux og BSD til å endre CPU-bokføringen på en måte som gjør oppgaven enda lettere for cheat: De foreslår hvordan disse systemene kan endres slik at cheat-kode kan avsløres. I mens framstår fete «gamer»-PC-er som yndet mål for eventuelle hackere med cheat: De har masse kapasitet å avse, og en intelligent «cheater» kan få mye CPU-tid uten å risikere å vekke mistanke.

Til toppen