Address Space Layout Randomization (ASLR) er en sikkerhedsteknik, der anvendes i operativsystemer, først implementeret i 2001. De nuværende versioner af alle større operativsystemer (iOS, Android, Windows, macOS og Linux) har ASLR-beskyttelse. Men i den forløbne uge, en ny metode til at omgå ASLR er blevet fundet . Så skal du være bekymret?
For dem uden programmeringsbaggrund på lavt niveau kan ASLR være forvirrende. For at forstå det skal du først forstå den virtuelle hukommelse.
Hvad er virtuel hukommelse?
Virtuel hukommelse er en hukommelsesadministrationsteknik med mange fordele, men den blev primært oprettet for at gøre programmeringen lettere. Forestil dig, at du har Google Chrome, Microsoft Word og flere andre programmer åbne på en computer med 4 GB RAM. Som helhed bruger programmerne på denne computer meget mere end 4 GB RAM. Imidlertid er ikke alle programmer aktive på alle tidspunkter eller har brug for samtidig adgang til det RAM.
Operativsystemet tildeler klumper af hukommelse til kaldte programmer . Hvis der ikke er nok RAM til at gemme alle siderne på én gang, gemmes de sider, der er mindst sandsynlige, på den langsommere (men mere rummelige) harddisk. Når der er brug for de gemte sider, skifter de mellemrum med mindre nødvendige sider i øjeblikket i RAM. Denne proces kaldes personsøgning og giver sit navn til filen pagefile.sys på Windows .
Virtuel hukommelse gør det lettere for programmer at administrere deres egen hukommelse og gør dem også mere sikre. Programmer behøver ikke bekymre sig om, hvor andre programmer gemmer data, eller hvor meget RAM der er tilbage. De kan bare bede operativsystemet om yderligere hukommelse (eller returnere ubrugt hukommelse) efter behov. Alt, hvad programmet ser, er et enkelt kontinuerligt stykke hukommelsesadresser til dets eksklusive brug, kaldet virtuelle adresser. Programmet har ikke lov til at se på et andet programs hukommelse.
Når et program skal have adgang til hukommelse, giver det operativsystemet en virtuel adresse. Operativsystemet kontakter CPU'ens hukommelsesstyringsenhed (MMU). MMU oversættes mellem virtuelle og fysiske adresser og returnerer disse oplysninger til operativsystemet. På intet tidspunkt interagerer programmet direkte med RAM.
Hvad er ASLR?
Address Space Layout Randomization (ASLR) bruges primært til at beskytte mod bufferoverløbsangreb. I et bufferoverløb fodrer angribere en funktion så meget junk-data, som den kan håndtere, efterfulgt af en ondsindet nyttelast. Nyttelasten overskriver data, som programmet har til hensigt at få adgang til. Instruktioner til at springe til et andet punkt i koden er en almindelig nyttelast. Den kendte JailbreakMe metode til jailbreaking iOS 4 brugte for eksempel et bufferoverløbsangreb, der fik Apple til at føje ASLR til iOS 4.3.
Bufferoverløb kræver, at en angriber ved, hvor hver del af programmet er placeret i hukommelsen. At finde ud af dette er normalt en vanskelig proces med forsøg og fejl. Efter at have bestemt det, skal de fremstille en nyttelast og finde et passende sted at injicere det. Hvis angriberen ikke ved, hvor deres målkode er placeret, kan det være svært eller umuligt at udnytte den.
ASLR arbejder sammen med virtuel hukommelsesadministration for at randomisere placeringen af forskellige dele af programmet i hukommelsen. Hver gang programmet køres, flyttes komponenter (inklusive stakken, bunken og bibliotekerne) til en anden adresse i den virtuelle hukommelse. Angribere kan ikke længere lære, hvor deres mål er gennem prøving og fejl, fordi adressen vil være forskellig hver gang. Generelt skal applikationer kompileres med ASLR-understøttelse, men dette bliver standard og er endda påkrævet på Android 5.0 og nyere.
Så beskytter ASLR dig stadig?
Sidste tirsdag præsenterede forskere fra SUNY Binghamton og University of California, Riverside, et papir kaldet Spring over ASLR: Angribe grenprediktorer for at omgå ASLR . Papiret beskriver en måde at angribe Branch Target Buffer (BTB) på. BTB er en del af processoren, der fremskynder, hvis udsagn ved at forudsige resultatet. Ved hjælp af forfatternes metode er det muligt at bestemme placeringen af kendte greninstruktioner i et kørende program. Det pågældende angreb blev udført på en Linux-maskine med en Intel Haswell-processor (først udgivet i 2013), men kunne sandsynligvis anvendes på ethvert moderne operativsystem og processor.
Når det er sagt, skal du ikke nødvendigvis fortvivle. Papiret tilbød et par måder, som hardware- og operativsystemudviklere kan afbøde denne trussel på. Nyere ASLR-teknikker med fint korn vil kræve mere indsats fra angriberen, og at øge mængden af entropi (tilfældighed) kan gøre Jump Over-angrebet umuligt. Mest sandsynligt vil nyere operativsystemer og processorer være immune over for dette angreb.
Så hvad er der tilbage til at gøre? Jump Over bypass er ny og er endnu ikke set i naturen. Når angribere udnytter det, vil fejlen øge den potentielle skade, som en angriber kan forårsage på din enhed. Dette niveau af adgang er ikke hidtil uset; Microsoft og Apple implementerede kun ASLR i deres operativsystemer, der blev frigivet 2007 og senere. Selvom denne angrebsstil bliver almindelig, har du det ikke dårligere, end du var tilbage i Windows XPs dage.
Husk, at angribere stadig skal have deres kode på din enhed for at gøre nogen skade. Denne fejl giver dem ikke yderligere måder at inficere dig på. Som altid skal du følg de bedste praksis for sikkerhed . Brug antivirus, hold dig væk fra skitserede websteder og programmer, og hold din software opdateret. Ved at følge disse trin og holde ondsindede skuespillere væk fra din computer, vil du være lige så sikker som du nogensinde har været.
Billedkredit: Steve / Flickr