Address Space Layout Randomization (ASLR) er en sikkerhetsteknikk som brukes i operativsystemer, først implementert i 2001. De nåværende versjonene av alle større operativsystemer (iOS, Android, Windows, macOS og Linux) har ASLR-beskyttelse. Men den siste uken, en ny metode for å omgå ASLR har blitt funnet . Så burde du være bekymret?
For de uten programmeringsbakgrunn på lavt nivå, kan ASLR være forvirrende. For å forstå det, må du først forstå virtuelt minne.
Hva er virtuelt minne?
Virtual Memory er en minnehåndteringsteknikk med mange fordeler, men den ble først og fremst laget for å gjøre programmeringen enklere. Tenk deg at du har Google Chrome, Microsoft Word og flere andre programmer åpne på en datamaskin med 4 GB RAM. Som helhet bruker programmene på denne datamaskinen mye mer enn 4 GB RAM. Imidlertid vil ikke alle programmene være aktive til enhver tid, eller trenger samtidig tilgang til RAM-en.
Operativsystemet tildeler biter av minne til kalt programmer . Hvis det ikke er nok RAM til å lagre alle sidene på en gang, lagres sidene som er minst sannsynlig å trengs på den tregere (men mer romslige) harddisken. Når det er behov for lagrede sider, bytter de mellomrom med mindre nødvendige sider som for øyeblikket er i RAM. Denne prosessen kalles personsøk, og gir navnet sitt til filen pagefile.sys på Windows .
Virtuelt minne gjør det lettere for programmer å administrere sitt eget minne, og gjør dem også sikrere. Programmer trenger ikke å bekymre seg for hvor andre programmer lagrer data, eller hvor mye RAM som er igjen. De kan bare be operativsystemet om ekstra minne (eller returnere ubrukt minne) etter behov. Alt programmet ser er en enkelt kontinuerlig mengde minneadresser for eksklusiv bruk, kalt virtuelle adresser. Programmet har ikke lov til å se på minnet til et annet program.
Når et program trenger tilgang til minne, gir det operativsystemet en virtuell adresse. Operativsystemet kontakter CPUens minnehåndteringsenhet (MMU). MMU oversetter mellom virtuelle og fysiske adresser, og returnerer informasjonen til operativsystemet. På intet tidspunkt samhandler programmet direkte med RAM.
Hva er ASLR?
Address Space Layout Randomization (ASLR) brukes primært for å beskytte mot bufferoverløpsangrep. I et bufferoverløp mater angripere en funksjon så mye søppeldata som den kan håndtere, etterfulgt av en ondsinnet nyttelast. Nyttelasten overskriver data som programmet har til hensikt å få tilgang til. Instruksjoner for å hoppe til et annet punkt i koden er en vanlig nyttelast. De berømte JailbreakMe-metoden for jailbreaking iOS 4 brukte for eksempel et bufferoverløpsangrep, og fikk Apple til å legge til ASLR i iOS 4.3.
Bufferoverløp krever at en angriper vet hvor hver del av programmet ligger i minnet. Å finne ut av dette er vanligvis en vanskelig prosess med prøving og feiling. Etter å ha bestemt det, må de lage en nyttelast og finne et passende sted å injisere den. Hvis angriperen ikke vet hvor målkoden deres ligger, kan det være vanskelig eller umulig å utnytte den.
ASLR fungerer sammen med virtuell minneadministrasjon for å randomisere plasseringene til forskjellige deler av programmet i minnet. Hver gang programmet kjøres, flyttes komponenter (inkludert stack, heap og biblioteker) til en annen adresse i det virtuelle minnet. Angripere kan ikke lenger lære hvor målet deres er gjennom prøving og feiling, fordi adressen vil være annerledes hver gang. Vanligvis må applikasjoner kompileres med ASLR-støtte, men dette blir standard, og er til og med påkrevd på Android 5.0 og nyere.
Så beskytter ASLR deg fremdeles?
Sist tirsdag presenterte forskere fra SUNY Binghamton og University of California, Riverside, en artikkel som heter Hopp over ASLR: Attacking Branch Predictors to Bypass ASLR . Papiret beskriver en måte å angripe Branch Target Buffer (BTB). BTB er en del av prosessoren som setter fart på utsagn ved å forutsi resultatet. Ved hjelp av forfatterens metode er det mulig å bestemme plasseringen av kjente greninstruksjoner i et kjørende program. Det aktuelle angrepet ble utført på en Linux-maskin med en Intel Haswell-prosessor (først utgitt i 2013), men kan sannsynligvis brukes på ethvert moderne operativsystem og prosessor.
Når det er sagt, bør du ikke nødvendigvis fortvile. Avisen ga noen måter som maskinvare- og operativsystemutviklere kan dempe denne trusselen på. Nyere, finkornede ASLR-teknikker vil kreve mer innsats fra angriperen, og å øke mengden entropi (tilfeldighet) kan gjøre Jump Over-angrepet umulig. Mest sannsynlig vil nyere operativsystemer og prosessorer være immun mot dette angrepet.
Så hva er igjen for å gjøre? Jump Over bypass er ny, og har ennå ikke blitt oppdaget i naturen. Når angripere utnytter det, vil feilen øke den potensielle skaden en angriper kan forårsake på enheten din. Dette tilgangsnivået er ikke uten sidestykke; Microsoft og Apple implementerte bare ASLR i operativsystemene som ble utgitt 2007 og senere. Selv om denne angrepsstilen blir vanlig, vil du ikke ha det dårligere enn du var tilbake i dagene av Windows XP.
Husk at angripere fortsatt må få koden sin på enheten din for å gjøre noe skade. Denne feilen gir dem ingen ekstra måter å smitte deg på. Som alltid burde du gjøre det følg sikkerhetspraksis . Bruk antivirus, hold deg borte fra sketchy nettsteder og programmer, og hold programvaren din oppdatert. Ved å følge disse trinnene og holde ondsinnede skuespillere utenfor datamaskinen din, vil du være like trygg som du noen gang har vært.
Bildekreditt: Steve / Flickr