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_spaceinterfaz.
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.confcontenga:
kernel.randomize_va_space = 0
debería deshabilitar esto permanentemente.
brk()?
La /proc/sys/kernel/randomize_va_spaceinterfaz 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 setarchy su -Ropció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 exitel caparazón una vez que hayas terminado.
Por cierto, en i386, ulimit -s unlimitedpuede "deshabilitar" ASLR.
EDITAR (abril de 2016): ulimit -s unlimitedse corrigió y se le asignó CVE-2016-3672 .
uname -muno también podría usarse arch, un binario que esencialmente hace lo mismo.
archno 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