La documentación para el randomize_va_space
sysctl la configuración está en Documentation/sysctl/kernel.txt
en el árbol de fuentes del núcleo. Básicamente,
0:desactiva la aleatorización del espacio de direcciones del proceso.
1 - Haz que las direcciones de mmap base, stack y VDSO sean aleatorias.
2 - Además, habilite la aleatorización del montón.
La mejor manera de deshabilitar localmente el ASLR en un sistema basado en Linux es usar marcas de personalidad de procesos. El comando para manipular las banderas de personalidad es setarch
con
-R
, --addr-no-randomize
Deshabilita la aleatorización del espacio de direcciones virtuales (activa ADDR_NO_RANDOMIZE).
He aquí cómo proceder:
$> setarch $(uname -m) -R /bin/bash
Este comando ejecuta un shell en el que se ha desactivado ASLR. Todos los descendientes de este proceso heredarán de las banderas de personalidad del padre y por lo tanto tendrán un ASLR deshabilitado. La única forma de romper la herencia de las banderas sería llamar a un programa setuid (sería una brecha de seguridad admitir tal función).
Tenga en cuenta que el uname -m
está aquí para no codificar la arquitectura de su plataforma y hacer que este comando sea portátil.