Che cos'è ASLR e come protegge il computer?
Address Space Layout Randomization (ASLR) è una tecnica di sicurezza utilizzata nei sistemi operativi, implementata per la prima volta nel 2001. Le versioni correnti di tutti i principali sistemi operativi (iOS, Android, Windows, macOS e Linux) sono dotate di protezione ASLR. Ma nella settimana scorsa è stato trovato un nuovo metodo per aggirare l'ASLR. Quindi, dovresti essere preoccupato?
Per quelli senza uno sfondo di programmazione di basso livello, ASLR può essere fonte di confusione. Per capirlo, devi prima capire la memoria virtuale.
Cos'è la memoria virtuale?
La memoria virtuale è una tecnica di gestione della memoria con molti vantaggi, ma è stata creata principalmente per semplificare la programmazione. Immagina di avere Google Chrome, Microsoft Word e molti altri programmi aperti su un computer con 4 GB di RAM. Nel complesso, i programmi su questo computer utilizzano molto più di 4 GB di RAM. Tuttavia, non tutti i programmi saranno attivi in ogni momento, o necessitano dell'accesso simultaneo a tale RAM.
Il sistema operativo alloca blocchi di memoria ai programmi chiamati pagine. Se non c'è abbastanza RAM per archiviare tutte le pagine contemporaneamente, le pagine meno probabili sono memorizzate sul disco rigido più lento (ma più spazioso). Quando sono necessarie le pagine memorizzate, cambieranno spazi con meno pagine necessarie attualmente nella RAM. Questo processo è chiamato paginazione e presta il nome al file pagefile.sys su Windows.
La memoria virtuale rende più facile per i programmi gestire la propria memoria e inoltre li rende più sicuri. I programmi non devono preoccuparsi di dove altri programmi stanno memorizzando i dati, o quanta RAM è rimasta. Possono solo chiedere al sistema operativo memoria aggiuntiva (o restituire memoria non utilizzata) secondo necessità. Tutto ciò che il programma vede è un singolo blocco continuo di indirizzi di memoria per il suo uso esclusivo, chiamato indirizzi virtuali. Il programma non è autorizzato a guardare la memoria di un altro programma.
Quando un programma ha bisogno di accedere alla memoria, fornisce al sistema operativo un indirizzo virtuale. Il sistema operativo contatta l'unità di gestione della memoria (MMU) della CPU. La MMU traduce tra indirizzi virtuali e fisici, restituendo tali informazioni al sistema operativo. In nessun punto il programma interagisce direttamente con la RAM.
Cos'è l'ASLR?
Address Space Layout Randomization (ASLR) viene principalmente utilizzato per proteggere dagli attacchi di overflow del buffer. In un overflow del buffer, gli hacker alimentano una funzione quanti più dati spazzatura possono gestire, seguiti da un carico utile dannoso. Il payload sovrascriverà i dati a cui il programma intende accedere. Le istruzioni per passare a un altro punto nel codice sono un carico utile comune. Il famoso metodo JailbreakMe per il jailbreak di iOS 4, ad esempio, ha utilizzato un attacco di overflow del buffer, suggerendo ad Apple di aggiungere ASLR a iOS 4.3.
Gli overflow del buffer richiedono a un utente malintenzionato di sapere dove si trova ogni parte del programma in memoria. Capirlo è solitamente un processo difficile di tentativi ed errori. Dopo averlo determinato, devono creare un carico utile e trovare un posto adatto per iniettarlo. Se l'attaccante non sa dove si trova il suo codice obiettivo, può essere difficile o impossibile sfruttarlo.
ASLR funziona insieme alla gestione della memoria virtuale per randomizzare le posizioni di diverse parti del programma in memoria. Ogni volta che si esegue il programma, i componenti (incluso lo stack, l'heap e le librerie) vengono spostati in un indirizzo diverso nella memoria virtuale. Gli attaccanti non possono più sapere dove si trova il loro obiettivo attraverso tentativi ed errori, perché l'indirizzo sarà diverso ogni volta. Generalmente, le applicazioni devono essere compilate con il supporto ASLR, ma questo sta diventando l'impostazione predefinita ed è persino richiesto su Android 5.0 e versioni successive.
Così ASLR ti protegge ancora?
Martedì scorso, i ricercatori di SUNY Binghamton e University of California, Riverside, hanno presentato un documento intitolato Jump Over ASLR: Attaccare i predittori di ramo per bypassare ASLR. Il documento descrive in dettaglio come attaccare il Branch Target Buffer (BTB). Il BTB fa parte del processore che accelera se le dichiarazioni prevedono il risultato. Utilizzando il metodo degli autori, è possibile determinare le posizioni delle istruzioni di ramo conosciute in un programma in esecuzione. L'attacco in questione è stato eseguito su una macchina Linux con un processore Intel Haswell (rilasciato per la prima volta nel 2013), ma potrebbe probabilmente essere applicato a qualsiasi sistema operativo e processore moderno.
Detto questo, non dovresti necessariamente disperare. Il documento ha offerto alcuni modi in cui gli sviluppatori di hardware e sistema operativo possono mitigare questa minaccia. Le tecniche ASLR più recenti e a grana fine richiederebbero un maggiore sforzo da parte dell'attaccante e l'aumento della quantità di entropia (casualità) può rendere l'attacco Jump Over non fattibile. Molto probabilmente, i nuovi sistemi operativi e processori saranno immuni da questo attacco.
Quindi, cosa è rimasto per tu fare? Il bypass Jump Over è nuovo e non è ancora stato individuato in natura. Quando gli aggressori lo sfruttano, il difetto aumenta il danno potenziale che un utente malintenzionato può causare sul tuo dispositivo. Questo livello di accesso non è senza precedenti; Microsoft e Apple hanno implementato solo ASLR nei loro sistemi operativi pubblicati nel 2007 e successivi. Anche se questo tipo di attacco diventa un luogo comune, non ti sentirai di peggio di quanto non fossi tornato ai tempi di Windows XP.
Tieni presente che gli hacker devono ancora ottenere il codice sul dispositivo per fare del male. Questo difetto non fornisce loro ulteriori modi per infettarti. Come sempre, dovresti seguire le migliori pratiche di sicurezza. Usa l'antivirus, stai lontano dai siti Web e dai programmi abbozzati e mantieni aggiornato il tuo software. Seguendo questi passaggi e tenendo gli attori malintenzionati lontani dal tuo computer, sarai al sicuro come non mai.
Immagine di credito: Steve / Flickr