Estoy usando Ubuntu 12.04 de 32 bits ahora para algún experimento. Necesito desactivar ASLR, ¿cómo puedo hacer esto? y después de eso, ¿qué debo hacer para habilitar ASLR nuevamente?
Estoy usando Ubuntu 12.04 de 32 bits ahora para algún experimento. Necesito desactivar ASLR, ¿cómo puedo hacer esto? y después de eso, ¿qué debo hacer para habilitar ASLR nuevamente?
Respuestas:
De acuerdo con un artículo ¿Cuán efectivo es ASLR en sistemas Linux? , puede configurar ASLR en Linux usando la /proc/sys/kernel/randomize_va_space
interfaz.
Se admiten los siguientes valores:
- 0: sin aleatorización. Todo es estático
- 1 - Aleatorización conservadora. Las bibliotecas compartidas, stack,
mmap()
VDSO y heap son aleatorizadas.- 2 - Aleatorización completa. Además de los elementos enumerados en el punto anterior, la memoria administrada
brk()
también es aleatoria.
Entonces, para deshabilitarlo, ejecute
echo 0 | sudo tee /proc/sys/kernel/randomize_va_space
y para habilitarlo nuevamente, ejecute
echo 2 | sudo tee /proc/sys/kernel/randomize_va_space
Esto no sobrevivirá a un reinicio, por lo que tendrá que configurar esto sysctl
. Agregue un archivo que /etc/sysctl.d/01-disable-aslr.conf
contenga:
kernel.randomize_va_space = 0
debería deshabilitar esto permanentemente.
brk()
?
La /proc/sys/kernel/randomize_va_space
interfaz controla ASLR en todo el sistema.
Si no desea un cambio en todo el sistema, use la ADDR_NO_RANDOMIZE
personalidad para deshabilitar temporalmente ASLR. Se puede controlar este indicador de personalidad setarch
y su -R
opción (página de manual ), anteponiendo un comando.
Me parece realmente conveniente abrir un shell completamente nuevo usando:
setarch `uname -m` -R /bin/bash
Esto abrirá un nuevo shell Bash para usted con ASLR deshabilitado, incluidos todos los procesos secundarios (los programas se ejecutan desde este shell).
Solo exit
el caparazón una vez que hayas terminado.
Por cierto, en i386, ulimit -s unlimited
puede "deshabilitar" ASLR.
EDITAR (abril de 2016): ulimit -s unlimited
se corrigió y se le asignó CVE-2016-3672 .
uname -m
uno también podría usarse arch
, un binario que esencialmente hace lo mismo.
arch
no está disponible como applet busybox
Las formas más permanentes de deshabilitar ASLR deben mantenerse en una VM por razones obvias.
para probar la capacidad de sobrescribir las direcciones de retorno del marco de la pila, etc., deberá compilar sin los canarios de la pila -fno-stack-protector
, mientras que para permitirle ejecutar código en la pila con la que necesita compilar -z execstack
, haciendo
$ gcc -fno-stack-protector -z execstack -o <my_program> my_code.c