La aleatorización del espacio de direcciones ( ASLR ) es una técnica de seguridad informática que previene la explotación de vulnerabilidades de corrupción de memoria . [ 1 ] Para evitar que un atacante redirija de forma fiable la ejecución del código a una función explotada específica en la memoria, ASLR organiza aleatoriamente las posiciones del espacio de direcciones de las áreas de datos clave de un proceso , incluyendo la base del ejecutable y las posiciones de la pila , el montón y las bibliotecas . Cuando se aplica al núcleo , esta técnica se denomina aleatorización del espacio de direcciones del núcleo ( KASLR ). [ 2 ]
Historia
El proyecto Linux PaX acuñó por primera vez el término "ASLR" y publicó el primer diseño e implementación de ASLR en julio de 2001 como un parche para el kernel de Linux . Se considera una implementación completa, que proporciona un parche para la aleatorización de la pila del kernel desde octubre de 2002. [ 3 ]
El primer sistema operativo convencional que admitió ASLR de forma predeterminada fue OpenBSD versión 3.4 en 2003, [ 4 ] [ 5 ] seguido de Linux en 2005.
Beneficios
La aleatorización del espacio de direcciones dificulta algunos tipos de ataques de seguridad, ya que complica la predicción de las direcciones objetivo. Por ejemplo, quienes intentan ejecutar ataques de retorno a libc deben localizar el código que se va a ejecutar, mientras que quienes intentan ejecutar código malicioso inyectado en la pila deben encontrar primero la pila. En ambos casos, el sistema hace que las direcciones de memoria relacionadas sean impredecibles para los atacantes. Estos valores deben adivinarse, y un error en la suposición generalmente no se puede recuperar debido al fallo de la aplicación.
Eficacia
La aleatorización del espacio de direcciones se basa en la baja probabilidad de que un atacante adivine la ubicación de las áreas distribuidas aleatoriamente. La seguridad aumenta al incrementar el espacio de búsqueda. Por lo tanto, la aleatorización del espacio de direcciones es más efectiva cuando hay mayor entropía en los desplazamientos aleatorios. La entropía se incrementa aumentando la cantidad de espacio de memoria virtual sobre el cual se realiza la aleatorización o reduciendo el período durante el cual se realiza. El período generalmente se implementa lo más pequeño posible, por lo que la mayoría de los sistemas deben aumentar la aleatorización del espacio de memoria virtual.
Para burlar la aleatorización, los atacantes deben adivinar correctamente las posiciones de todas las áreas que desean atacar. En áreas de datos como la pila y el montón, donde se puede cargar código personalizado o datos útiles, se puede atacar más de un estado utilizando deslizamientos NOP para el código o copias repetidas de datos. Esto permite que un ataque tenga éxito si el área se aleatoriza a uno de un puñado de valores. Por el contrario, las áreas de código como la base de la biblioteca y el ejecutable principal deben descubrirse con precisión. A menudo, estas áreas están mezcladas; por ejemplo, se inyectan marcos de pila en la pila y se devuelve una biblioteca.
Se pueden declarar las siguientes variables:
- (bits de entropía de la parte superior de la pila)
- (bits de entropía de
mmap()la base) - (bits de entropía de la base ejecutable principal)
- (bits de entropía de la base del montón)
- (bits atacados por intento de entropía de pila)
- (bits atacados por intento de
mmap()entropía base) - (bits atacados por intento de entropía del ejecutable principal)
- (bits atacados por intento de entropía base del montón)
- (intentos realizados)
- (cantidad total de entropía:)
Para calcular la probabilidad de éxito de un atacante, se debe asumir un número α de intentos realizados sin interrupciones por parte de un sistema de prevención de intrusiones (IPS) basado en firmas, las fuerzas del orden u otro factor; en el caso de un ataque de fuerza bruta, el demonio no puede reiniciarse. También se debe calcular el número de bits relevantes y cuántos se atacan en cada intento, lo que deja como resultado la cantidad de bits que el atacante debe superar.
Las siguientes fórmulas representan la probabilidad de éxito para un conjunto dado de α intentos en N bits de entropía.
- (Adivinación aislada; el espacio de direcciones se vuelve a generar aleatoriamente después de cada intento)
- (ataque sistemático de fuerza bruta en copias del programa con el mismo espacio de direcciones)
En muchos sistemas,pueden ser miles o millones. En sistemas de 32 bits, una cantidad típica de entropía N es de 8 bits. [ 6 ] Para velocidades de computadoras de 2004, Shacham y sus colaboradores afirman que "... 16 bits de aleatorización de direcciones pueden ser superados por un ataque de fuerza bruta en cuestión de minutos." [ 7 ] (La afirmación de los autores depende de la capacidad de atacar la misma aplicación varias veces sin demora. Las implementaciones adecuadas de ASLR, como la incluida en grsecurity, proporcionan varios métodos para hacer que tales ataques de fuerza bruta sean inviables. Un método consiste en impedir que un ejecutable se ejecute durante un tiempo configurable si ha fallado un cierto número de veces). En sistemas modernosEn los sistemas de 64 bits , estas cifras suelen alcanzar al menos los millones.
Android, [ 8 ] y posiblemente otros sistemas, implementan la aleatorización del orden de carga de bibliotecas , una forma de ASLR que aleatoriza el orden en que se cargan las bibliotecas. Esto proporciona muy poca entropía. Una aproximación del número de bits de entropía proporcionados por biblioteca necesaria aparece a continuación; esto aún no tiene en cuenta los diferentes tamaños de biblioteca, por lo que la entropía real obtenida es en realidad algo mayor. Los atacantes generalmente solo necesitan una biblioteca; las matemáticas son más complejas con varias bibliotecas, y también se muestran a continuación. El caso de un atacante que usa solo una biblioteca es una simplificación de la fórmula más compleja para.
- l (número de bibliotecas cargadas)
- β (número de bibliotecas utilizadas por el atacante)
Estos valores tienden a ser bajos incluso para valores grandes de l , lo más importante es que los atacantes normalmente solo pueden usar la biblioteca estándar de C y, por lo tanto, a menudo se puede suponer queSin embargo, incluso para un número reducido de bibliotecas, se obtiene cierta entropía adicional; por lo tanto, resulta potencialmente interesante combinar la aleatorización del orden de carga de las bibliotecas con la aleatorización de la dirección VMA para obtener una entropía adicional. Esta entropía adicional no se aplicará a otros segmentos mmap(), solo a las bibliotecas.
Reducción de la entropía
Los atacantes pueden utilizar diversos métodos para reducir la entropía presente en un espacio de direcciones aleatorio, desde simples fugas de información hasta ataques que reducen la entropía en múltiples bits por ataque (como mediante la técnica de "heap spraying "). Poco se puede hacer al respecto.
Es posible filtrar información sobre la distribución de la memoria mediante vulnerabilidades en las cadenas de formato . Las funciones de cadena de formato, como printf, utilizan una lista de argumentos variable ; los especificadores de formato describen la estructura de dicha lista. Debido a la forma habitual en que se pasan los argumentos, cada especificador de formato se desplaza hacia la parte superior del marco de pila. Finalmente, se pueden extraer el puntero de retorno y el puntero del marco de pila, revelando la dirección de una biblioteca vulnerable y la dirección de un marco de pila conocido; esto puede eliminar la aleatorización de la biblioteca y la pila como obstáculo para un atacante.
También se puede disminuir la entropía en la pila o el montón. La pila normalmente debe estar alineada a 16 bytes, por lo que este es el intervalo de aleatorización más pequeño posible; mientras que el montón debe estar alineado a página, normalmente a 4096 bytes. Al intentar un ataque, es posible alinear ataques duplicados con estos intervalos; se puede usar un deslizamiento NOP con inyección de shellcode , y la cadena ' /bin/sh' puede reemplazarse con ' ////////bin/sh' para un número arbitrario de barras diagonales al intentar regresar al sistema . El número de bits eliminados es exactamentedurante n intervalos atacados.
Estas disminuciones están limitadas debido a la cantidad de datos en la pila o el montón. La pila, por ejemplo, normalmente está limitada a8 MB [ 9 ] y crece a mucho menos; esto permite como máximo19 bits , aunque una estimación más conservadora sería de alrededor de 8.10 bits correspondientes a 4–16 KB [ 9 ] de relleno de pila. El montón, por otro lado, está limitado por el comportamiento del asignador de memoria; en el caso de glibc , las asignaciones superiores a 128 KB se crean usando mmap , lo que limita a los atacantes a 5 bits de reducción. Este también es un factor limitante cuando se realiza un ataque de fuerza bruta; aunque se puede reducir el número de ataques a realizar, el tamaño de los ataques aumenta lo suficiente como para que el comportamiento pueda, en algunas circunstancias, hacerse evidente para los sistemas de detección de intrusiones .
Limitaciones
Las direcciones protegidas por ASLR pueden filtrarse a través de diversos canales laterales, lo que anula su utilidad de mitigación. Ataques recientes han utilizado información filtrada por el búfer predictor de destino de bifurcación (BTB) de la CPU o por las tablas de páginas de la unidad de gestión de memoria (MMU). No está claro si este tipo de ataque ASLR puede mitigarse. De no ser así, la eficacia de ASLR se reduce o se elimina.
Análisis empírico
En agosto de 2024 se publicó un artículo [ 10 ] con un análisis empírico de las principales plataformas de escritorio, incluidas Linux, macOS y Windows, examinando la variabilidad en la ubicación de los objetos de memoria en diversos procesos, subprocesos y reinicios del sistema. Los resultados muestran que, si bien algunos sistemas, como las distribuciones de Linux, ofrecen una aleatorización robusta en 2024, otros, como Windows y macOS, a menudo no logran aleatorizar adecuadamente áreas clave como el código ejecutable y las bibliotecas. Además, encontraron una reducción significativa en la entropía de las bibliotecas después de la versión 5.18 de Linux e identificaron rutas de correlación que un atacante podría aprovechar para reducir significativamente la complejidad de la explotación.
Implementaciones
Varios sistemas operativos convencionales de propósito general implementan ASLR.
Androide
Android 4.0 Ice Cream Sandwich proporciona aleatorización del diseño del espacio de direcciones (ASLR) para ayudar a proteger las aplicaciones del sistema y de terceros de exploits debido a problemas de administración de memoria. El soporte para ejecutables independientes de la posición se agregó en Android 4.1. [ 11 ] Android 5.0 eliminó el soporte para no PIE y requiere que todos los binarios vinculados dinámicamente sean independientes de la posición. [ 12 ] [ 13 ] La aleatorización del orden de carga de bibliotecas fue aceptada en el proyecto de código abierto de Android el 26 de octubre de 2015, [ 8 ] y se incluyó en la versión de Android 7.0.
DragonFly BSD
DragonFly BSD tiene una implementación de ASLR basada en el modelo de OpenBSD, añadida en 2010. [ 14 ] Está desactivada por defecto y se puede habilitar configurando sysctl vm.randomize_mmap a 1.
FreeBSD
El soporte para ASLR apareció en FreeBSD 13.0. [ 15 ] [ 16 ] Está habilitado por defecto desde 13.2. [ 17 ]
iOS (iPhone, iPod touch, iPad)
Apple introdujo ASLR en iOS 4.3 (lanzado en marzo de 2011). [ 18 ]
KASLR se introdujo en iOS 6. [ 19 ] La base del kernel aleatorio es 0x01000000 + ((1+0xRR) * 0x00200000), donde 0xRRes un byte aleatorio de SHA1 (datos aleatorios) generado por iBoot (el cargador de arranque de iOS de segunda etapa). [ 20 ]
Linux
El kernel de Linux habilitó una forma débil de ASLR por defecto desde la versión 2.6.12, publicada en junio de 2005. [ 21 ] Los parches PaX y Exec Shield para el kernel de Linux proporcionan implementaciones más completas. El parche Exec Shield para Linux proporciona 19 bits de entropía de pila en un período de 16 bytes y 8 bits de aleatorización de la base mmap en un período de 1 página de 4096 bytes. Esto coloca la base de la pila en un área de 8 MB de ancho que contiene 524 288 posiciones posibles, y la base mmap en un área de 1 MB de ancho que contiene 256 posiciones posibles.
ASLR se puede deshabilitar para un proceso específico cambiando su dominio de ejecución, usando personality(2). [ 22 ] Varias opciones de sysctlkernel.randomize_va_space controlan el comportamiento de ASLR principal. Por ejemplo, controla qué aleatorizar; la opción más fuerte es 2. vm.mmap_rnd_bitscontrola cuántos bits aleatorizar para mmap . [ 23 ]
El ejecutable independiente de la posición (PIE) implementa una dirección base aleatoria para el binario ejecutable principal y está en funcionamiento desde el 18 de abril de 2004. Proporciona al ejecutable principal la misma aleatoriedad de direcciones que se utiliza para las bibliotecas compartidas. La función PIE no se puede usar junto con la función de preenlace para el mismo ejecutable. La herramienta de preenlace implementa la aleatorización en tiempo de preenlace en lugar de en tiempo de ejecución, ya que, por diseño, el preenlace tiene como objetivo gestionar la reubicación de bibliotecas antes de que tenga que hacerlo el enlazador dinámico , lo que permite que la reubicación ocurra una sola vez para muchas ejecuciones del programa. Como resultado, la aleatorización real del espacio de direcciones anularía el propósito del preenlace.
En 2014, Marco-Gisbert y Ripoll revelaron la técnica offset2lib , que debilita el ASLR de Linux para los ejecutables PIE. Los núcleos de Linux cargan los ejecutables PIE justo después de sus bibliotecas; como resultado, existe un desplazamiento fijo entre el ejecutable y las funciones de la biblioteca. Si un atacante encuentra la dirección de una función en el ejecutable, también se conocen las direcciones de la biblioteca. Demostraron un ataque que encuentra la dirección en menos de 400 intentos. Propusieron una nueva randomize_va_space=3opción para aleatorizar la ubicación del ejecutable con respecto a la biblioteca, [ 6 ] pero aún no se ha incorporado al código fuente principal a fecha de 2024. [ 24 ]
El kernel de Linux 5.18, lanzado en mayo de 2022, redujo la efectividad de las implementaciones de 32 y 64 bits. Los sistemas de archivos de Linux llaman para responder a un mmapthp_get_unmapped_area respaldado por archivos . Con un cambio en 5.18, los archivos mayores de 2 MiB se hacen devolver direcciones alineadas a 2 MiB, por lo que potencialmente pueden estar respaldados por páginas enormes . (Anteriormente, la alineación aumentada solo se aplicaba a las asignaciones de Acceso Directo (DAX)). Mientras tanto, la biblioteca C (libc) ha crecido con el tiempo en tamaño hasta superar este umbral de 2 MiB, por lo que en lugar de estar alineada a un límite de página (típicamente) de 4 KiB como antes, estas bibliotecas ahora están alineadas a 2 MiB: una pérdida de 9 bits de entropía. Para Linux de 32 bits, muchas distribuciones no muestran ninguna aleatorización en la ubicación de libc. Para Linux de 64 bits, los 28 bits de entropía se reducen a 19 bits. En respuesta, Ubuntu ha aumentado su configuración. [ 25 ] Martin Doucha agregó un caso de prueba del Proyecto de Pruebas de Linux para detectar este problema. [ 26 ] mmap_rnd_bits
Aleatorización del diseño del espacio de direcciones del kernel
La aleatorización del espacio de direcciones del kernel (KASLR) permite la aleatorización del espacio de direcciones para la imagen del kernel de Linux al aleatorizar dónde se coloca el código del kernel en el momento del arranque. [ 27 ] KASLR se fusionó con la rama principal del kernel de Linux en la versión 3.14, publicada el 30 de marzo de 2014. [ 28 ] Cuando se compila, se puede deshabilitar en el momento del arranque especificando nokaslr como uno de los parámetros de arranque del kernel. [ 29 ]
Existen varios ataques de canal lateral en procesadores x86 que podrían filtrar direcciones del kernel. [ 30 ] [ 31 ] A finales de 2017, se desarrolló el aislamiento de la tabla de páginas del kernel (KPTI, también conocido como KAISER) para contrarrestar estos ataques. [ 32 ] [ 33 ] Sin embargo, este método no puede proteger contra ataques de canal lateral que utilizan colisiones en estructuras de predicción de bifurcaciones . [ 34 ]
A partir de 2021La aleatorización del espacio de direcciones del kernel de grano más fino (o KASLR granular de función, FGKASLR) es una extensión planificada de KASLR para aleatorizar hasta el nivel de función colocando las funciones en secciones separadas y reordenándolas en el momento del arranque. [ 35 ]
Microsoft Windows
Windows Vista de Microsoft ( lanzado para fabricación en noviembre de 2006, disponible generalmente en enero de 2007) y versiones posteriores tienen ASLR habilitado solo para ejecutables y bibliotecas de vínculos dinámicos que están específicamente vinculadas para ser habilitadas para ASLR. [ 36 ] Por compatibilidad, no está habilitado de forma predeterminada para otras aplicaciones. Por lo general, solo el software antiguo es incompatible y ASLR se puede habilitar completamente editando una entrada del registro HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management\MoveImages, [ 37 ] o instalando el Kit de herramientas de experiencia de mitigación mejorada de Microsoft .
Las ubicaciones del montón , la pila , el bloque de entorno del proceso y el bloque de entorno del hilo también se generan aleatoriamente. Un documento técnico sobre seguridad de Symantec señaló que ASLR en Windows Vista de 32 bits podría no ser tan robusto como se esperaba, y Microsoft ha reconocido una debilidad en su implementación. [ 38 ]
Los sistemas de prevención de intrusiones basados en el host , como WehnTrust [ 39 ] y Ozone [ 40 ], también ofrecen ASLR para los sistemas operativos Windows XP y Windows Server 2003. WehnTrust es de código abierto. [ 41 ] No se dispone de detalles completos sobre la implementación de Ozone. [ 42 ]
En febrero de 2012 [ 43 ] se observó que la eficacia de ASLR en sistemas Windows de 32 bits anteriores a Windows 8 podía verse reducida en situaciones de poca memoria. En la misma investigación se había observado un efecto similar en Linux. El código de prueba provocó un fallo del kernel en el sistema Mac OS X 10.7.3 , por lo que no quedó claro su comportamiento respecto a ASLR en este escenario.
NetBSD
El soporte para ASLR en el espacio de usuario apareció en NetBSD 5.0 (lanzado en abril de 2009), [ 44 ] y se habilitó por defecto en NetBSD-current en abril de 2016. [ 45 ]
El soporte para ASLR del kernel en amd64 se agregó en NetBSD-current en octubre de 2017, lo que convirtió a NetBSD en el primer sistema BSD en soportar KASLR. [ 46 ]
OpenBSD
En 2003, OpenBSD se convirtió en el primer sistema operativo popular en admitir una forma fuerte de ASLR y activarla por defecto. [ 4 ] OpenBSD completó su soporte de ASLR en 2008 cuando agregó soporte para binarios PIE . [ 47 ] El malloc(3) de OpenBSD 4.4 fue diseñado para mejorar la seguridad aprovechando las características de ASLR y gap page implementadas como parte de mmapla llamada al sistema de OpenBSD , y para detectar errores de uso después de la liberación. [ 48 ] Lanzado en 2013, OpenBSD 5.3 fue el primer sistema operativo popular en habilitar ejecutables independientes de la posición por defecto en múltiples plataformas de hardware , y OpenBSD 5.7 activó los binarios estáticos independientes de la posición (Static-PIE) por defecto. [ 47 ]
macOS
En Mac OS X Leopard 10.5 (lanzado en octubre de 2007), Apple introdujo la aleatorización para las bibliotecas del sistema. [ 49 ]
En Mac OS X Lion 10.7 (lanzado en julio de 2011), Apple amplió su implementación para abarcar todas las aplicaciones, declarando que "la aleatorización del diseño del espacio de direcciones (ASLR) se ha mejorado para todas las aplicaciones. Ahora está disponible para aplicaciones de 32 bits (al igual que las protecciones de memoria del montón), lo que hace que las aplicaciones de 64 bits y 32 bits sean más resistentes a los ataques". [ 50 ]
A partir de OS X Mountain Lion 10.8 (lanzado en julio de 2012) y versiones posteriores, todo el sistema, incluido el kernel, así como los kexts y las zonas, se reubican aleatoriamente durante el arranque del sistema. [ 51 ]
Solaris
ASLR se introdujo en Solaris a partir de Solaris 11.1 (lanzado en octubre de 2012). ASLR en Solaris 11.1 se puede configurar para todo el sistema, por zona o por binario. [ 52 ]
Explotación
Se demostró que un ataque de canal lateral que utiliza el búfer de destino de ramificación podía eludir la protección ASLR. [ 34 ] En 2017, se demostró un ataque llamado "ASLR⊕Cache" que podía derrotar a ASLR en un navegador web usando JavaScript . [ 53 ]
Véase también
Referencias
- ↑ Marco-Gisbert, Hector; Ripoll Ripoll, Ismael (2019-07-22). "Address Space Layout Randomization Next Generation" . Applied Sciences . 9 (14): 2928. doi : 10.3390/app9142928 . hdl : 10251/144813 . ISSN 2076-3417 .
- ↑ Yeongjin Jang; Sangho Lee; Taesoo Kim. Rompiendo la aleatorización del diseño del espacio de direcciones del kernel con Intel TSX (PDF) . 23.ª Conferencia ACM sobre seguridad informática y de comunicaciones . doi : 10.1145/2976749.2978321 .
- ↑ Brad Spengler (octubre de 2003). "PaX: El fin garantizado de la ejecución de código arbitrario" (PDF) . grsecurity.net . Diapositivas 22 a 35. Archivado (PDF) del original el 25 de octubre de 2020. Consultado el 20 de agosto de 2015 .
- 1 2 Theo De Raadt (2005). "Técnicas de mitigación de exploits (actualizadas para incluir malloc y mmap aleatorios) en OpenCON 2005" . Archivado del original el 16 de julio de 2012. Recuperado el 26 de agosto de 2009 .
- ↑ "Innovaciones de OpenBSD" . El proyecto OpenBSD. Archivado del original el 9 de septiembre de 2016. Consultado el 12 de septiembre de 2016 .
- 1 2 Marco-Gisbert, Hector; Ripoll, Ismael (2014-11-20). "Sobre la efectividad de Full-ASLR en Linux de 64 bits" (PDF) . Archivado del original (PDF) el 8 de mayo de 2015. Recuperado el 29 de marzo de 2016 .
- ↑ Shacham, H.; Page, M.; Pfaff, B.; Goh, EJ; Modadugu, N.; Boneh, D (2004). Sobre la efectividad de la aleatorización del espacio de direcciones . 11.ª conferencia ACM sobre seguridad informática y de comunicaciones. págs. 298–307 .
- 1 2 "Implementar aleatorización del orden de carga de la biblioteca" . Archivado del original el 11 de agosto de 2023. Recuperado el 26 de junio de 2017 .
- 1 2 La memoria transistorizada, como RAM, ROM, flash y tamaños de caché, así como los tamaños de archivo, se especifican utilizando significados binarios para K (1024 1 ), M (1024 2 ), G (1024 3 ), etc.
- ↑ Binosi, Lorenzo; Barzasi, Gregorio; Carminati, Michele; Zanero, Stefano; Polino, Mario (2024). "La ilusión de la aleatoriedad: un análisis empírico de las implementaciones de aleatorización del diseño del espacio de direcciones". Actas de la Conferencia ACM SIGSAC de 2024 sobre seguridad informática y de comunicaciones . págs. 1360–1374 . arXiv : 2408.15107 . doi : 10.1145/3658644.3690239 . ISBN 979-8-4007-0636-3.
- ↑ "Seguridad de Android" . Desarrolladores de Android. Archivado del original el 12 de octubre de 2011. Consultado el 7 de julio de 2012 .
- ↑ "oss-security" . Archivado del original el 5 de octubre de 2015. Consultado el 4 de octubre de 2015 .
- ↑ "Revertir "Reactivar la compatibilidad con ejecutables que no sean PIE"" . Archivado del original el 11-08-2023 . Recuperado el 26-06-2017 .
- ↑ mmap - agregar aleatorización de desplazamiento mmap Archivado el 1 de febrero de 2014 en Wayback Machine , DragonFly Gitweb, 25 de noviembre de 2010.
- ↑ "Implementar la aleatorización del diseño del espacio de direcciones (ASLR)" . Archivado del original el 7 de mayo de 2019. Consultado el 10 de febrero de 2019 .
- ↑ "ASLR - Wiki de FreeBSD" . Archivado del original el 17 de mayo de 2021. Consultado el 17 de mayo de 2021 .
- ↑ "Notas de la versión FreeBSD 13.2-RELEASE" . Archivado del original el 11 de abril de 2023. Consultado el 11 de abril de 2023 .
- ↑ Pwn2Own día 2: iPhone y BlackBerry derrotados; Chrome y Firefox ausentes. Archivado el 2 de mayo de 2012 en Wayback Machine , Ars Technica , 11 de marzo de 2011.
- ↑ Stefan Esser (07/03/2013). "Explotación de iOS 6 280 días después" . Diapositiva 19, "iOS 6 introduce KASLR". Archivado del original el 07/05/2019 . Recuperado el 25/04/2018 .
- ↑ Tarjei Mandt. "Atacar el kernel de iOS: una mirada a 'evasi0n'" (PDF) . Archivado (PDF) del original el 13-12-2020 . Recuperado el 23-07-2023 .
- ↑ Dang, Alan; Miller, Charlie (25 de marzo de 2009). "The NX Bit And ASLR" . Tom's Hardware . Archivado del original el 11 de agosto de 2023. Recuperado el 20 de marzo de 2010 .
- ↑ – Manual del programador de Linux – Llamadas al sistema
- ↑
- ↑ " [ PARCHE ] ASLRv3: randomize_va_space=3 previene el ataque offset2lib" . lore.kernel.org .
- ↑ Miller, Justin (2024-01-08). "ASLRn't: Cómo la alineación de memoria rompió la biblioteca ASLR" . Blog de zolutal . Recuperado el 2024-01-13 .
- ↑ " [ LTP ] [ PATCH 2/2 ] Agregar prueba para el error ASLRn't - Martin Doucha" . lore.kernel.org .
- ↑ Jake Edge (09/10/2013). "Aleatorización del diseño del espacio de direcciones del kernel" . LWN.net . Archivado del original el 04/04/2014 . Consultado el 02/04/2014 .
- ↑ "Núcleo de Linux 3.14, Sección 1.7. Aleatorización del espacio de direcciones del núcleo" . kernelnewbies.org . 30 de marzo de 2014. Archivado del original el 15 de enero de 2021. Consultado el 2 de abril de 2014 .
- ↑ "kernel/git/torvalds/linux.git: x86, kaslr: Devuelve la ubicación de decompress_kernel (árbol fuente del kernel de Linux)" . kernel.org . 13-10-2013. Archivado del original el 11-08-2023 . Consultado el 02-04-2014 .
- ↑ KASLR ha muerto: ¡Larga vida a KASLR! (PDF) . Ingeniería de software y sistemas seguros 2017. 24 de junio de 2017.
- ↑ Jang, Yeongjin; Lee, Sangho; Kim, Taesoo (2016). "Rompiendo la aleatorización del espacio de direcciones del kernel con Intel TSX" (PDF) . Actas de la Conferencia ACM SIGSAC de 2016 sobre seguridad informática y de comunicaciones . CCS '16. Nueva York: Association for Computing Machinery. págs. 380–392 . doi : 10.1145/2976749.2978321 . ISBN 9781450341394. S2CID 6293725 . Archivado (PDF) del original el 21-09-2020 . Recuperado el 29-12-2017 .
- ↑ Corbet, Jonathan (2017-12-20). "El estado actual del aislamiento de la tabla de páginas del kernel" . Linux Weekly News . Archivado del original el 4 de enero de 2018. Recuperado el 4 de enero de 2018 .
- ↑ Corbet, Jonathan (15 de noviembre de 2017). "KAISER: ocultando el kernel del espacio de usuario" . Linux Weekly News . Archivado del original el 8 de diciembre de 2020. Consultado el 29 de diciembre de 2017 .
- 1 2 Evtyushkin, Dmitry; Ponomarev, Dmitry; Abu-Ghazaleh, Nael (2016). Saltar sobre ASLR: Ataque a los predictores de bifurcación para eludir ASLR (PDF) . 49.º Simposio Internacional Anual IEEE/ACM sobre Microarquitectura (MICRO) de 2016. pp. 1–13 . doi : 10.1109/MICRO.2016.7783743 . ISBN 978-1-5090-3508-3. S2CID 3801142 .
- ↑ "Linux 5.16 tiene preparativos iniciales para dar soporte a FGKASLR - Phoronix" . www.phoronix.com . Archivado del original el 10/11/2021 . Consultado el 10/11/2021 .
- ↑ "Defensas de seguridad del software ISV de Windows" . Msdn.microsoft.com. 6 de diciembre de 2010. Archivado del original el 18 de abril de 2012. Consultado el 10 de abril de 2012 .
- ↑ Windows Internals: Incluye Windows Server 2008 y Windows Vista, Quinta edición (PRO-Developer) ISBN 978-0-7356-2530-3
- ↑ Ollie Whitehouse (febrero de 2007). "Análisis de la aleatorización del diseño del espacio de direcciones en Windows Vista" (PDF) . Archivado del original (PDF) el 15 de julio de 2019. Consultado el 18 de enero de 2009 .
- ↑ "WehnTrust" . Codeplex.com. Archivado del original el 25/12/2009 . Consultado el 10/04/2012 .
- ↑ "Security Architects' Ozone" . Security Architects. Archivado del original el 4 de marzo de 2016. Consultado el 10 de abril de 2012 .
- ↑ "Código fuente de WehnTrust" . Archivado del original el 28/11/2013 . Consultado el 15/11/2013 .
- ↑ "Aleatorización del espacio de direcciones para sistemas Windows" (PDF) . Archivado (PDF) del original el 5 de agosto de 2010. Consultado el 10 de abril de 2012 .
- ↑ Ollie (2012-03-02). "Investigar, desarrollar, evaluar, consultar y educar | Recx: una técnica parcial contra ASLR – Múltiples O/S" . Recxltd.blogspot.co.uk. Archivado del original el 23-03-2013 . Recuperado el 10-04-2012 .
- ↑ "Anuncio de NetBSD 5.0" . Archivado del original el 21/04/2016 . Consultado el 25/04/2016 .
- ↑ Christos Zoulas (2016). "Los binarios PIE y ASLR están activados en la compilación predeterminada para amd64" . Archivado del original el 22 de abril de 2016. Consultado el 25 de abril de 2016 .
- ↑ "ASLR del kernel en amd64" . 2017. Archivado del original el 16 de octubre de 2017. Consultado el 16 de octubre de 2017 .
- 1 2 Kurt Miller (2008). "Implementación del ejecutable independiente de la posición (PIE) de OpenBSD" . Archivado del original el 12 de junio de 2011. Recuperado el 22 de julio de 2011 .
- ↑ "libc/stdlib/malloc.c" . Referencia cruzada de BSD, OpenBSD src/lib/ . Archivado del original el 26/12/2014 . Consultado el 12/09/2016 .
- ↑ "Mac OS X – Seguridad – Protege contra virus y malware" . Apple. Archivado del original el 25 de mayo de 2011. Consultado el 10 de abril de 2012 .
- ↑ "Seguridad" . Apple Inc. Archivado del original el 6 de junio de 2011. Consultado el 6 de junio de 2011 .
- ↑ "Descripción general de las tecnologías principales de OS X Mountain Lion" (PDF) . Junio de 2012. Archivado (PDF) del original el 10 de julio de 2012. Consultado el 25 de julio de 2012 .
- ↑ Control de acceso a los recursos de la máquina. Archivado el 20 de junio de 2013 en Wayback Machine , Biblioteca de información de Oracle, 26 de octubre de 2012.
- ↑ AnC Archivado el 16 de marzo de 2017 en Wayback Machine VUSec, 2017
Enlaces externos
- Técnicas de mitigación de exploits: una actualización después de 10 años. Archivado el 20 de febrero de 2014 en Wayback Machine en OpenBSD.
- Documentación de PaX sobre ASLR
- Comparación de PaX con Exec Shield y W^X. Archivado el 14 de abril de 2012 en Wayback Machine.
- Aleatorización del diseño del espacio de direcciones en Windows Vista - Blog de Michael Howard
- ASLR para Windows 2000/XP/2003 (WehnTrust)
- Omitir la protección PaX ASLR
- Sobre la efectividad de la aleatorización del diseño del espacio de direcciones
- Aplicaciones de prueba (o bibliotecas) para su compatibilidad con ASLR y DEP.
- Referencia a ASLR Smack & Laugh archivada el 28/09/2015 en Wayback Machine .
- Seguridad del sistema operativo