¿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_spaceinterfaz.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.confcontenga:debería deshabilitar esto permanentemente.
fuente
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_RANDOMIZEpersonalidad para deshabilitar temporalmente ASLR. Se puede controlar este indicador de personalidadsetarchy su-Ropció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
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 .fuente
uname -muno también podría usarsearch, un binario que esencialmente hace lo mismo.archno 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=0para deshabilitar temparaly ASLR.fuente