Hvad er ASLR, og hvordan holder den din computer sikker?
Address Space Layout Randomization (ASLR) er en sikkerhedsteknik, der anvendes i operativsystemer, der først blev implementeret i 2001. De nuværende versioner af alle større operativsystemer (iOS, Android, Windows, MacOS og Linux) har ASLR-beskyttelse. Men i den sidste uge er der fundet en ny metode til omgåelse af ASLR. Så skal du være bekymret?
For dem uden lavt programmeringsgrundlag kan ASLR være forvirrende. For at forstå det, skal du først forstå den virtuelle hukommelse.
Hvad er virtuel hukommelse?
Virtual Memory er en hukommelsesstyringsteknik med mange fordele, men det blev primært oprettet for at gøre programmeringen nemmere. Forestil dig, at du har Google Chrome, Microsoft Word og flere andre programmer, der er åbne på en computer med 4 GB RAM. Som helhed bruger programmerne på denne computer meget mere end 4 GB RAM. Ikke alle programmerne vil dog altid være aktive eller have samtidig adgang til det RAM.
Operativsystemet tildeler klumper af hukommelse til programmer, der kaldes sider. Hvis der ikke er nok RAM til at gemme alle siderne på én gang, gemmes de sider, der sandsynligvis er nødvendige, på den langsommere (men mere rummelige) harddisk. Når de gemte sider er nødvendige, skifter de mellemrum med mindre nødvendige sider i øjeblikket i RAM. Denne proces kaldes personsøgning, og låner sit navn til filen pagefile.sys på Windows.
Virtuel hukommelse gør det lettere for programmer at styre deres egen hukommelse, og gør dem også mere sikre. Programmer behøver ikke at bekymre sig om, hvor andre programmer lagrer data, eller hvor meget RAM der er tilbage. De kan bare spørge operativsystemet til yderligere hukommelse (eller returnere ubrugt hukommelse) efter behov. Alt programmet ser et enkelt kontinuerligt stykke af hukommelsesadresser til dets eksklusive brug, kaldet virtuelle adresser. Programmet må ikke se på et andet programs hukommelse.
Når et program har brug for adgang til hukommelse, giver det operativsystemet en virtuel adresse. Operativsystemet kontakter CPU'ens hukommelsesstyringsenhed (MMU). MMU'en oversætter 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 buffer overløb angreb. I et buffer overløb, angriber angriberne en funktion så meget uønsket data som det kan håndtere, efterfulgt af en ondsindet nyttelast. Nybelastningen overskriver data, som programmet har til hensigt at få adgang til. Instruktioner til at hoppe til et andet punkt i kode er en fælles nyttelast. Den berømte JailbreakM-metode til jailbreaking iOS 4 anvendte for eksempel et bufferoverløbsangreb, hvilket fik Apple til at tilføje ASLR til iOS 4.3.
Bufferoverløb kræver, at en hacker ved, hvor hver del af programmet er placeret i hukommelsen. At udregne dette er normalt en vanskelig proces med forsøg og fejl. Efter at have bestemt det, skal de lave 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 det.
ASLR arbejder sammen med virtuel hukommelsesstyring for at randomisere placeringen af forskellige dele af programmet i hukommelsen. Hver gang programmet køres, flyttes komponenter (herunder stakken, bunken og biblioteker) til en anden adresse i virtuel hukommelse. Attackere kan ikke længere lære, hvor deres mål er gennem forsøg og fejl, fordi adressen vil være anderledes hver gang. Generelt skal applikationer kompileres med ASLR-support, men det bliver standard og kræves endda på Android 5.0 og nyere..
Så beskytter ASLR dig stadig?
Sidste tirsdag fremlagde forskere fra SUNY Binghamton og University of California, Riverside, et dokument kaldet Jump Over ASLR: Attacking Branch Predictors for at omgå ASLR. Papiret beskriver en måde at angribe Branch Target Buffer (BTB) på. BTB er en del af processoren, der fremskynder udsagn ved at forudsige resultatet. Ved hjælp af forfatterens metode er det muligt at bestemme placeringer 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 til ethvert moderne operativsystem og processor.
Når det er sagt, bør du ikke nødvendigvis fortvivle. Papiret tilbød et par måder, som hardware og operativsystemudviklere kan mildne denne trussel. Nyere, fine korn ASLR teknikker ville kræve større indsats fra angriberen, og øget mængden af entropi (tilfældighed) kan gøre Jump Over-angrebet umuligt. Mest sandsynligt vil nyere operativsystemer og processorer være immun for dette angreb.
Så hvad er der tilbage til du at gøre? Jump Over bypass er nyt, og er endnu ikke blevet set i det vilde. Når angriberne udnytter det, vil fejlen øge den potentielle skade, en angriber kan forårsage på din enhed. Dette adgangsniveau er ikke hidtil uset; Microsoft og Apple implementerede kun ASLR i deres operativsystemer udgivet 2007 og senere. Selvom denne angrebstilstand bliver almindelig, vil du ikke være værre end du var tilbage i Windows XPs dage.
Husk på, 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 bør du følge sikkerhedens bedste praksis. Brug antivirus, hold dig væk fra skitserede websites og programmer, og hold din software opdateret. Ved at følge disse trin og holde ondsindede spillere fra din computer, vil du være lige så sikker som du nogensinde har været.
Billedkredit: Steve / Flickr