Che cos'è ASLR e come protegge il tuo computer?

aslr_cpu

La randomizzazione del layout dello spazio degli indirizzi (ASLR) è una tecnica di sicurezza utilizzata nei sistemi operativi, implementata per la prima volta nel 2001. Le attuali versioni di tutti i principali sistemi operativi (iOS, Android, Windows, macOS e Linux) dispongono della protezione ASLR. Ma la scorsa settimana, è stato trovato un nuovo metodo per aggirare ASLR. Quindi, dovresti essere preoccupato?

Per quelli senza un background di programmazione di basso livello, ASLR può essere fonte di confusione. Per capirlo, devi prima capire la memoria virtuale.

Che cos'è la memoria virtuale?

La memoria virtuale è una tecnica di gestione della memoria con molti vantaggi, ma è stata creata principalmente per facilitare 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 sempre attivi o necessitano dell'accesso simultaneo a quella RAM.

Il sistema operativo alloca blocchi di memoria ai programmi chiamati pagine. Se non c'è abbastanza RAM per memorizzare tutte le pagine contemporaneamente, le pagine che hanno meno probabilità di essere necessarie vengono memorizzate sul disco rigido più lento (ma più spazioso). Quando sono necessarie le pagine memorizzate, cambieranno spazi con pagine meno necessarie attualmente nella RAM. Questo processo si chiama paging e presta il nome al file pagefile.sys su Windows.

La memoria virtuale semplifica la gestione della propria memoria da parte dei programmi e li rende anche più sicuri. I programmi non devono preoccuparsi di dove altri programmi memorizzano i dati o di quanta RAM è rimasta. Possono semplicemente chiedere al sistema operativo memoria aggiuntiva (o restituire la memoria non utilizzata) se necessario. Tutto il programma vede un singolo blocco continuo di indirizzi di memoria per il suo uso esclusivo, chiamati indirizzi virtuali. Al programma non è consentito guardare la memoria di un altro programma.

Quando un programma deve 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 si traduce tra indirizzi virtuali e indirizzi fisici, restituendo tali informazioni al sistema operativo. In nessun momento il programma interagisce direttamente con la RAM.

Che cos'è l'ASLR?

La randomizzazione del layout dello spazio degli indirizzi (ASLR) viene utilizzata principalmente per proteggere dagli attacchi di overflow del buffer. In un buffer overflow, gli aggressori alimentano una funzione quanti più dati spazzatura possono gestire, seguiti da un payload dannoso. Il payload sovrascriverà i dati a cui il programma intende accedere. Le istruzioni per passare a un altro punto del codice sono un payload comune. Il famoso metodo JailbreakMe di jailbreak di iOS 4, ad esempio, utilizzava un attacco di overflow del buffer, spingendo Apple ad 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. Capire questo è di solito 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 proprio codice target, può essere difficile o impossibile sfruttarlo.

ASLR lavora insieme alla gestione della memoria virtuale per randomizzare le posizioni delle diverse parti del programma in memoria. Ogni volta che si esegue il programma, i componenti (inclusi stack, heap e librerie) vengono spostati in un indirizzo diverso nella memoria virtuale. Gli aggressori non possono più sapere dove si trova il loro obiettivo attraverso tentativi ed errori, perché l'indirizzo sarà ogni volta diverso. In generale, le applicazioni devono essere compilate con il supporto ASLR, ma questo sta diventando il valore predefinito ed è persino richiesto su Android 5.0 e versioni successive.

Quindi ASLR ti protegge ancora?

Martedì scorso, i ricercatori della SUNY Binghamton e della University of California, Riverside, hanno presentato un documento intitolato Jump Over ASLR: Attacking Branch Predictors to Bypass ASLR. L'articolo descrive in dettaglio un modo per attaccare il Branch Target Buffer (BTB). Il BTB fa parte del processore che accelera se le dichiarazioni predicendo il risultato. Utilizzando il metodo degli autori, è possibile determinare le posizioni delle istruzioni di succursale note 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 moderni.

Detto questo, non dovresti necessariamente disperare. Il documento offre 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 maggiore sforzo all'attaccante e aumentare la quantità di entropia (casualità) può rendere impossibile l'attacco Jump Over. Molto probabilmente, i sistemi operativi e i processori più recenti saranno immuni da questo attacco.

Quindi, cosa resta voi fare? Il bypass Jump Over è nuovo e non è stato ancora individuato in natura. Quando gli attaccanti lo sfruttano, il difetto aumenterà il potenziale danno che un attaccante può causare sul tuo dispositivo. Questo livello di accesso non è senza precedenti; Microsoft e Apple hanno implementato ASLR solo nei loro sistemi operativi rilasciati nel 2007 e successivamente. Anche se questo stile di attacco diventa banale, non starai peggio di quanto non fossi ai tempi di Windows XP.

Tieni presente che gli aggressori devono comunque ottenere il loro codice sul dispositivo per fare del male. Questo difetto non fornisce loro altri modi per infettarti. Come sempre, dovresti seguire le migliori pratiche di sicurezza. Usa l'antivirus, stai lontano da siti Web e programmi imprecisi e mantieni aggiornato il tuo software. Seguendo questi passaggi e tenendo lontani gli attori dannosi dal tuo computer, sarai al sicuro come non sei mai stato.

Credito di immagine: Steve / Flickr

Articoli correlati

Ultimi articoli