Address space layout randomization è una nuova tecnologia di sicurezza inclusa a partire da Windows Vista Beta 2, descritta nel suo
blog da
Michael Howard, esperto di sicurezza Microsoft, autore del noto
Writing Secure Code.
Sostanzialmente la tecnica usata da Vista consiste nel
caricare i file di sistema in un segmento di codice differente ad ogni riavvio, precisamente in una tra le possibili 256 locazioni di memoria riservate al codice di sistema. Ciò renderà la vita più difficile a chi scrive
exploit sfruttando buffer overflow per lanciare attacchi di tipo
return-to-libc, in cui l'aggressore sostituisce l'indirizzo di ritorno della funzione presente nello stack, con quello di un'altra funzione maligna, creata ad hoc.
La sicurezza di Vista è stata incrementata anche grazie ad alcuni
switch preimpostati nel compilatore Microsoft Visual C:
/GS per rilevare buffer overrun,
/SafeSEH per salvare nell'intestazione di un eseguibile PE gli indirizzi dei gestori di eccezioni, cosicché se viene sollevata un'eccezione e l'indirizzo del rispettivo
handler non corrisponde a quello scritto nell'
header, il programma viene terminato.
Altre contromisure, infine, sono
Data Execution Protection,
aka NX, usata per segnare un segmento dati come non eseguibile e l'offuscamento dei puntatori a funzioni.