Address Space Layout Randomization
La ASLR (Address Space Layout Randomization, "casualizzazione dello spazio degli indirizzi") è una misura di protezione contro buffer overrun e exploit che consiste nel rendere (parzialmente) casuale l'indirizzo delle funzioni di libreria e delle più importanti aree di memoria. In questo modo un attacco informatico che cerca di eseguire codice malevolo su un computer è costretto a cercare gli indirizzi del codice e dei dati che gli servono prima di poterli usare, provocando una serie di crash del programma vettore (infettato o apertamente malevolo).
Normalmente, se durante l'esecuzione di codice si accede a una struttura dati con l'indirizzo sbagliato si ottengono dati errati, e se si chiama una funzione con l'indirizzo errato si provoca una eccezione, che porta alla terminazione del programma da parte del sistema operativo; un programma malevolo sfrutterà però l'eccezione generata (legittimamente: non è possibile né consigliabile impedire ai programmi di generare eccezioni) per tenere traccia di quale tentativo è fallito, raccogliendo così sempre maggiori informazioni ad ogni fallimento, fino a conoscere prima o poi con precisione l'indirizzo di memoria delle risorse che gli servono. Questa attività di raccolta di informazioni genera però una serie ripetuta di crash del programma in questione, che è quindi ben visibile all'utente o ai programmi antivirus.
Efficacia
modificaQuesta tecnica è tanto più efficace quanto più l'indirizzo delle librerie, dello stack, dello heap e delle varie strutture dati di sistema è variabile; in genere però è possibile variare tali indirizzi solo entro un certo spazio, o perché devono essere allineate all'inizio di una pagina di memoria, o perché devono risiedere in una particolare zona della memoria. È presente in Windows Vista, Windows 7, Mac OS X Leopard (in modo non completo), OS X Snow Leopard, OS X Lion, iOS 4.3 e in alcune distribuzioni di Linux, oltre che in OpenBSD. Tale tecnica consiste nel caricare in memoria programmi e librerie a indirizzi casuali; in questo modo l'attaccante è obbligato a indovinare dove potrebbe essere la funzione che egli ha deciso di attaccare. Un attacco effettuato usando una previsione errata generalmente manda in crash l'applicazione oggetto dell'attacco stesso, trasformando così un attacco che mirava a eseguire codice potenzialmente maligno sulla macchina bersaglio in un semplice attacco di tipo denial of service. L'ASLR è ovviamente molto più efficace sulle macchine a 64 bit che hanno uno spazio degli indirizzi molto più grande delle macchine a 32 bit. Le macchine a 32 bit rendono disponibili solo 16 bit da modificare casualmente.
Collegamenti esterni
modifica- (EN) PaX documentation on ASLR (TXT), su pax.grsecurity.net. URL consultato il 25 aprile 2019 (archiviato dall'url originale il 17 gennaio 2019).
- (EN) ASLR for Windows Vista beta 2, su blogs.msdn.com.
- (EN) ASLR for Windows 2000/XP/2003 (WehnTrust), su wehnus.com. URL consultato il 15 novembre 2018 (archiviato dall'url originale il 21 novembre 2015).
- (EN) Bypassing PaX ASLR protection (TXT), su phrack.org. URL consultato il 15 maggio 2007 (archiviato dall'url originale il 30 settembre 2007).
- (EN) On the effectiveness of address space layout randomization, su portal.acm.org. URL consultato il 16 dicembre 2020 (archiviato dall'url originale il 3 giugno 2020).
- (EN) Microsoft Finds (Random) Way to Secure Vista [collegamento interrotto], su eweek.com.
- (EN) Windows Vista Randomization Gets OEM Thumbs Up [collegamento interrotto], su eweek.com.