Kaj je ASLR, in kako naj vaš računalnik varno?
Randomizacija razporeda naslovnega prostora (ASLR) je varnostna tehnika, ki se uporablja v operacijskih sistemih, prvič izvedena leta 2001. Sedanje različice vseh večjih operacijskih sistemov (iOS, Android, Windows, MacOS in Linux) imajo zaščito ASLR. Toda v preteklem tednu je bila odkrita nova metoda mimo ASLR. Torej, če si zaskrbljen?
Za tiste, ki nimajo ozadja programiranja na nizki ravni, lahko ASLR zmede. Da bi ga razumeli, morate najprej razumeti navidezni pomnilnik.
Kaj je virtualni pomnilnik?
Virtualni pomnilnik je tehnika upravljanja pomnilnika s številnimi prednostmi, vendar je bila ustvarjena predvsem zato, da je programiranje lažje. Predstavljajte si, da imate v računalniku odprt Google Chrome, Microsoft Word in več drugih programov s 4 GB pomnilnika RAM. Kot celota, programi na tem računalniku uporabljajo veliko več kot 4 GB RAM-a. Vendar vsi programi ne bodo vedno aktivni ali pa bodo potrebovali hkraten dostop do RAM-a.
Operacijski sistem dodeli kose pomnilnika programom, ki jih imenuje strani. Če RAM-a ni dovolj za hranjenje vseh strani naenkrat, se strani, ki bodo najverjetneje potrebne, shranijo na počasnejši (vendar prostornejši) trdi disk. Ko so shranjene strani potrebne, bodo preklopile prostore z manj potrebnimi stranmi, ki so trenutno v RAM-u. Ta proces se imenuje ostranjevalni račun in daje njegovo ime datoteki pagefile.sys v sistemu Windows.
Navidezni pomnilnik programom olajša upravljanje lastnega pomnilnika, hkrati pa omogoča tudi njihovo večjo varnost. Programom ni treba skrbeti, kje drugi programi shranjujejo podatke, ali koliko RAM-a je ostalo. Po potrebi lahko operacijskemu sistemu zahtevajo dodaten pomnilnik (ali vrnitev neuporabljenega pomnilnika). Vse, kar program vidi, je en sam neprekinjen blok pomnilniških naslovov za njegovo izključno uporabo, ki se imenuje virtualni naslovi. Programu ni dovoljeno gledati pomnilnika drugega programa.
Ko program potrebuje dostop do pomnilnika, da operacijskemu sistemu virtualni naslov. Operacijski sistem se obrne na enoto za upravljanje pomnilnika CPU (MMU). MMU prevaja med navideznimi in fizičnimi naslovi ter te informacije vrne v operacijski sistem. Program v nobenem trenutku ne vpliva neposredno na RAM.
Kaj je ASLR?
Randomizacija razporeda naslovnega prostora (ASLR) se v glavnem uporablja za zaščito pred napadi prekoračitve medpomnilnika. V prelivnem medpomnilniku napadalci hranijo funkcijo kot veliko junk podatkov, ki jih lahko obdela, čemur sledi zlonamerni tovor. Polnilnik bo prepisal podatke, do katerih namerava dostopati program. Navodila za skok na drugo točko v kodi so običajni tovor. Znani JailbreakMe metoda zaprtja iOS 4, na primer, je uporabil napad prekoračitve medpomnilnika, zaradi česar je Apple dodal ASLR v iOS 4.3..
Prelivi medpomnilnika zahtevajo, da napadalec ve, kje se vsak del programa nahaja v pomnilniku. To je ponavadi težaven proces poskusov in napak. Po določitvi tega morajo izdelati koristen tovor in najti primerno mesto za injiciranje. Če napadalec ne ve, kje je njihova ciljna koda, jo je lahko težko ali nemogoče izkoristiti.
ASLR deluje skupaj z upravljanjem navideznega pomnilnika za naključno določanje lokacij različnih delov programa v pomnilniku. Vsakič, ko se program zažene, se komponente (vključno z skladom, kopico in knjižnicami) premaknejo na drug naslov v navideznem pomnilniku. Napadalci se ne morejo več učiti, kje je njihov cilj, s poskusi in napakami, ker bo naslov vsakič drugačen. Na splošno je treba aplikacije zbrati s podporo za ASLR, vendar to postane privzeto in je potrebno tudi za Android 5.0 in novejše različice.
Torej vas ASLR še vedno varuje?
Prejšnji torek so raziskovalci iz SUNY Binghamton in University of California, Riverside, predstavili dokument, imenovan Jump Over ASLR: Napadovalec napovedovalcev vej na obvoz ASLR. V članku je podrobno opisan način za napad na Branch Target Buffer (BTB). BTB je del procesorja, ki pospešuje izjave z napovedovanjem izida. Z uporabo metode avtorjev je mogoče določiti lokacije znanih navodil za vejo v tekočem programu. Zadevni napad je bil izveden na računalniku Linux z procesorjem Intel Haswell (prvič je bil izdan leta 2013), vendar bi se verjetno lahko uporabljal za vse sodobne operacijske sisteme in procesorje.
Vendar ne bi bilo nujno obupati. Dokument je ponudil nekaj načinov, da lahko razvijalci strojne opreme in operacijskega sistema ublažijo to grožnjo. Novejše, fine zrnate tehnike ASLR, bi zahtevale več napora napadalca in povečanje količine entropije (naključnosti) lahko povzroči, da je napad skočil čez. Najverjetneje bodo novejši operacijski sistemi in procesorji imuni na ta napad.
Torej, kaj je ostalo za vas narediti? Obvoznica Jump Over je nova in še ni bila opažena v divjini. Ko ga napadalci izkoristijo, bo napaka povečala potencialno škodo, ki jo napadalec lahko povzroči na vaši napravi. Ta stopnja dostopa ni brez primere; Microsoft in Apple sta v svojih operacijskih sistemih, ki sta jih izdala leta 2007 in kasneje, samo izvedla ASLR. Tudi če ta stil napada postane običajen, vam ne bo nič slabše, kot ste bili v dneh Windows XP.
Ne pozabite, da morajo napadalci še vedno dobiti svojo kodo v napravi, da bi škodovali. Ta napaka jim ne zagotavlja nobenih dodatnih načinov za okužbo. Kot vedno morate upoštevati varnostne prakse. Uporabite protivirusno programsko opremo, se izogibajte nejasnim spletnim mestom in programom ter posodabljajte programsko opremo. Sledite tem korakom in ohranjate zlonamerne igralce pred računalnikom in boste tako varni kot kdajkoli prej.
Zasluge za slike: Steve / Flickr