Kas yra ASLR, ir kaip ji saugo jūsų kompiuterį?
Adresų erdvės išdėstymas Randomizacija (ASLR) yra operacinėse sistemose naudojama saugumo technika, pirmą kartą įdiegta 2001 m. Dabartinėse visų pagrindinių operacinių sistemų versijose (iOS, Android, Windows, MacOS ir Linux) yra ASLR apsauga. Tačiau praėjusią savaitę buvo rastas naujas būdas apeiti ASLR. Taigi, ar turėtumėte nerimauti?
Tiems, kurie neturi žemo lygio programavimo, ASLR gali būti paini. Norėdami tai suprasti, pirmiausia turite suprasti virtualiąją atmintį.
Kas yra virtuali atmintis?
Virtuali atmintis yra atminties valdymo technika, turinti daug privalumų, tačiau pirmiausia ji buvo sukurta siekiant palengvinti programavimą. Įsivaizduokite, kad „Google Chrome“, „Microsoft Word“ ir keletas kitų programų yra atidarytos kompiuteryje su 4 GB RAM. Apskritai šios kompiuterio programos naudoja daug daugiau nei 4 GB RAM. Tačiau ne visos programos bus aktyvios visą laiką, arba reikalingos tuo pačiu metu prieigos prie tos RAM.
Operacinė sistema skiria atminties gabalus programoms, kurios vadinamos puslapius. Jei RAM nepakanka visiems puslapiams vienu metu saugoti, puslapiai, kurie greičiausiai bus reikalingi, yra saugomi lėtesniame (bet erdvesniame) standžiajame diske. Kai reikalingi saugomi puslapiai, jie persijungs vietas, kuriose šiuo metu yra mažiau reikalingų puslapių. Šis procesas vadinamas ieškojimu ir suteikia savo vardą „Pagefile.sys“ failui „Windows“.
Virtuali atmintis palengvina programų valdymą savo atmintyje ir saugesnius. Programoms nereikia nerimauti, kur kitos programos saugo duomenis, arba kiek RAM paliekama. Jie gali tiesiog paprašyti operacinės sistemos papildomos atminties (arba grąžinti nepanaudotą atmintį). Visa programa mato vienintelį nuolatinį atminties adresų rinkinį, skirtą išskirtiniam naudojimui, vadinamą virtualiais adresais. Programai neleidžiama žiūrėti į kitos programos atmintį.
Kai programai reikia prieiti prie atminties, operacinei sistemai jis suteikia virtualų adresą. Operacinė sistema kreipiasi į CPU atminties valdymo bloką (MMU). MMU paverčia virtualius ir fizinius adresus, grąžindama šią informaciją operacinei sistemai. Programa jokiu būdu tiesiogiai nesieja su RAM.
Kas yra ASLR?
Adresų erdvės išdėstymas Randomizacija (ASLR) pirmiausia naudojama apsaugoti nuo buferio perpildymo atakų. Buferio perpildymo metu užpuolikai maitina funkciją tiek daug šiukšlių, kiek jie gali tvarkyti, o po to - kenkėjiška apkrova. Naudingoji apkrova perrašys duomenis, kuriuos programa ketina pasiekti. Nurodymai, kaip pereiti prie kito kodo taško, yra bendroji apkrova. Pavyzdžiui, garsus „JailbreakMe“ metodas „iOS 4“ buvo naudojamas buferio perpildymo išpuoliui, kuris paragino „Apple“ pridėti „ASLR“ į „iOS 4.3“.
Buferio perpildymas reikalauja, kad užpuolikas žinotų, kur kiekviena programos dalis yra atmintyje. Apskaičiuojant tai paprastai yra sudėtingas bandymų ir klaidų procesas. Nusprendę, kad jie turi įveikti naudingąją apkrovą ir rasti tinkamą vietą švirkšti. Jei užpuolikas nežino, kur yra jų tikslinis kodas, gali būti sunku arba neįmanoma jį naudoti.
ASLR veikia kartu su virtualiosios atminties valdymu, kad atsitiktinai suskirstytų skirtingų programos dalių atmintyje vietas. Kiekvieną kartą, kai programa vykdoma, komponentai (įskaitant kamino, krūvos ir bibliotekas) perkeliami į kitą adresą virtualioje atmintyje. Užpuolikai nebegali išmokti, kur jų tikslas yra per bandymą ir klaidą, nes adresas kiekvieną kartą bus kitoks. Paprastai programos turi būti rengiamos su ASLR palaikymu, tačiau tai tampa numatytuoju, ir netgi būtina „Android 5.0“ ir naujesnėse versijose.
Taigi ar ASLR vis dar saugo jus?
Praėjusį antradienį „SUNY Binghamton“ ir Kalifornijos universiteto „Riverside“ mokslininkai pristatė dokumentą „Peršokti per ASLR. Straipsnyje išsamiai aprašytas būdas atakuoti filialo tikslinį buferį (BTB). „BTB“ yra procesoriaus dalis, kuri paspartina teiginių prognozavimą. Naudojant autorių metodą, galima nustatyti žinomų šakų nurodymų vietas veikiančioje programoje. Aptarimas buvo įvykdytas „Linux“ įrenginyje su „Intel Haswell“ procesoriumi (pirmą kartą buvo išleistas 2013 m.), Tačiau gali būti taikomas bet kuriai modernioms operacinėms sistemoms ir procesoriams..
Tai reiškia, kad jums nebūtinai turėtų būti nusivylimas. Darbe siūloma keletas būdų, kaip aparatinė ir operacinės sistemos kūrėjai gali sumažinti šią grėsmę. Naujesni, smulkiagrūdžiai ASLR metodai reikalautų daugiau išpuolio pastangų, o entropijos (atsitiktinumo) didinimas gali padaryti peršokimo ataką neįmanomą. Labiausiai tikėtina, kad naujesnės operacinės sistemos ir procesoriai bus apsaugoti nuo šio atakos.
Taigi, kas paliekama tu daryti? Peršokimas per aplinką yra naujas ir dar nebuvo pastebėtas lauke. Kai užpuolikai ją išnaudoja, trūkumas padidins galimą žalą, kurią puolėjas gali sukelti jūsų prietaise. Šis prieigos lygis nėra precedento; „Microsoft“ ir „Apple“ įgyvendino tik ASLR savo operacinėse sistemose, išleistose 2007 m. Ir vėliau. Net jei šis atakos stilius tampa įprasta, jums nebus blogiau, nei buvote „Windows XP“ dienomis.
Turėkite omenyje, kad užpuolikai vis tiek turi gauti savo kodą savo prietaise, kad galėtumėte padaryti žalą. Šis trūkumas nesuteikia jiems jokių papildomų būdų užkrėsti jus. Kaip visada, turėtumėte laikytis geriausios saugumo praktikos. Naudokite antivirusinę programą, likite nuošalyje nuo vaizdingų svetainių ir programų bei saugokite programinę įrangą. Laikydamiesi šių veiksmų ir palaikydami kenkėjiškus veikėjus iš kompiuterio, būsite tokie saugūs, kaip kada nors buvote.
Vaizdo kreditas: Steve / Flickr