2010-04-21 16 views
6

Recientemente me encontré con un artículo de Microsoft que promociona nuevas "mejoras defensivas" de Windows 7. En concreto:Aleatorización de memoria como mejora de seguridad de la aplicación?

  • Dirección diseño del espacio de la aleatorización (ASLR)
  • Montón aleatorización
  • Pila aleatorización

El artículo continúa diciendo que "... algunas de estas defensas se encuentran en el sistema operativo central, y el compilador de Microsoft Visual C++ ofrece otras", pero no explicó cómo estas estrategias realmente aumentarían la seguridad.

¿Alguien sabe por qué la aleatorización de memoria aumenta la seguridad, si es que lo hace? ¿Las otras plataformas y compiladores emplean estrategias similares?

+2

Una pequeña nit: se agregó ASLR en Vista, no en Win7. –

Respuesta

9

Aumenta la seguridad al hacer que sea difícil predecir dónde habrá algo en la memoria. Un buen número de vulnerabilidades de desbordamiento de búfer funcionan poniendo (por ejemplo) la dirección de una rutina conocida en la pila y luego volviendo a ella. Es mucho más difícil hacer eso sin saber la dirección de la rutina relevante.

Por lo que sé, OpenBSD fue el primero en hacer esto, al menos entre los sistemas operativos razonablemente conocidos para PC.

+0

Por favor, proporciona enlaces! –

+0

@Matt: ¿Enlaces a qué? –

+0

Enlaces para respaldar sus afirmaciones, me gustaría leer más sobre ellos. –

2

Hace que los ataques como return to libc (o el búfer de datos proporcionado por el usuario en el caso de los dos últimos) sea mucho más difícil. Y sí, está disponible en Linux, BSD y Mac OS. Como era de esperar, los detalles varían según el sistema operativo. Ver Wikipedia para an introduction.

0

Al azarizar la pila, hace que los ataques de desbordamiento del búfer de vainilla como Aleph One's Smashing the Stack for Fun Profit sean imposibles. La razón es porque el ataque se basa en colocar una pequeña cantidad de código ejecutable calld shellcode en una ubicación predecible en la memoria. El marco de la pila de funciones está dañado y su dirección de retorno se sobrescribe con un valor que el atacante elige. Cuando la función dañada regresa, el flujo de ejecución se mueve al shellcode del atacante. Tradicionalmente, esta dirección de memoria es tan predecible que sería idéntica en todas las máquinas que ejecutan la misma versión del software.

A pesar de la protección de memoria avanzada implementada en Windows 7, aún es posible la ejecución remota de código. Recientemente, en CanSecWest, una máquina con Windows 7 e IE 8 fue pirateada en cuestión de segundos. Aquí hay un technical description de un ataque de corrupción de memoria moderno que utiliza un puntero colgante junto con un desbordamiento de pila.

Cuestiones relacionadas