ASLR

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 31 de diciembre de 2018; las comprobaciones requieren 13 ediciones .

ASLR ( aleatorización del diseño del espacio de direcciones - "  aleatorización del diseño del espacio de direcciones  ") es una tecnología utilizada en los sistemas operativos , que cambia aleatoriamente la ubicación en el espacio de direcciones de un proceso de estructuras de datos importantes, a saber, imágenes de archivos ejecutables , bibliotecas cargables , montones y pilas .

ASLR está diseñado para dificultar la explotación de varios tipos de vulnerabilidades . Por ejemplo, si un atacante obtiene la capacidad de transferir el control a una dirección arbitraria mediante un desbordamiento de búfer u otro método, deberá adivinar en qué dirección se puede colocar la pila, el montón u otras estructuras de datos en Shellcode . Surgirán problemas similares con un ataque de retorno a libc: el atacante no sabrá la dirección donde se carga la biblioteca. En los ejemplos anteriores, las direcciones específicas están ocultas para el atacante y, si no se puede adivinar la dirección correcta, es probable que la aplicación se bloquee, privando así al atacante de la oportunidad de volver a atacar y atrayendo la atención del administrador del sistema .

Implementaciones

OpenBSD

Los desarrolladores de OpenBSD estuvieron entre los primeros en implementar ASLR. ASLR está habilitado de forma predeterminada.

linux

El kernel de Linux ha tenido una variante simple de ASLR desde 2005 (desde la versión 2.6.12). Se ofrecen variantes de ASLR más complejas y completas como parches ( PaX , ExecShield, etc.). En las distribuciones que incluyen la palabra "endurecido" en sus nombres, así como en las versiones modernas de la distribución de Ubuntu , las variantes duras están habilitadas de manera predeterminada.

Para que ASLR funcione (para colocar archivos ejecutables en la memoria en direcciones aleatorias), los archivos ejecutables deben compilarse en modo ejecutable independiente de la posición (un tipo de código independiente de la posición para archivos ejecutables).

Microsoft Windows

En Windows , ASLR ha sido compatible desde Windows Vista (2007) [1] para archivos ejecutables y bibliotecas creadas con indicadores especiales.

ASLR también es compatible con versiones posteriores de Windows , como Windows Server 2008 , Windows 7 , Windows Server 2008 R2 , Windows 8 , Windows 8.1 , Windows 10 .

ASLR no se usa para aplicaciones creadas sin marcas especiales y cuando se ejecuta en modo de compatibilidad para versiones anteriores de Windows.

En Windows XP y Windows Server 2003 , ASLR se puede habilitar para cualquier aplicación seleccionada utilizando Microsoft EMET [2] (kit de herramientas de experiencia de mitigación mejorada).

Mac OS X

Se agregó algo de aleatoriedad en la carga de la biblioteca en Mac OS X v10.5 Leopard (2007) [3] . En OS X 10.8 Mountain Lion (2012), ASLR es parte del kernel del sistema [4] .

iOS

iOS ha estado usando la tecnología ASLR desde la versión 4.3 [5] . Para kernel, usado desde iOS 6 [6] .

Impacto de ASLR en la memoria virtual

ASLR es un compromiso entre mayor seguridad y menor almacenamiento privado disponible de 24 bits, 31 bits y 64 bits. Habilitar el almacenamiento virtual de 24 y 31 bits reducirá el almacenamiento privado disponible a 63 y 255 páginas, respectivamente. El tamaño del área de trabajo solicitado aún debe satisfacerse desde el área privada reducida para que se ejecute el trabajo. Los trabajos cuyo tamaño de alcance no se puede satisfacer darán como resultado un error ABEND 822. Si el tamaño de alcance solicitado del trabajo satisface, es posible que el tamaño de almacenamiento privado reducido impida que el trabajo se complete, lo que genera el error ABEND 878.

Una forma de determinar si los trabajos no se pueden ejecutar con el límite de tamaño de almacenamiento privado de 24 o 31 bits que ocurrirá con ASLR habilitado es especificar un valor mayor para el parámetro CSA en parmlib. Aumentar los tamaños de CSA de 24 y 31 bits en 1 millón reduce efectivamente el tamaño del almacenamiento privado de 24 y 31 bits en 1 millón, que es más que la reducción máxima que ocurrirá con ASLR [7] .

Desventajas

Para usar ASLR, los ejecutables deben construirse con banderas especiales. Como resultado, las direcciones permanentes no se utilizarán en el código, pero al mismo tiempo:

Además, la protección se puede omitir mediante el agotamiento de la memoria [8] o los métodos Heap Spray [9] .

Notas

  1. Defensas de seguridad del software ISV de Windows . msdn.microsoft.com. Consultado el 10 de abril de 2012. Archivado desde el original el 18 de abril de 2012.
  2. Windows Internals: incluidos Windows Server 2008 y Windows Vista, quinta edición (PRO-Developer) ISBN 978-0-7356-2530-3
  3. La aleatorización de memoria (ASLR) llega a Mac OS X Leopard | ZDNet . Consultado el 5 de enero de 2018. Archivado desde el original el 15 de agosto de 2020.
  4. Descripción general de OS X Mountain Lion Core Technologies (junio de 2012). Consultado el 25 de julio de 2012. Archivado desde el original el 10 de julio de 2012.
  5. Pwn2Own día 2: iPhone, BlackBerry derrotados; Chrome, Firefox no se presenta . - "iOS 4.3 introduce la aleatorización del diseño del espacio de direcciones (ASLR)". Consultado el 18 de septiembre de 2014. Archivado desde el original el 27 de febrero de 2017.
  6. Página de inicio de Yeongjin Jang . Consultado el 5 de enero de 2018. Archivado desde el original el 21 de septiembre de 2020.
  7. ↑ Aleatorización del diseño  del espacio de direcciones  . www.ibm.com . Recuperado: 12 de septiembre de 2022.
  8. ↑ Omisión simple de la protección ASLR en Windows 7/8 . Consultado el 2 de marzo de 2015. Archivado desde el original el 19 de abril de 2018.
  9. Copia archivada . Consultado el 13 de noviembre de 2016. Archivado desde el original el 20 de abril de 2018.

Literatura

Enlaces