¿Cómo puedo deshabilitar temporalmente ASLR (asignación aleatoria del diseño del espacio de direcciones)?
57
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?
¿Qué es exactamente "Aleatorización completa"? ¿Eso incluye el ejecutable en sí? Y lo que es brk()?
Shuzheng
26
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_RANDOMIZEpersonalidad 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 .
Pequeños detalles en el espíritu de util-linux: en lugar de uname -muno también podría usarse arch, un binario que esencialmente hace lo mismo.
drumfire
1
@drumfire archno está disponible como applet busybox
youfu
+1 por regresar dos años después y agregar la información sobre CVE.
Multisync
3
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
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.Entonces, para deshabilitarlo, ejecute
y para habilitarlo nuevamente, ejecute
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:debería deshabilitar esto permanentemente.
fuente
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 personalidadsetarch
y su-R
opción (página de manual ), anteponiendo un comando.Me parece realmente conveniente abrir un shell completamente nuevo usando:
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 .fuente
uname -m
uno también podría usarsearch
, un binario que esencialmente hace lo mismo.arch
no está disponible como applet busyboxLas 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
, haciendofuente
Solo puede usar
sudo sysctl kernel.randomize_va_space=0
para deshabilitar temparaly ASLR.fuente