¿KASLR realmente proporciona más seguridad contra las vulnerabilidades?

12

Sé todo sobre cómo funciona ASLR y cómo se ha implementado en los sistemas Linux y Windows. Proporciona una capa adicional de protección que el malware debe tener en cuenta. Pero hoy en día, con las computadoras encendidas por largos períodos de tiempo, ASLR no parece aleatorizar el espacio de direcciones tanto como nos gustaría. Windows 8 ha tomado pasos adicionales para asegúrese de que ASLR sea efectivo.

Me acabo de enterar del nivel de kernel ASLR cuando construí y actualicé mi kernel de Linux, y noté que en el arranque decía:

KASLR not enabled

Después de hacer algunas búsquedas no encontré mucho en KASLR en general. Así que ahora tengo curiosidad si alguien aquí tiene experiencia con eso.

  1. ¿Vale la pena KASLR? ¿Proporciona una ventaja significativa? Tendría que reconstruir mi kernel, configurarlo para KASLR y todo ese jazz. No es terrible, pero es un poco molesto.
  2. ¿Existe esto en el mundo de Windows? Si es así, ¿Windows hace un mejor trabajo en su implementación?

O quizás el mundo aún no esté listo para ello ...

    
pregunta RoraΖ 06.10.2014 - 16:39
fuente

2 respuestas

7

KASLR se ha criticado duramente el día en que fue lanzado para Linux, y también fue derrotado ese mismo día. Spender at grSecurity ha escrito una publicación al respecto ( junto con los comentarios de LWN ) que solo resumiré de manera simplista. Recomiendo encarecidamente la lectura de la fuente original.

Aleatorización del diseño del espacio de direcciones se aplicó originalmente para complicar las vulnerabilidades, como todos sabemos, al azar la posición de un lote de punteros en la pila. Derrotar ASLR requiere cualquiera de:

  • fuerza bruta hasta que encuentre accidentalmente la dirección aleatoria correcta (lo que requiere volver a iniciar la aplicación y casi nunca se aplica a KASLR)
  • recuperar punteros que filtran información sobre el diseño de la memoria

La segunda opción es muy prometedora para los kernels: no pueden tener un gran desplazamiento aleatorio porque algunas configuraciones de hardware pueden tener un espacio de direcciones limitado, y lo más importante es que los kernels no pueden cambiar su offset a lo largo de su ciclo de vida entero ! Esto significa que una sola fuga en el diseño de la memoria anulará KASLR hasta que se reinicie la máquina. Resulta que este tipo de error se dice que ocurre con bastante frecuencia por Spender.

Esta es exactamente la razón por la que KASLR de Linux es débil e incluso "un fallo", según Spender. El mecanismo no estaba destinado a los granos. Lee su artículo si quieres más detalles. Él habla de otras implementaciones y usted debe entender, de los puntos mencionados anteriormente, que no solo las implementaciones son débiles, sino el diseño. KASLR necesita mucho más cuidado en cómo se implementa que el ASLR tradicional porque las condiciones de explotación son mucho más favorables .

Editar: y aparentemente, solo estás a una búsqueda de Google de saber cómo para explotar la implementación de Windows KASLR .

    
respondido por el Steve DL 07.10.2014 - 14:55
fuente
-1

KASLR es simplemente ASLR ... aplicado al espacio del kernel. Sin KASLR, el espacio de direcciones del kernel es estático. Cualquier vulnerabilidad que utilice una vulnerabilidad del kernel será trivial para sobrescribir y controlar las direcciones de retorno y similares, al igual que cualquier vulnerabilidad contra una vulnerabilidad del espacio de usuario encontrará esas tareas triviales sin ASLR habilitado.

LWN tiene un buen artículo sobre cómo funciona.

¿Vale la pena? Depende. Al igual que el ASLR normal, KASLR es una mitigación contra las vulnerabilidades existentes. Si no existe una vulnerabilidad del kernel, KASLR no ingresa la ecuación en absoluto. Las vulnerabilidades del kernel público no son tan comunes y se reparan rápidamente. ¿Es usted un objetivo de alto valor por el que vale la pena quemar un día cero? Es probable que desee KASLR habilitado en ese caso. De lo contrario, utilice su mejor juicio.

No tengo idea si existe una función equivalente para Windows.

    
respondido por el Ayrx 07.10.2014 - 14:39
fuente

Lea otras preguntas en las etiquetas