Le applicazioni a 64 bit hanno meriti di sicurezza su applicazioni a 32 bit?

7

Un particolare articolo da arstechnica.com ha dichiarato questo.

One of these protective measures is called Address Space Layout Randomization, ASLR, and it works by moving DLLs and application memory into unpredictable locations within the 4GB that each 32-bit application has available to it. This makes exploitation harder, but on 32-bit systems the protection is limited. With only 4GB of space, there aren't that many random locations to choose. DLLs, for example, still need to be packed relatively close together, to ensure that there are large tracts of free space open for applications to store their own data in.

Questo ha qualche merito tecnico o dovrei archiviarlo come i soliti siti di non-sense non focalizzati sulla sicurezza?

    
posta Ayrx 02.12.2012 - 13:26
fonte

1 risposta

10

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.

    
risposta data 02.12.2012 - 14:55
fonte

Leggi altre domande sui tag