Wat is ASLR en hoe houdt het uw computer beveiligd?
Address Space Layout Randomization (ASLR) is een beveiligingstechniek die wordt gebruikt in besturingssystemen, die voor het eerst werd geïmplementeerd in 2001. De huidige versies van alle belangrijke besturingssystemen (iOS, Android, Windows, macOS en Linux) zijn voorzien van ASLR-beveiliging. Maar in de afgelopen week is er een nieuwe methode gevonden om ASLR te omzeilen. Dus, zou je je zorgen moeten maken?
Voor mensen zonder een laag programmeerachtergrond, kan ASLR verwarrend zijn. Om het te begrijpen, moet u eerst virtueel geheugen begrijpen.
Wat is een virtueel geheugen?
Virtueel geheugen is een techniek voor geheugenbeheer met vele voordelen, maar deze was vooral bedoeld om het programmeren gemakkelijker te maken. Stel je voor dat je Google Chrome, Microsoft Word en verschillende andere programma's hebt geopend op een computer met 4 GB RAM. Als geheel gebruiken de programma's op deze computer veel meer dan 4 GB RAM. Niet alle programma's zullen echter te allen tijde actief zijn of moeten gelijktijdig toegang hebben tot dat RAM.
Het besturingssysteem wijst stukjes geheugen toe aan programma's die worden opgeroepen pagina's. Als er niet genoeg RAM is om alle pagina's tegelijk op te slaan, worden de pagina's die het minst waarschijnlijk nodig zijn opgeslagen op de langzamere (maar ruimere) harde schijf. Wanneer de opgeslagen pagina's nodig zijn, wisselen ze spaties met minder benodigde pagina's die zich momenteel in het RAM bevinden. Dit proces wordt paging genoemd en kent zijn naam toe aan het bestand pagefile.sys op Windows.
Virtueel geheugen maakt het eenvoudiger voor programma's om hun eigen geheugen te beheren en maakt ze ook veiliger. Programma's hoeven zich geen zorgen te maken over waar andere programma's gegevens opslaan, of hoeveel RAM er nog over is. Ze kunnen het besturingssysteem gewoon vragen om extra geheugen (of ongebruikt geheugen retourneren) als dat nodig is. Het volledige programma ziet slechts één doorlopend stuk geheugenadressen voor zijn exclusieve gebruik, virtuele adressen genoemd. Het programma mag niet naar het geheugen van een ander programma kijken.
Wanneer een programma toegang tot het geheugen nodig heeft, geeft het het besturingssysteem een virtueel adres. Het besturingssysteem maakt contact met de geheugenbeheerseenheid (MMU) van de CPU. De MMU vertaalt tussen virtuele en fysieke adressen, en retourneert die informatie naar het besturingssysteem. Op geen enkel moment werkt het programma rechtstreeks samen met RAM.
Wat is ASLR?
Address Space Layout Randomization (ASLR) wordt voornamelijk gebruikt om te beschermen tegen bufferoverloopaanvallen. In een bufferoverloop voeden aanvallers een functie zoveel junkgegevens als het aankan, gevolgd door een schadelijke lading. De payload overschrijft de gegevens die het programma wil openen. Instructies om naar een ander punt in de code te springen, zijn een gemeenschappelijke payload. De beroemde JailbreakMe-methode van jailbreak iOS 4 gebruikte bijvoorbeeld een bufferoverloopaanval, waardoor Apple ASLR aan iOS 4.3 moest toevoegen.
Bufferoverlopen vereisen dat een aanvaller weet waar elk deel van het programma zich in het geheugen bevindt. Dit uitzoeken is meestal een moeilijk proces van vallen en opstaan. Nadat ze dat hebben vastgesteld, moeten ze een lading maken en een geschikte plaats vinden om het te injecteren. Als de aanvaller niet weet waar zijn doelcode zich bevindt, kan het moeilijk of onmogelijk zijn om deze te exploiteren.
ASLR werkt samen met virtueel geheugenbeheer om de locaties van verschillende delen van het programma in het geheugen willekeurig te maken. Telkens wanneer het programma wordt uitgevoerd, worden componenten (inclusief de stack, heap en bibliotheken) verplaatst naar een ander adres in het virtuele geheugen. Aanvallers kunnen niet meer met vallen en opstaan leren waar hun doelwit is, omdat het adres elke keer anders zal zijn. Over het algemeen moeten applicaties worden gecompileerd met ASLR-ondersteuning, maar dit wordt de standaard en is zelfs vereist op Android 5.0 en hoger.
Zo beschermt ASLR u nog steeds?
Afgelopen dinsdag presenteerden onderzoekers van SUNY Binghamton en University of California, Riverside, een paper genaamd Jump Over ASLR: aanvallende branchepresentors om ASLR te omzeilen. Het papier beschrijft een manier om de Branch Target Buffer (BTB) aan te vallen. De BTB maakt deel uit van de processor die versnelt als verklaringen door de uitkomst te voorspellen. Met behulp van de methode van de auteurs is het mogelijk om locaties van bekende branchinstructies in een lopend programma te bepalen. De betreffende aanval is uitgevoerd op een Linux-machine met een Intel Haswell-processor (voor het eerst uitgebracht in 2013), maar kan waarschijnlijk worden toegepast op elk modern besturingssysteem en elke processor.
Dat gezegd hebbende, je hoeft niet per se te wanhopen. Het document bood een aantal manieren waarop ontwikkelaars van hardware en besturingssystemen deze bedreiging kunnen verzachten. Nieuwere, fijnkorrelige ASLR-technieken vereisen meer inspanning van de aanvaller, en het verhogen van de hoeveelheid entropie (willekeurigheid) kan de Jump Over-aanval onhaalbaar maken. Hoogstwaarschijnlijk zullen nieuwere besturingssystemen en processors immuun zijn voor deze aanval.
Dus waar blijft voor u Te doen? De Jump Over-bypass is nieuw en is nog niet in het wild gezien. Wanneer aanvallers misbruik maken, vergroot het gebrek de potentiële schade die een aanvaller op uw apparaat kan veroorzaken. Dit toegangsniveau is niet ongekend; Microsoft en Apple hebben alleen ASLR geïmplementeerd in hun besturingssystemen die in 2007 en later zijn uitgebracht. Zelfs als deze manier van aanvallen gebruikelijk wordt, zul je niet slechter af zijn dan je in de tijd van Windows XP was.
Houd er rekening mee dat aanvallers nog steeds hun code op uw apparaat moeten ophalen om schade toe te brengen. Deze fout biedt geen andere manieren om u te infecteren. Zoals altijd moet u de best practices voor beveiliging volgen. Gebruik antivirus, blijf weg van schetsmatige websites en programma's en houd uw software up-to-date. Door deze stappen te volgen en schadelijke actoren van je computer af te houden, ben je net zo veilig als je ooit bent geweest.
Image Credit: Steve / Flickr