Tecnologías de Seguridad en Windows Vista (I de IV) por Chema Alonso

Crossposting de: Tecnologías de Seguridad en Windows Vista (I de IV)

Parece que fue ayer cuando Microsoft tomó conciencia de la importancia de la seguridad y ya han pasado casi 6 años desde el comienzo de la Trustworthy Computing Initiative (TCI) o para los hispanoparlantes la “Iniciativa de Informática de Confianza”. Decidirse a arrancar esta iniciativa no fue algo tomado a la ligera. Los productos de Microsoft, hasta aquel entonces diseñados para “instalar y ¡listo!” habían sido objetivo de la comunidad de investigadores de seguridad, haciendo de ellos un foco de exploits y lo aún más importante y peligroso, virus y troyanos.

Trustworthy Computing Initiative (TCI)

La compañía comenzó esta iniciativa, con una mira de 10 años de duración, contrató a algunos de los mejores gurús de la seguridad informática para que se remangaran y condujeran la fábrica de software de Redmond en un equipo concienciado, formado y preparado para afrontar la puesta en el mercado de productos software seguros… o al menos, mucho más seguros.

Michael Howard, Mark Russinovich posteriormente o el reciente Crispin Cowan han sido algunos de los nombres propios que han entrado a formar parte de los expertos de seguridad con los que cuenta la empresa de la banderita de colores para lograr esta labor.

El primer producto que se vio de lleno en la TCI no fue Windows XP, este había sido concebido y liberado tiempo ha, así que lo primero que se hizo fue sacar una lista de Service Packs para los principales productos. Estos Service Packs habían sido diseñados y concebidos dentro de la TCI pero los productos no habían sido diseñados dentro de la TCI. Así, Windows XP SP2 reforzó considerablemente el sistema Windows, pero no se pudo tocar la arquitectura desde abajo.

Como muchos ya sabréis, el primer sistema operativo diseñado dentro de la TCI no es otro que aquel que tuvo como nombre código “Longhorn”, es decir, nuestro amigo Windows Vista. En él, se aplicaron las tecnologías de seguridad que estaban incluidas en Windows XP SP2 junto con una nueva arquitectura para dotar al sistema operativo de los mecanismos necesarios para protegerse frente a amenazas futuras.

DEP y ASLR

Cuando un procedimiento es invocado en el sistema operativo, lo primero que se hace es situar en la pila del sistema la dirección de retorno a la que debe volverse cuando el procedimiento se termine de ejecutar. Encima de ese valor se apilan los parámetros que necesita para su ejecución el procedimiento. Si no se comprueba el tamaño de los parámetros que van a ser apilados, un atacante podría introducir un dato de mayor tamaño del que tiene reservado y sobrescribir el valor de retorno del contador de programa. De esta manera conseguiría el control de la ejecución. Para hacerlo más “divertido” el atacante puede introducir un programa en los parámetros y después hacer que la dirección de retorno apunte a su programa. Haciendo esto el atacante consigue ejecutar un programa en el sistema.

Para evitar esto existen diversas tecnologías, pero las más importantes son DEP (Data Execution Prevention) y ASLR (Address Space Layout Randomization). La tecnología DEP se puede aplicar por software o por hardware en Windows Vista. Cuando se aplica DEP por hardware el sistema toma ventaja de la tecnología NX incorporada en los microprocesadores hace ya varios años. Los microprocesadores marcan zonas de memoria como de programa (eXecution) o de datos (NoneXecution). De esta forma el sistema operativo no ejecuta ningún programa almacenado en una zona de memoria destinada a datos, o lo que es lo mismo, ninguna dirección del contador de programa puede apuntar a una zona de datos. De esta forma se previene la inyección de programas en desbordamiento de datos.

No obstante, esta tecnología no evita completamente estos ataques pues el atacante podría hacer que se ejecutar un programa del sistema que le permitiera tomar control de la máquina. Para evitar esto, se utilizar la tecnología ASLR.

Hasta Windows XP, cuando el sistema operativo arranca una librería del sistema, ésta es cargada siempre en la misma dirección de memoria. Al usarse siempre la misma dirección, los atacantes pueden crear sus programas para apuntar a direcciones de librerías internas conocidas. Para evitar esto la tecnología ASLR permite que un determinado programa sea cargado cada vez en una ubicación distinta de la memoria dentro de un rango de 256 posibles valores. De esta forma un exploit tendría 1 posibilidad entre 256 intentos de acertar con la llamada correcta.

Como protección adicional, DEP en Windows Vista, tiene una versión basada solo en software que vino ya en XP SP2 y cuyo objetivo es garantizar la integridad de las funciones que son invocadas en el tratamiento de los mensajes de excepción que deben ser gestionados por el sistema operativo. Para ello se comprueba la integridad de los binarios del sistema que se encargan del tratamiento de los mensajes de error antes de entregarles el control.

Un comentario sobre “Tecnologías de Seguridad en Windows Vista (I de IV) por Chema Alonso”

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *