Saltar al contenido

¿Cómo puedo deshabilitar temporalmente ASLR (aleatorización del diseño del espacio de direcciones)?

Hacemos una revisión completa cada posts en nuestro espacio con el objetivo de enseñarte siempre información veraz y certera.

Solución:

De acuerdo con un artículo ¿Qué tan efectivo es ASLR en sistemas Linux?, puede configurar ASLR en Linux usando el /proc/sys/kernel/randomize_va_space interfaz.

Se admiten los siguientes valores:

  • 0 – Sin aleatorización. Todo es static.
  • 1 – Aleatorización conservadora. Bibliotecas compartidas, pila, mmap()VDSO y montón son aleatorios.
  • 2 – Aleatorización completa. Además de los elementos enumerados en el punto anterior, la memoria gestionada a través de brk() también es aleatorio.

Entonces, para deshabilitarlo, ejecute

echo 0 | sudo tee /proc/sys/kernel/randomize_va_space

y para habilitarlo de nuevo, ejecute

echo 2 | sudo tee /proc/sys/kernel/randomize_va_space

Esto no sobrevivirá a un reinicio, por lo que tendrá que configurarlo en sysctl. Agregar un archivo /etc/sysctl.d/01-disable-aslr.conf que contiene:

kernel.randomize_va_space = 0

debería deshabilitar esto permanentemente.

los /proc/sys/kernel/randomize_va_space la interfaz controla el sistema ASLR en todo el sistema.

Si no desea un cambio en todo el sistema, use ADDR_NO_RANDOMIZE indicador de personalidad para deshabilitar temporalmente ASLR. El control de esta bandera se puede hacer con setarch y es -R opción, como

setarch `uname -m` -R /bin/bash

Esto abrirá un nuevo shell Bash para usted con ASLR deshabilitado, incluidos todos los procesos secundarios que se ejecutan desde este shell. Sólo exit la cáscara una vez que haya terminado.


Por cierto, en i386, ulimit -s unlimited puede “deshabilitar” efectivamente ASLR.

EDITAR (abril de 2016): El ulimit -s unlimited fue corregido y asignado CVE-2016-3672.

Las formas más permanentes de deshabilitar ASLR deben mantenerse en una VM por razones obvias.

para probar la capacidad de sobrescribir direcciones de retorno de marcos de pila, etcétera, deberá compilar sin apilar canarios -fno-stack-protectormientras que para permitirle ejecutar código en la pila necesita compilar con -z execstackhaciendo

$ gcc -fno-stack-protector -z execstack -o  my_code.c

Aquí tienes las comentarios y valoraciones

Recuerda que puedes mostrar este ensayo si lograste el éxito.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *