Estaba probando cómo funciona ASLR en Centos 7.2.1115 x86_64 específicamente.
Aquí están mis volcados /proc/$pid/maps
de dos ejecuciones de Firefox (en Pastebin):
# 1
# 2
Básicamente, ASLR funciona. Aleatoriza las compensaciones .data y .text.
Sin embargo, contiene todas las bibliotecas y ejecutables en el mismo orden y sin espacios vacíos. (Bueno, en su mayoría. Hay variaciones de pareja, pero parecen puramente accidentales).
Entonces, tan pronto como se compromete la dirección única, toda esta parte de ASLR se sale de la ventana.
Mi pregunta es , ¿es el caso común a partir de ahora? ¿Qué sistemas abordan este problema y cómo?
Quiero decir, el espacio de direcciones de 64 bits es enorme , puedes lanzar aleatoriamente cada biblioteca y luego verificar si se superpone con algo, y colocarlo luego de un par de intentos. Sin embargo, la mejor solución ya implementada que encontré en Google es la aleatorización de órdenes de carga de bibliotecas en Android.