ASLR è un gioco a nascondino: nel caso in cui l'aggressore riesca a traboccare un buffer e a sovrascrivere i puntatori, il sistema operativo carica il codice dell'applicazione (l'eseguibile principale e la sua DLL) in posizioni casuali, in modo da rendere più difficile per l'attaccante colpire effettivamente una posizione significativa. Per costruzione, funziona meglio quando il campo da gioco è più grande. Lo spazio di indirizzi esteso nella modalità a 64 bit è un parco giochi più grande.
Per quantificare le cose: nella modalità a 32 bit, lo spazio degli indirizzi è, al massimo, a 32 bit di larghezza (in realtà 31 bit quando il kernel non è a conoscenza della modalità a 64 bit). Il caricatore DLL deve rispettare l'allineamento della pagina e una pagina è 4 kB su x86. Ciò fornisce al massimo 20 bit di entropia nella randomizzazione dell'ASLR, ma in pratica è inferiore a quello perché la diffusione della DLL nell'intero spazio di indirizzamento può indurre una frammentazione più elevata (impedendo all'applicazione di allocare, ad esempio, un buffer continuo da 1 GB, qualcosa che è normale quando si modificano immagini o filmati). Questo è ciò a cui allude il testo che citate. Supponiamo, ad esempio, che il caricamento della DLL si verifichi solo entro un ottavo dello spazio di indirizzamento, cioè 29 bit; con allineamento, questo significa 17 bit di entropia, alias 131072 possibili posizioni per ogni DLL specificata. In ogni caso, un attaccante industrioso può contare sulla fortuna, semplicemente ripetendo l'attacco (con una sceneggiatura) alcune decine di migliaia di volte finché non funziona.
Con la modalità a 64 bit, lo spazio degli indirizzi è esteso a 48 bit, ridotto a 44 bit su Windows, perché non si sono preoccupati di andare oltre. Ciò aggiunge 12 bit di entropia; in altre parole, moltiplica per 4096 lo sforzo dell'attaccante (nel caso in cui l'attaccante si basi sulla fortuna).
Pertanto, è vero che in qualche modo , lo spazio di indirizzamento esteso della modalità a 64 bit aumenta la sicurezza. Ovviamente ASLR ha effetto solo quando si verifica un overflow del buffer , nel qual caso si è già in grossi problemi.