La aleatorización del espacio de direcciones (ASLR) es una mitigación de exploits que coloca el código, las bibliotecas, la pila y el heap de un programa en direcciones aleatorias, para que el atacante no sepa adónde saltar.
Cómo funciona ASLR
Los exploits de corrupción de memoria dependían tradicionalmente de direcciones fijas: un atacante que sobrescribía una dirección de retorno mediante un desbordamiento de búfer necesitaba saber dónde estaba el código útil, como una función de una biblioteca del sistema. Con ASLR, el sistema operativo elige una dirección base distinta para el ejecutable, las bibliotecas compartidas, la pila y el heap cada vez que se inicia un programa (o, en Windows, para las DLL del sistema en cada arranque). Las direcciones codificadas del atacante apuntan entonces a memoria no válida y el proceso se bloquea en lugar de ser secuestrado.
El proyecto PaX introdujo ASLR en Linux en 2001; llegó al kernel Linux oficial en 2005, a Windows Vista en 2007 y más tarde a iOS y Android. KASLR aplica la misma idea al núcleo del sistema operativo.
Por qué importa ASLR y cuáles son sus límites
Junto con la memoria no ejecutable (DEP/NX) y los stack canaries, ASLR hizo la explotación fiable mucho más difícil y costosa. Aun así, no es una defensa completa:
- fugas de información: un segundo fallo que revele un solo puntero permite calcular la disposición real, por lo que las cadenas de exploits modernas combinan una fuga con, por ejemplo, un use-after-free;
- baja entropía: en sistemas de 32 bits el número de posiciones posibles es lo bastante pequeño para la fuerza bruta;
- módulos sin aleatorizar: una sola biblioteca compilada sin soporte de ASLR da al atacante direcciones fijas;
- canales laterales de hardware: varias investigaciones han demostrado que las cachés de la CPU y los predictores de saltos pueden revelar los desplazamientos de KASLR.
Buenas prácticas
- Compilar el software como ejecutables independientes de la posición (PIE) y mantener ASLR activado en todo el sistema.
- Usar compilaciones de 64 bits para obtener más entropía.
- Combinar ASLR con otras mitigaciones como Control Flow Guard y corregir rápido los fallos de seguridad de memoria.





