Moderne DRAM lagrer dataene i ørsmå kondensatorer som kan bli påvirket av ytre forstyrrelser, slik som kosmisk stråling. Men også hyppig aksessering av minnerader kan påvirke dataene som er lagret i andre, nærliggende minnerader. Dette kan utnyttes av angripere, i alle fall til å oppnå økte privilegier i systemet. (Foto: William Warby)

Rowhammer

Alvorlig minneproblem rammer mange pc-er

Kan gi skadevare full tilgang til alle data.

De fleste dataangrep utnytter enten vanlige menneskers godtroenhet eller sårbarheter i programvare. Men i blant oppdages det også sårbarheter i maskinvare. Mens programvare relativt enkelt kan oppdateres, er det verre med maskinvaren. Enten må den byttes ut, eller så må det lages programvareløsninger som hindrer utnyttelse av maskinvaresårbarheten. Men det sistnevnte er ikke alltid mulig.

DRAM-feil

I fjor publiserte forskere ved Intel Labs og Carnegie Mellon University en forskningsartikkel hvor de omtaler det som den gang ble ansett som et potensielt problematisk fenomen med i alle fall x86-baserte systemer, hvor gjentatt lesing av data i DRAM-rader kan korrumpere data i nærliggende rader, ved at bitverdiene endres. Dette berører i særlig grad moderne, men ellers helt ordinære minnemoduler, hvor komponentene ligger svært tett.

Rowhammer

Slik gjentatt lesning av DRAM-rader kalles for «rowhammer», i alle fall av «sandkassebyggeren» Mark Seaborn i Google. I et blogginnlegg skriver han at Google har tatt utgangspunkt i nevnte forskningsartikkel og deretter studert om dette kan utnyttes i angrep.

Det har vist seg at dette er fullt mulig. Selskapet har offentliggjort to eksempler på angrepskode som utnytter «bit-flip»-effekten til å oppnå høyere privilegier i systemet. Ved hjelp av en ikke-privilegert userland-prosess og rowhammer-forårsakede bit-flips oppnådde man kernel-priviligerier på en x86-64-basert Linux-maskin.

– Når prosessen ble kjørt på en maskin sårbar for rowhammer-problemet, var den i stand til å forårsake bit-flips i sidetabelloppføringer. Den var i stand til å bruke dette til å oppnå skrivetilgang til sin egen sidetabell, og dermed oppnå lesetilgang til hele det fysiske minnet, skriver Seaborn.

Integriteten til minnesystemet er en grunnleggende forutsetning for all programvare. Denne integriteten forsvinner dersom aksessering av minnet på ett sted, også kan påvirke minnet på andre steder.

Alle systemer?

Det man ikke vet så mye om, er hvor utbredt sårbarheten er. I konsepteksemplene brukes en x86-spesifikk instruksjon for å generere mange forespørsler til DRAM-en, men Seaborn ser ikke bort fra at andre teknikker kan fungere på maskinvare basert på annen arkitektur. Men det er ikke slik at rowhammer-teknikker fungerer på alle maskiner, heller ikke alle x86-baserte pc-er. Men 15 av 29 ulike, bærbare pc-er som Google har testet, er sårbare. Det antyder at så mange som halvparten av dagens pc-er, og kanskje også andre datasystemer, kan være sårbare.

Selv om eksempelkoden er utviklet for Linux, er ikke teknikkene som har blitt brukt, Linux-spesifikke. Så også systemer med andre operativsystemer er sannsynligvis berørt i like stor grad. Det ene av de to konsepteksemplene demonstrer hvordan fenomenet kan utnyttes til å unnslippe sandkassen til Googles Native Client.

Løsninger

Seaborn foreslår flere mulige løsninger for dette problemet, hvorav det antas at i alle fall noen allerede er i bruk i noen systemer i dag. Blant annet kan man sikre at ingen gitt rad aktiveres for mange ganger i løpet av en gitt oppfriskningsperiode uten at også naboradene blir oppfrisket. Men dette er sannsynligvis ikke noe som kan løses med programvare alene.

Minnebrikker som støtter ECC (Error-Correction Code) kan, i alle fall i teorien, være mindre utsatt for rowhammer-angrep. Men sikkerhetsbloggeren Robert Graham skriver at selv om ECC stort sett er i stand til å korrigere enkeltbit som skifter verdi, beskytter det ikke når mange bits bytter verdi samtidig.

Til toppen