La mayoría de los sistemas modernos tienen una Unidad de administración de memoria o MMU. La MMU es responsable de traducir las direcciones físicas a direcciones virtuales. Esto se utiliza para dar a cada proceso su propia memoria virtual privada. La dirección X de un proceso no es lo mismo que la dirección X de otro proceso. Esto mejora el rendimiento, la seguridad y reduce el riesgo de bloqueos, pero también tiene la ventaja de poder utilizarse para implementar ASLR. Si bien los datos se pueden colocar en direcciones no aleatorias en la memoria física, el sistema puede colocar los datos en cualquier lugar que desee en la memoria virtual de un proceso.
Cuando se crea un proceso por primera vez, la única memoria real a la que tiene acceso es la pila, que está limitada y no está diseñada para fines generales. Siempre que se requiera una cantidad no trivial de memoria, el proceso debe utilizar el heap . La única forma de hacerlo es solicitar memoria del kernel a través de una llamada del sistema. A esta llamada del sistema se le dan algunos argumentos que especifican la cantidad de memoria que desea, el tipo de memoria, etc. La llamada devuelve la dirección base de alguna memoria recién asignada del tamaño especificado. Una de las cosas que hace ASLR es hacer que esta dirección base sea impredecible. Cuando ASLR está deshabilitado, la memoria asignada se coloca en ubicaciones predecibles.
ASLR hace más que solo aleatorizar la base de memoria asignada. Cuando se ejecuta un binario, el enlazador dinámico lo conecta a todas las bibliotecas compartidas que necesita. Aunque cualquier biblioteca dada se guarda en un solo lugar en la memoria física, el sistema puede traducirla a una dirección virtual para cada proceso que la use. Esta traducción de direcciones se realiza por razones de eficiencia, pero ASLR hace un uso adicional de la misma al garantizar que la dirección virtual sea aleatoria. Un ejecutable compilado especialmente como ejecutable independiente de la posición (PIE) puede llamar a las funciones de biblioteca incluso si La dirección base de la biblioteca es aleatoria.
Esto no es todo lo que hace ASLR, y ciertos sistemas operativos centrados en la seguridad (OpenBSD, HardenedBSD, Linux con parches grsecurity / PaX, etc.) utilizan una forma de ASLR que hace aún más.