15Sep
"Address Space Layout Randomization"( ASLR) yra apsaugos sistema, naudojama operacinėse sistemose, kuri pirmą kartą buvo įdiegta 2001 metais. Dabartinės visų pagrindinių operacinių sistemų( "iOS", "Android", "Windows", "macOS" ir "Linux") versijos turi ASLR apsaugą.Tačiau per praeitą savaitę buvo rastas naujas ASLR apeigos būdas. Taigi, ar turėtumėte nerimauti?
Tiems, kurie neturi žemo lygio programavimo fono, ASLR gali būti paini. Norėdami tai suprasti, pirmiausia turite suprasti virtualųjį atmintį.
Kas yra virtualioji atmintis?"
" virtualioji atmintis yra daugybės privalumų turintis atminties valdymo metodas, bet pirmiausia sukurtas siekiant palengvinti programavimą.Įsivaizduokite, kad turite "Google Chrome", "Microsoft Word" ir kelias kitas programas, atidarytas kompiuteryje su 4 GB atminties. Apskritai, šiame kompiuteryje naudojamos programos naudoja daug daugiau nei 4 GB atminties. Tačiau ne visos programos bus aktyvios bet kuriuo metu arba reikės vienu metu pasiekti tą RAM.
Operacinė sistema paskirsto atminties likučius programoms, kurios vadinamos puslapiais .Jei nepakanka RAM, kad visi puslapiai būtų laikomi vienu metu, puslapiai, kurių mažiausiai tikėtina, bus laikomi lėčiau( bet erdvesniame) kietajame diske. Kai reikia saugomų puslapių, jie pakeis tarpus, kuriuose šiuo metu yra RAM mažiau reikalingų puslapių.Šis procesas vadinamas peidžeriu ir pateikia jo pavadinimą į failą pagefile.sys sistemoje "Windows".
Virtuali atmintis palengvina programų valdymą savo atmintyje, taip pat daro jas saugesnes. Programoms nereikia nerimauti, kur kitos programos saugo duomenis, ar kiek RAM lieka. Jie gali paprašyti operacinės sistemos papildomos atminties( arba grąžinti nepanaudotą atmintį), jei reikia. Visa programa mato yra vienintelė nuolatinė atminties adresų dalis, skirta jos išskirtiniam naudojimui, vadinama virtualiais adresais. Programoje neleidžiama pažvelgti į kitos programos atmintį.
Kai programai reikia prieigos prie atminties, ji suteikia operacinei sistemai virtualųjį adresą.Operacinė sistema palaiko centrinio procesoriaus atminties valdymo bloką( MMU).MMU verčia tarp virtualių ir fizinių adresų, grąžindamas tą informaciją operacinei sistemai. Jokiu būdu programa tiesiogiai neveikia su RAM.
Kas yra ASLR?
Adresų erdvės išdėstymo išrinkimas( ASLR) pirmiausia naudojamas apsaugoti nuo buferinių perpildymų išpuolių.Buferio perpildyme užpuolikai maitina tiek daug nepageidaujamų duomenų, kiek gali elgtis, o vėliau kenksminga naudingoji apkrova. Naudingoji apkrova perrašys duomenis, kuriuos programa ketina pasiekti. Instrukcijos pereiti prie kito kodo taško yra įprasta naudingoji apkrova. Pavyzdžiui, garsusis "JailbreakMe" "jailbreaking" "iOS 4" metodas naudojo buferio perpildymo ataką, ragindamas "Apple" pridėti ASLR prie "iOS 4.3".
buferio perpildymai reikalauja, kad užpuolikas žinotų, kur kiekviena programos dalis yra atmintyje. Paprastai tai yra sunkus bandymų ir klaidų procesas. Nustačiusi, kad jie turi sukaupti naudingą krovinį ir rasti tinkamą vietą, į kurią ji įšvirkščiama. Jei užpuolikas nežino, kur yra jų paskirties kodas, gali būti sunku arba neįmanoma jį išnaudoti.
ASLR veikia kartu su virtualiosios atminties valdymu, kad atsitiktine tvarka suskirstytų įvairias programos dalis atminties atmintyje. Kiekvieną kartą, kai programa paleidžiama, komponentai( įskaitant kaminą, krūvą ir bibliotekas) perkeliami į kitą virtualios atminties adresą.Užpuolikai nebegali mokytis, kur jų tikslas yra per bandymus ir klaidas, nes kiekvieną kartą adresas bus skirtingas. Paprastai programos turi būti sujungtos su ASLR palaikymu, tačiau tai tampa numatytuoju ir netgi reikalinga 5.0 ir naujesnėse versijose.
Ar ASLR vis tiek apsaugo jus?
praėjusį antradienį tyrėjai iš SUNY Binghamtono ir Kalifornijos universiteto "Riverside" pristatė straipsnį "Peršokti per ASLR: atakuojančių filialų prognozės, siekiant išvengti ASLR".Šiame dokumente aprašomas būdas atakuoti filialo tikslinę buferį( BTB).BTB yra procesoriaus dalis, kuri paspartina, kai teiginiai prognozuojami. Naudojant autorių metodą, galima nustatyti žinomų filialų instrukcijų vietoves veikiančioje programoje. Aptariama ataka buvo atlikta "Linux" kompiuteryje su "Intel Haswell" procesoriumi( pirmą kartą išleista 2013 m.), Bet gali būti taikomas bet kuriai šiuolaikinei operacinei sistemai ir procesoriams.
Tai sakiau, jūs neturėtumėte būti beviltiška. Straipsnyje siūloma keletas būdų, kaip aparatūros ir operacinės sistemos kūrėjai gali sušvelninti šią grėsmę.Naujausiems smulkiagrūdžiams ASLR technologijoms užpuolikui reikės daugiau pastangų, o padidėjusio entropijos( atsitiktinumo) kiekis gali padaryti "Jump Over" užpuolimą neįmanomu. Labiausiai tikėtina, kad naujesnės operacinės sistemos ir procesoriai bus apsaugoti nuo šios atakos.
Taigi, ko liko jums daryti? Peršokti per apvažiavimą yra nauja ir dar nėra pastebėta laukinėje. Kai priepuoliai to išnaudoja, trūkumas padidins galimą žalą, kurią užpuolikas gali sukelti jūsų įrenginyje.Šis prieigos lygis nėra precedento;"Microsoft" ir "Apple" tik įdiegė ASLR savo operacinėse sistemose, išleistas 2007 m. Ir vėliau. Net jei šis ataka taptų įprasta, tu nebūsi blogesnė nei tu buvai dar "Windows XP" dienomis.
Turėkite omenyje, kad užpuolikai vis tiek turi gauti savo kodą savo įrenginyje, kad padarytumėte kokią nors žalą.Šis trūkumas nesuteikia joms papildomų būdų užkrėsti jus. Kaip visada, turėtumėte laikytis geriausios praktikos. Naudokite antivirusinę priemonę, nepasiduokite nuošaliose svetainėse ir programose ir atnaujinkite savo programinę įrangą.Vykdydami šiuos veiksmus ir laikydami kenkėjiškus aktorius iš savo kompiuterio, būsite tokie pat saugūs kaip ir jūs kada nors buvote.
Image Credit: Steve / Flickr