Stavo provando come funziona ASLR in Centos 7.2.1115 x86_64 in particolare.
Ecco i miei /proc/$pid/maps
dump da due esecuzioni di Firefox (su Pastebin):
# 1
# 2
Fondamentalmente, ASLR funziona. Rende casuali gli offset .data e .text
Tuttavia, racchiude tutte le librerie e gli eseguibili nello stesso ordine e senza spazi vuoti. (Per lo più. Ci sono varianti di coppia, ma sembrano puramente accidentali.)
Quindi, non appena il singolo indirizzo viene compromesso, tutta questa parte dell'ASLR esce dalla finestra.
La mia domanda è , è il caso comune fin d'ora? Quali sistemi risolvono questo problema e in che modo?
Voglio dire, lo spazio degli indirizzi a 64 bit è enorme , puoi semplicemente gettare casualmente ogni libreria e poi verificare se si sovrappone a qualcosa e posizionarlo correttamente dopo un paio di tentativi al massimo. Tuttavia, la migliore soluzione già implementata che ho trovato su Google è la randomizzazione di ordine di caricamento della libreria su Android.