Szerző: Voith Hunor

2015. március 12. 10:30:00

Bitflipping: memóriahack élesben

Inkább érdekessége, mint veszélyessége miatt érdemel figyelemre a Google Project Zero mérnökei által nemrég nyilvánosságra hozott, Rowhammer névre keresztelt sérülékenység. A hiba kivételesen nem szoftveres, hanem hardveres eredetű: a DDR3 memóriamodulok fizikai felépítésének tökéletlenségét kihasználva egy sort néhány ezredmásodperc alatt több százezres nagyságrendben végrehajtott memóriahozzáférési művelettel bombázva a szomszédos sorban megfordítható egy bit. Az eredmény: korlátlan memóriahozzáférés.

Szoftveres hibáról és az azokból adódó támadásokról, adatvesztésekről sokszor számolhatunk be – hardveres sérülékenységről viszont meglehetősen ritkán, főleg olyanról, melynek kihasználását a gyakorlatba is át lehet ültetni. A Google két mérnöke a Project Zero biztonsági kezdeményezés oldalán hozta nyilvánosságra, hogyan tudták valós körülmények között alkalmazni a tavaly a Carnegie Mellon Egyetem kutatói által bizonyított, úgynevezett bitfordítási (bitflipping) jelenséget.

A zaklatást a szomszéd szívja meg

A DRAM típusú memóriában minden egyes bit fizikai megfelelője egy kondenzátor, amit folyamatosan, 64 ezredmásodpercenként frissíteni (azaz olvasni és felülírni) kell, különben elveszíti a töltését és az adott bit korrupttá válik. Ezek a kondenzátorok nagyon fogékonyak akár a legkisebb mértékű radioaktív sugárzásra (ezért a memóriachipeket sugárzásmentes anyagokból készítik) vagy egyéb elektromos behatásra, ezért a memóriakorrupció ellen különböző védelmi megoldások léteznek.

Python everywhere! Gyere Pythonozni a HWSW rendezvényeire! Megmutatjuk, hogy a Python nem csak a fejlesztők nyelve, hiszen egyszerűsége miatt bárhol és bárki használhatja.

Az egyetemi kísérleti kutatást a gyakorlatba átültető Mark Seaborn és Thomas Dullien bizonyos notebookokba szánt DDR3 memóriamodulok esetében tudtak elérni bitfordítást. A folyamat során két – a processzor memóriavezérlőjének és az operációs rendszer virtuális memória kezelésének ismeretében – kiválasztott memóriasort 64 ezredmásodperc alatt 540 ezer lekéréssel bombáztak. A túlterhelés eredményeként fellépő szivárgási áram módosította az alapesetben védett szomszédos sort, és fizikai szinten változtatta meg a bitet, azaz egy adott kondenzátor által tárolt töltést.

A két szakértő a bizonyításhoz x86-64-es Linuxot használt, a memóriát pedig az x86-os CLFLUSH utasítással terhelték túl. A támadás eredményeként kernelszintű jogosultságot sikerült elérniük. Vélekedésük szerint a bitfordítást a fordítótábla-bejegyzések (page table entries, PTE) ismeretében valószínűleg más operációs rendszereken is meg lehet valósítani. Próbálkozásaik csak notebookokon és csak DDR3-as memóriamodulok esetében jártak sikerrel, de elvben asztali gépekel is működhet a támadás. Ezt egyelőre gyakorlatban nem sikerült visszaigazolni, a szakemberek ugyanis egyelőre csak saját munkaállomásaikon próbálták ki a támadást, ott pedig az ECC hibajavítás a megfordított biteket (nagyon helyesen) azonnal kijavította.

Az ECC-n kívül további védelmet jelentenek a virtuális gépek, melyek az operációs rendszerrel ellentétben nem teszik közvetlenül elérhetővé a memória fizikai címtábláját. Robert Graham, az Errata Security szakértője szerint a veszély lényegében csak akkor áll fenn, ha a támadó natív kódot tud futtatni egy rendszeren, erre pedig szerverkörnyezetben viszonylag kicsi az esély. Kliensgépeken könnyebb lehet végrehajtani egy ilyen támadást, különösen a Chrome böngésző számára natív kódfuttatási lehetőséget biztosító, alapértelmezetten aktív natív kliens (NaCI) sandbox megoldásán keresztül, mert a Rowhammer képes kiütni a NaCI vonatkozó védelmét. Álláspontja szerint a Google ezért valószínűleg módosítani fogja a Chrome-ot, hogy idejében elejét vegye a próbálkozásoknak.

Bár a hiba az eddigi kutatások szerint csak bizonyos DDR3 memóriatípusokat érint, és kihasználásához nagyon magas fokú technikai tudás szükséges, szélsőséges esetekben, más sérülékenységek kiaknázásával kombinálva valós biztonsági veszélyt is jelenthet. Végleges elhárítása viszont finoman szólva sem egyszerű, hiszen a jelenség fizikai természetű, biztos védelmet egyelőre csak az ECC illetve a natív kód korlátozása jelent.

a címlapról

Hirdetés

Python everywhere!

2020. február 23. 12:06

Gyere Pythonozni a HWSW rendezvényeire! Megmutatjuk, hogy a Python nem csak a fejlesztők nyelve, hiszen egyszerűsége miatt előszeretettel használják az üzemeltetők és DevOps szakemberek, tesztelők, illetve az adattudósok is, és elfut szinte bárhol, a mikrovezérlőktől egészen a böngészőkig.