Aleatoriedad en la disposición del espacio de direcciones

[1]​ El primer sistema operativo popular en soportar ASLR por defecto fue la versión 3.4 de OpenBSD en 2003,[2]​[3]​ seguido por Linux en 2005.

Esto permite a un atacante tener éxito si la aleatoriedad del área la ha situado finalmente en un rango de unos pocos valores.

Debido a la manera en que se suelen pasar los argumentos, cada especificador de formato se acerca cada vez más al tope superior del marco de la pila.

Al intentar llevar a cabo un ataque, es posible alinear ataques duplicados con estos intervalos; una cadena de instrucciones NOP puede utilizarse con inyección de código shell, y la cadena '/bin/sh' puede sustituirse con '////////bin/sh' empleando un número arbitrario de barras inclinadas al intentar retornar al sistema.

Tales reducciones están limitadas debido a la cantidad de información presente en la pila o en el heap.

La pila, por ejemplo, suele estar limitada a 8 MBs y crece para ser mucho más pequeña; esto permite como mucho 19 bits, aunque una estimación más conservadora sería de entre 8 y 10 bits correspondientes a 4-16 KBs de ataques a la pila.

Varios sistemas operativos populares de propósito general implementan ASLR.

Android 4.1 añadió soporte para ejecutables independientes de posición (PIE),[7]​ mientras que Android 5.0 abandonó el soporte para ejecutables sin PIE y exige que todos los binarios enlazados dinámicamente sean independientes de posición.

[10]​ Está desactivada por defecto, y puede activarse poniendo a 1 el valor de vm.randomize_mmap con sysctl.

[13]​ Los juegos de parches PaX y Exec Shield aplicados al núcleo Linux proporcionan implementaciones más completas.

[16]​ Existen varios ataques de canal lateral viables en los procesadores x86 que podrían llegar a averiguar las direcciones del kernel.

[19]​[20]​ El sistema operativo Windows Vista de Microsoft (lanzado en enero de 2007) y las versiones posteriores del sistema operativo llevan ASLR activado únicamente para los ejecutables y librerías de enlace dinámico enlazadas específicamente para que se les aplique ASLR.

A las localizaciones del heap, la pila y el TLB también se aplica aleatoriedad.

Un documento de Symantec destacó que la implementación ASLR en Windows Vista de 32 bits puede no ser tan robusta como se esperaba, y Microsoft ha reconocido una debilidad en dicha implementación.

[23]​ Los sistemas de prevención de intrusos basados en anfitrión tales como WehnTrust[24]​ y Ozone[25]​ también ofrecen ASLR para los sistemas operativos Windows XP y Windows Server 2003.

El código utilizado como prueba causó un pánico del núcleo en MacOS X 10.7.3, así que no quedó claro el comportamiento de ASLR en este caso.

[30]​ El soporte para ASLR referente al kernel en amd64 se añadió en NetBSD-current en octubre de 2017, convirtiendo a NetBSD en el primer sistema BSD en soportar KASLR.

[31]​ En 2003 OpenBSD se convirtió en el primer sistema operativo popular en soportar una variante poderosa de ASLR y en activarla por defecto.

[33]​ Lanzado en 2013, OpenBSD 5.3 fue el primer sistema operativo popular en habilitar PIE por defecto en múltiples arquitecturas de hardware, y OpenBSD 5.7 activó por defecto los binarios estáticos independientes de posición (Static-PIE).

[32]​ En Mac OS X Leopard 10.5 (lanzado en octubre de 2007) Apple introdujo aleatoriedad para las librerías del sistema.

[34]​ En Mac OS X Lion 10.7 (lanzado en julio de 2011), Apple amplió su implementación para cubrir todas las aplicaciones, afirmando que "la aleatoriedad en la disposición del espacio de direcciones (ASLR) ha sido mejorada para todas las aplicaciones.

La implementación de ASLR en Solaris 11.1 puede actuar en todo el sistema, por zonas, o individualmente por binarios.

[38]​ En 2017 se mostró un ataque denominado "ASLR⊕Cache" que podía saltarse la protección de ASLR en un navegador web utilizando JavaScript.