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 modifica

Questa 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

  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica