:

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.

CI/CD-vel folytatódik az AWS hazai online meetup-sorozata!

A sorozat december 12-i, ötödik állomásán bemutatjuk az AWS CodeCatalyst platformot, és a nyílt forráskódú Daggert is.

CI/CD-vel folytatódik az AWS hazai online meetup-sorozata! A sorozat december 12-i, ötödik állomásán bemutatjuk az AWS CodeCatalyst platformot, és a nyílt forráskódú Daggert is.

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.

November 25-26-án 6 alkalmas K8s security és 10 alkalmas, a Go és a cloud native szoftverfejlesztés alapjaiba bevezető képzéseket indítunk. Az élő képzések órái utólag is visszanézhetők, és munkaidő végén kezdődnek.

a címlapról