Indietro

ⓘ ASLR




                                     

ⓘ ASLR

La ASLR è una misura di protezione contro buffer overrun e exploit che consiste nel rendere casuale lindirizzo 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.

Normalmente, se durante lesecuzione di codice si accede a una struttura dati con lindirizzo sbagliato si ottengono dati errati, se si chiama una funzione con lindirizzo errato si provoca una eccezione, che porta alla terminazione del programma da parte del sistema operativo; un programma malevolo sfrutterà però leccezione 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 lindirizzo 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 allutente o ai programmi antivirus.

                                     

1. Efficacia

Questa tecnica è tanto più efficace quanto più lindirizzo 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 allinizio 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 lattaccante è 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 lapplicazione oggetto dellattacco stesso, trasformando così un attacco che mirava a eseguire codice potenzialmente maligno sulla macchina bersaglio in un semplice attacco di tipo denial of service. LASLR è 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.