Što je ASLR, i kako to držati tvoj računalo sigurno?
Randomizacija rasporeda adresnog prostora (ASLR) je sigurnosna tehnika koja se koristi u operativnim sustavima, prvi put implementirana 2001. godine. Trenutne verzije svih glavnih operativnih sustava (iOS, Android, Windows, MacOS i Linux) imaju ASLR zaštitu. No, u proteklom tjednu pronađena je nova metoda zaobilaženja ASLR-a. Dakle, trebate li biti zabrinuti?
Onima koji nemaju pozadinu programiranja na niskoj razini, ASLR može biti zbunjujući. Da biste ga razumjeli, najprije morate razumjeti virtualnu memoriju.
Što je virtualna memorija?
Virtualna memorija je tehnika upravljanja memorijom s mnogo prednosti, ali ona je prvenstveno stvorena kako bi programiranje bilo lakše. Zamislite da imate Google Chrome, Microsoft Word i nekoliko drugih programa otvorenih na računalu s 4 GB RAM-a. U cjelini, programi na ovom računalu koriste mnogo više od 4 GB RAM-a. Međutim, neće svi programi uvijek biti aktivni ili će im biti potreban istodobni pristup toj RAM-u.
Operativni sustav dodjeljuje dijelove memorije programima koji se nazivaju stranica. Ako nema dovoljno RAM-a za pohranjivanje svih stranica odjednom, stranice koje su najmanje vjerojatno potrebne bit će pohranjene na sporijem (ali prostranijem) tvrdom disku. Kada su pohranjene stranice potrebne, one će prebaciti razmake s manje potrebnim stranicama koje su trenutno u RAM-u. Taj se proces naziva straničenje i daje svoje ime datoteci pagefile.sys u sustavu Windows.
Virtualna memorija programima olakšava upravljanje vlastitom memorijom, a također ih čini sigurnijima. Programi ne moraju brinuti o tome gdje drugi programi pohranjuju podatke ili koliko RAM-a ostaje. Oni samo mogu zatražiti od operativnog sustava dodatnu memoriju (ili vratiti neiskorištenu memoriju) prema potrebi. Sve što program vidi je jedan kontinuirani komad memorijskih adresa za njegovu ekskluzivnu upotrebu, nazvanu virtualne adrese. Programu nije dopušteno gledati memoriju drugog programa.
Kada program treba pristupiti memoriji, operacijskom sustavu daje virtualnu adresu. Operativni sustav kontaktira jedinicu za upravljanje memorijom procesora (MMU). MMU prevodi između virtualne i fizičke adrese, vraćajući te informacije operacijskom sustavu. Program ni u jednom trenutku ne komunicira izravno s RAM-om.
Što je ASLR?
Randomizacija rasporeda adresnog prostora (ASLR) primarno se koristi za zaštitu od napada prelijevanja međuspremnika. U preljevu međuspremnika, napadači hraniti funkciju koliko junk podataka kao što se može rukovati, nakon čega slijedi zlonamjerni payload. Sadržaj će prepisati podatke kojima program namjerava pristupiti. Upute za prelazak na drugu točku u kodu su uobičajena korisna nosivost. Poznati JailbreakMe metoda jailbreaking iOS 4, na primjer, koristio je napad preljeva međuspremnika, zbog čega je Apple dodao ASLR u iOS 4.3..
Preljevi međuspremnika zahtijevaju od napadača da zna gdje se svaki dio programa nalazi u memoriji. Ovo je obično težak proces pokušaja i pogrešaka. Nakon što to utvrde, moraju napraviti teret i pronaći prikladno mjesto za njegovo ubrizgavanje. Ako napadač ne zna gdje se nalazi njihov ciljni kod, može ga biti teško ili nemoguće iskoristiti.
ASLR radi zajedno s upravljanjem virtualnom memorijom kako bi nasumice lokalizirao različite dijelove programa u memoriji. Svaki put kada se program pokrene, komponente (uključujući stog, hrpu i knjižnice) premještaju se na drugu adresu u virtualnoj memoriji. Napadači više ne mogu saznati gdje im je cilj pokušaj i pogreška, jer će adresa svaki put biti drugačija. Općenito, aplikacije moraju biti kompilirane s podrškom za ASLR, ali to postaje zadano i potrebno je čak i na Android 5.0 i novijim verzijama.
Znači li vas ASLR i dalje štititi?
Prošlog utorka, istraživači iz SUNY Binghamton i Sveučilišta u Kaliforniji, Riverside, predstavili su rad pod nazivom Jump Over ASLR: Napad na prediktore grana za zaobilaženje ASLR-a. U radu se opisuje način napada na granični granični graničnik (BTB). BTB je dio procesora koji ubrzava prikazivanje predviđanjem ishoda. Koristeći metodu autora, moguće je odrediti lokacije poznatih uputa grananja u pokrenutom programu. Dotični napad izvršen je na Linux stroju s Intelovim Haswell procesorom (prvi put objavljen 2013.), ali se vjerojatno može primijeniti na svaki moderni operativni sustav i procesor.
Međutim, ne biste trebali očajavati. Rad je ponudio nekoliko načina na koje proizvođači hardvera i operativnih sustava mogu ublažiti ovu prijetnju. Novije, fino-zrnate ASLR tehnike zahtijevaju više napora od napadača, a povećanje količine entropije (slučajnosti) može učiniti napad skočnim napadom nemogućim. Najvjerojatnije će noviji operativni sustavi i procesori biti imuni na ovaj napad.
Dakle, ono što je ostalo za vas napraviti? Obilaznica za skok preko je nova i još nije uočena u divljini. Kada ga napadači iskoriste, nedostatak će povećati potencijalna oštećenja koja napadač može izazvati na vašem uređaju. Ova razina pristupa nije bez presedana; Microsoft i Apple implementirali su samo ASLR u svojim operativnim sustavima izdanim 2007. i kasnije. Čak i ako ovaj stil napada postane uobičajen, nećete biti lošiji nego što ste bili u vrijeme Windows XP-a.
Imajte na umu da napadači i dalje moraju dobiti svoj kôd na vašem uređaju kako bi nanijeli štetu. Ovaj nedostatak im ne pruža dodatne načine da vas zaraze. Kao i uvijek, trebate slijediti najbolje sigurnosne postupke. Koristite protuvirusne programe, izbjegavajte nejasne web-lokacije i programe te ažurirajte svoj softver. Slijedeći ove korake i držeći zlonamjerne aktere na računalu, bit ćete sigurni koliko ste ikada bili.
Zasluge za sliku: Steve / Flickr