Vad är ASLR, och hur håller den din dator säker?
Adress Space Layout Randomization (ASLR) är en säkerhetsteknik som används i operativsystem, som först implementerades 2001. De nuvarande versionerna av alla större operativsystem (iOS, Android, Windows, MacOS och Linux) har ASLR-skydd. Men under den senaste veckan har en ny metod för kringgå ASLR hittats. Så ska du vara orolig?
För dem som saknar programmeringsbakgrund på låg nivå kan ASLR vara förvirrande. För att förstå det måste du först förstå virtuellt minne.
Vad är Virtual Memory?
Virtuellt minne är en minneshanteringsteknik med många fördelar, men det skapades främst för att göra programmeringen enklare. Tänk dig att du har Google Chrome, Microsoft Word och flera andra program öppna på en dator med 4 GB RAM. Som helhet använder programmen på den här datorn mycket mer än 4 GB RAM. Men alla program kommer inte att vara aktiva hela tiden, eller behöver samtidigt tillgång till RAM.
Operativsystemet tilldelar bitar av minne till program som heter sidor. Om det inte finns tillräckligt med RAM för att lagra alla sidor på en gång, sparas de sidor som är mest sannolikt att behöva lagras på den långsammare (men rymligare) hårddisken. När de lagrade sidorna behövs byter de utrymmen med mindre nödvändiga sidor som för närvarande finns i RAM. Denna process kallas personsökning, och låter sitt namn till filen pagefile.sys på Windows.
Virtuellt minne gör det enklare för program att hantera sitt eget minne och gör dem också säkrare. Programmen behöver inte oroa sig för var andra program lagrar data, eller hur mycket RAM som finns kvar. De kan bara fråga operativsystemet för ytterligare minne (eller returnera oanvänd minne) vid behov. Allt program ser en enda kontinuerlig bit av minnesadresser för exklusiv användning, kallad virtuella adresser. Programmet får inte se på ett annat programs minne.
När ett program behöver komma åt minnet, ger operativsystemet en virtuell adress. Operativsystemet kontakter CPU: s minnehanteringsenhet (MMU). MMU översätter mellan virtuella och fysiska adresser och returnerar den informationen till operativsystemet. På något sätt interagerar programmet direkt med RAM.
Vad är ASLR?
Address Space Layout Randomization (ASLR) används främst för att skydda mot buffertöverflödesangrepp. I ett bufferflöde matar angripare en funktion så mycket skräppostdata som det kan hantera, följt av en skadlig nyttolast. Nyttladdningen kommer att skriva över data som programmet avser att komma åt. Instruktioner för att hoppa till en annan punkt i koden är en gemensam nyttolast. Den berömda JailbreakM-metoden för jailbreaking iOS 4, till exempel, använde en buffertöverflödesattack, vilket fick Apple att lägga till ASLR till iOS 4.3.
Buffertflöden kräver att en angripare vet var vardera delen av programmet ligger i minnet. Att räkna ut detta är vanligtvis en svår process av försök och fel. Efter att ha bestämt det måste de bygga nyttolast och hitta en lämplig plats för att injicera den. Om angriparen inte vet var deras målkod finns kan det vara svårt eller omöjligt att utnyttja det.
ASLR fungerar tillsammans med virtuell minneshantering för att randomisera läget för olika delar av programmet i minnet. Varje gång programmet körs, flyttas komponenter (inklusive stapeln, högen och biblioteken) till en annan adress i virtuellt minne. Attackers kan inte längre veta var deras mål är genom försök och fel, eftersom adressen kommer att vara annorlunda varje gång. Generellt måste applikationer sammanställas med ASLR-stöd, men det blir standard och krävs även på Android 5.0 och senare.
Så skyddar ASLR dig fortfarande?
Förra tisdagen presenterade forskare från SUNY Binghamton och University of California, Riverside, ett dokument som heter Jump Over ASLR: Attacking Branch Predictors för att byta ASLR. I papperet beskrivs ett sätt att attackera grenmålbufferten (BTB). BTB är en del av processorn som snabbare om uttalanden genom att förutsäga resultatet. Med hjälp av författarens metod kan man bestämma platser för kända greninstruktioner i ett körprogram. Den aktuella attacken utfördes på en Linux-maskin med en Intel Haswell-processor (först släpptes 2013), men kunde troligtvis tillämpas på alla moderna operativsystem och processorer.
Med det sagt bör du inte nödvändigtvis förtvivla. Papperet erbjöd ett par sätt att maskin- och operativsystemutvecklare kan mildra detta hot. Nyare, finkorniga ASLR-tekniker skulle kräva mer ansträngning från angriparen, och ökad mängd entropi (slumpmässighet) kan göra Jump Over-attacken oförmögen. Mest sannolikt kommer nya operativsystem och processorer att vara immun mot denna attack.
Så vad är kvar för du att göra? Hoppa över förbikopplingen är ny, och har ännu inte upptäckts i det vilda. När attacker utnyttjar det, kommer felet att öka den potentiella skada som en angripare kan orsaka på din enhet. Denna åtkomstnivå är inte ovanlig; Microsoft och Apple genomförde endast ASLR i sina operativsystem som släpptes 2007 och senare. Även om den här typen av attack blir vanligt kommer du inte att vara något sämre än du var tillbaka i Windows XP-tidarna.
Tänk på att angripare fortfarande måste få sin kod på din enhet för att göra någon skada. Denna fel ger dem inte några ytterligare sätt att infektera dig. Som alltid bör du följa bästa praxis i säkerhet. Använd antivirus, håll dig borta från sketchy webbplatser och program och håll din programvara uppdaterad. Genom att följa dessa steg och hålla skadliga skådespelare från datorn kommer du vara så säker som du någonsin varit.
Bildkrediter: Steve / Flickr