¿Las aplicaciones de 64 bits tienen algún mérito de seguridad sobre las aplicaciones de 32 bits?

7

Un artículo en particular de arstechnica.com declaró esto.

  

Una de estas medidas de protección se denomina asignación aleatoria del diseño del espacio de direcciones, ASLR, y funciona al mover los archivos DLL y la memoria de la aplicación a ubicaciones impredecibles dentro de los 4GB que cada aplicación de 32 bits tiene disponibles. Esto dificulta la explotación, pero en los sistemas de 32 bits la protección es limitada. Con solo 4 GB de espacio, no hay tantas ubicaciones aleatorias para elegir. Las DLL, por ejemplo, todavía deben empaquetarse relativamente juntas para garantizar que haya grandes espacios de espacio libre abierto para que las aplicaciones almacenen sus propios datos.

¿Esto tiene algún mérito técnico o debería archivarlo ya que surgen los sitios sin sentido de seguridad no convencionales?

    
pregunta Ayrx 02.12.2012 - 13:26
fuente

1 respuesta

10

ASLR es un juego de escondite: en caso de que el atacante logre desbordar un búfer y punteros sobrescriba, el sistema operativo carga el código de la aplicación (el ejecutable principal y su DLL) en ubicaciones aleatorias, para que sea más difícil para el atacante llegar a una ubicación significativa. Por construcción, funciona mejor cuando el patio es más grande. El espacio de direcciones extendido en modo de 64 bits es un área de juegos más grande.

Para cuantificar las cosas: en el modo de 32 bits, el espacio de direcciones tiene, como máximo, 32 bits de ancho (en realidad, de 31 bits cuando el kernel no es consciente del modo de 64 bits). El cargador de DLL debe respetar la alineación de la página, y una página de 4 kB en x86. Esto proporciona, a lo sumo, 20 bits de entropía en la aleatorización de ASLR, pero en la práctica es más bajo que eso porque la extensión de la DLL en todo el espacio de direcciones puede inducir una mayor fragmentación (lo que impide que la aplicación se asigne, por ejemplo, un búfer continuo de 1 GB). algo que es común cuando se editan imágenes o películas). Esto es a lo que alude el texto que cita. Supongamos, por ejemplo, que la carga de DLL se producirá solo dentro de un octavo del espacio de direcciones, es decir, 29 bits; con la alineación, esto significa 17 bits de entropía, alias 131072 ubicaciones posibles para cualquier DLL dada. En cualquier caso, un atacante trabajador podría confiar en la suerte, simplemente repitiendo el ataque (con un script) unas cuantas docenas de veces hasta que funcione.

Con el modo de 64 bits, el espacio de direcciones se extiende a 48 bits, se reduce a 44 bits en Windows, porque no se molestaron en ir más allá. Esto añade 12 bits de entropía; en otras palabras, multiplica por 4096 el esfuerzo del atacante (en caso de que los atacantes confíen en la suerte).

Por lo tanto, es cierto que, de alguna manera , el espacio de direcciones extendido del modo de 64 bits aumenta la seguridad. Por supuesto, ASLR tiene algún efecto solo cuando se produce un desbordamiento de búfer ha , en cuyo caso ya está en un gran problema.

    
respondido por el Thomas Pornin 02.12.2012 - 14:55
fuente

Lea otras preguntas en las etiquetas