Szerző: Gálffy Csaba

2017. február 17. 16:00

Mattot kapott az ASLR

Megdőlt a modern operációs rendszerek egyik legfontosabb védővonala, az ASLR. A modern processzorok memóriavezérlője árulja el az adatok elhelyezkedését. Védelem nincs, böngészőn keresztül is támadható.

Gyakorlatilag irrelevánssá vált a modern operációs rendszerek egyik legfontosabb védővonala, az ASLR. A Vrije Universiteit Amsterdam VUSec csapatának kutatói a héten olyan új támadási lehetőséget mutattak be, amely egyrészt roppant nehezen védhető ki, másrészt roppant könnyen véghezvihető - a processzorok hardveres alapjait kikezdő ASLR Cache (AnC) támadás ugyanis akár böngészőben futó JavaScriptből is véghez vihető.

A közzétett kutatási dokumentum konklúziója dermesztő: "az ASLR alapvetően nem biztonságos a modern processzoros architektúrákon". Az alapvető probléma, hogy a modern mikroarchitektúrák lehetővé teszik az architektúrát ismerő támadó számára, hogy precízen megválasztott memóriaelérés-sorozattal kitalálja a memóriacímeket - mondják a kutatók. "Ennek megfelelően azt javasoljuk, hogy az ASLR-ben többé ne bízzunk, mint a memóriahiba-támadások első védelmi vonalában és a következő védelmi architektúrák tervezésénél ne számoljunk hatásával."

Hardveres para

A problémát a CPU-kon található MMU (memóriavezérlő egység) okozza, amelynek feladata a memória-hierarchia felügyelete, a különböző adatok előtöltése és mozgatása a különböző memóriaszintek között, valamint a gyorsítótárak menedzsmentje. Erre szükség van a modern processzorok hatékony működéséhez, a gyorsítótárak lekapcsolása elképzelhetetlen, a mai gyors CPU-magok adattal táplálása lehetetlenné válna.

A VUSec támadása az MMU viselkedését figyeli, és abból próbálja meg kikövetkeztetni az egyes folyamatok által elfoglalt memóriaterületet, rendkívüli hatékonysággal - még a tökéletes ASLR-implementáció sem védett ellene. Az AnC eljárása előbb az utolsó gyorsítótár-szintet üríti, majd megméri, hogy az MMU hogyan járja be a memórialapot, ezzel megállapítva a lapon a fontosabb területeket, majd az AnC próbálgatással végigpróbálgatja ezeket. Az eredményt az alábbi ábra szemlélteti, a Chrome esetében kicsivel több, mint 40 másodperc alatt sikerült nullázni az entrópiát, vagyis kitalálni a memóriaelhelyezkedést.

A támadás azért is különösen problémás, mert a modern MMU-k alapvető viselkedését aknázza ki és fordítja az ASLR ellen, vagyis egyszerű szoftveres javítással ez nem védhető ki. A cache ugyan lekapcsolható lenne, de ez a fent említett okok miatt akkora teljesítményesést jelentene a modern processzorokon, hogy ez a gyakorlatban nem reális megoldás. A kutatók egyébként eddig 22 különböző mikroarchitektúra MMU-jának viselkedését térképezték fel, a biztosan sebezhető chipek között az Intel 2008 és 2015 között kiadott szinte összes lapkája, az AMD-k, és néhány ARM-os modell is szerepel, a probléma jellegéből adódóan azonban ez a lista valószínűleg még ennél is sokkal-sokkal hosszabb, egyelőre ugyanis nem talált a csapat védett MMU-t.

A koronát pedig az teszi fel a támadás tetejére, hogy nem csak natív kóddal lehetséges a támadás, hanem a sok absztrakciós rétegen keresztül futó JavaScriptből is. A támadás jellege miatt fontos a nagyon pontos időzítés, ehhez pedig szükség van egy jó időmérő függvényre is, a kutatás részeként egy ilyent is fejlesztettek a szakemberek, a korábban a böngészőgyártók által (pont veszélyessége miatt) kiiktatott performance.now() helyére. Az időmérő birtokában megfelelően preparált weboldallal a Chrome és a Firefox is támadható, kód- és verem pointerek is megtalálhatóak.

02:14
 

AnC or ASLR^Cache demonstration in Firefox

Még több videó

Azt pedig mondani sem kell, hogy a legegyszerűbb támadási forma pont a JavaScript futtatása böngészőben - az ilyen kódot gyakorlatilag minden rendszer automatikusan ellenségesnek bélyegez és a létező legmagasabb védelem mögött hajlandó futtatni. Azonban még ez a kód is megkapja a jogosultságot ahhoz, hogy a CPU gyorsítótáraival babráljon, ezzel pedig az ASLR védelmét is képes hatékonyan kiiktatni.

Mi az és miért fontos ASLR?

Komoly probléma, ha a memóriában tárolt adatok elrendezése kiszámítható vagy kikövetkeztethető. A támadók ugyanis csak akkor tudnak hatékony memória-alapú (például puffertúlcsordulásos) támadásokat indítani, ha tudják, hogy mely területeket érdemes megcélozni. Ez ellen véd a 2000-es évek közepe óta terjedő Address Space Layout Randomization (ASLR).

Néhány sebezhető MMU-t tartalmazó processzor.

Introvertáltak az IT-ban: a hard skill nem elég

Már nem elég zárkózott zseninek lenni, aki egyedül old meg problémákat. Az 53. kraftie adásban az introverzióról beszélgettünk.

Introvertáltak az IT-ban: a hard skill nem elég Már nem elég zárkózott zseninek lenni, aki egyedül old meg problémákat. Az 53. kraftie adásban az introverzióról beszélgettünk.

Az operációs rendszer szintjén implementált megoldás vigyáz arra, hogy az egyes folyamatok memóriafoglalása véletlenszerű, kiszámíthatatlan legyen, így a támadó nem tudja kitalálni, hogy a sebezhető célpontok hol helyezkednek el. Az ASLR kiiktatása ezért nagyon fontos eleme minden támadásnak, erre természetesen már a kezdetektől vannak többé-kevésbé sikeres megoldások, a VUSec által bemutatott probléma azonban sokkal veszélyesebb minden eddiginél.

Az ASLR hatékony megkerülése még nem a világ vége, egy sikeres (például távoli kódfuttatáshoz vezető) támadáshoz ezt még több más sebezhetőséggel kell kombinálni. Az ASLR azonban a modern operációs rendszerek egyik fontos védővonalának számít, így kiiktatása mindenképp veszélyesebbé teszi az informatikát általában. A két mélyütés, miszerint ez egy hardveres (így nem javítható) sebezhetőség, amely ráadásul böngészőben futó JavaScript kóddal is támadható, pedig teljesen padlóra viszi ezt a megoldást.

Kinél pattog a labda?

Ahogy írtuk, a probléma nem orvosolható egy szoftverfrissítéssel, a sebezhetőség magában a gyorsítótárazás koncepciójában van, egész pontosan abban, hogy ahhoz a külső (potenciálisan támadó) kód is hozzá tud férni. Bizonyos javítások azért lehetségesek, például a precíz időzítő működését ki lehet iktatni, az Apple az iOS 10.2.1-ben már eszközölt valamilyen, egyelőre ismeretlen elhárítást.

A kutatók a processzorgyártókat és a böngészőgyártókat is értesítették még tavaly a problémákról, hamarosan megjelenhetnek azok a patchek, amelyek a holland kutatók bemutatott támadását kiküszöbölik. Azonban az alapvető problémát, az árulkodó MMU-t azonban valószínűleg nem lesz lehetséges elhallgattatni, így a támadástípus mostantól a kártékony kódok egyik szabványos kelléke lesz.

A publikáció elérhető az egyetem honlapján, az érthetően megfogalmazott, érdekes dokumentumot mindenkinek javasoljuk olvasásra.

a címlapról