miércoles, 31 de mayo de 2006

Windows Vista implementará ASLR (Address Space Layout Randomization) activado de serie

Microsoft ha incluido en la Beta 2 de Windows Vista una nueva
funcionalidad destinada a prevenir la ejecución de código no deseado
en el sistema a través de, habitualmente, desbordamientos de memoria
intermedia (buffer).

Con su Beta 2, Vista se sube al carro de otros sistemas como OpenBSD
y varias distribuciones Linux e implementa ASLR (Address Space Layout
Randomization) para Windows Vista. Además, lo activa por defecto.

Para comprender qué implica esto, se debe entender en qué suelen
consistir los ataques de desbordamiento de memoria intermedia y cómo
son aprovechados. Cuando ocurre un desbordamiento de memoria, el
espacio de direcciones de memoria del sistema operativo se corrompe
de alguna forma. Si un atacante, a través de cualquier vulnerabilidad,
es capaz de sobreescribir ciertos valores, puede tomar el control del
sistema y hacer que se ejecute cualquier parte de la memoria (con el
código que contenga).

Es habitual que los atacantes "se ayuden" de ciertas direcciones de
memoria conocidas para poder "saltar" en el espacio de memoria y
ejecutar su código inyectado. Estas direcciones coinciden habitualmente
con las librerías básicas del sistema operativo, que son siempre
cargadas en el mismo espacio de memoria. Así los exploits, programados
con una dirección concreta, funcionan siempre en las mismas versiones
de Windows, pues saben exactamente dónde ir para poder ser ejecutados
porque los procesos principales siempre se cargan en el mismo espacio.
Este procedimiento (presentado de una forma muy básica) es el que ha
permitido ataques como el de Sasser y derivados, SQL Slammer o el
más reciente ocurrido por el problema de Windows Meta File (WMF).

Esta facilidad para predecir las direcciones comunes es precisamente
el punto que ataca ASLR. Cada vez que se arranca el sistema el método
se ocupa de cargar las áreas críticas del sistema en espacios más
o menos aleatorios, de forma que no pueden ser predichas de forma
sencilla. Al menos, un atacante tendría que probar un número
significativo de valores (hasta 256) para poder acertar con la
dirección adecuada. Incluso así, este valor no sería el mismo en
cualquier otro sistema Windows Vista, por lo que un sistema
automatizado de ataque (por ejemplo un gusano) tendría que adivinar
en cada sistema atacado la dirección concreta. Sin duda, un freno
importante para los ataques automatizados que cada cierto tiempo
azotan la Red.

ASLR hubiese sido especialmente útil hace algunos años. Actualmente
los gusanos que aprovechan de forma automática desbordamientos de
memoria intermedia en el sistema y se replican de un sistema a otro,
no están entre las preferencias de los atacantes. Hoy en día los
esfuerzos están concentrados en sofisticadas técnicas de phishing,
ataques segmentados de ingeniería social, troyanos indetectables y
virus personalizados... lejos quedaron los días en los que los
creadores de malware deseaban hacer el mayor ruido posible.

ASLR no es ninguna nueva tecnología ni la solución definitiva contra
ataques automatizados. Es una defensa destinada a poner trabas a la
habitual ejecución solapada de código no deseado. Prácticas de usuario
como el trabajo diario bajo cuentas limitadas siguen siendo técnicas
de protección incluso más eficaces. Aun así ASLR resulta una novedad
bienvenida en sistemas Windows y, junto con otras funcionalidades que
se están añadiendo al nuevo sistema (entre otros, forzar privilegios
más bajos en el nuevo navegador), puede elevar considerablemente la
seguridad del próximo lanzamiento de Microsoft.

Poco a poco se va perfilando el carácter del incipiente Microsoft
Vista, volcado principalmente en funcionalidades destinadas a una
mayor vistosidad y seguridad. Aunque todo esfuerzo en este último
sentido es bienvenido, es necesario que el usuario final del sistema
o el propio administrador conozcan realmente qué funciones de seguridad
posee el sistema operativo, de qué le protegen y cómo configurarlas
adecuadamente. Sin estas premisas, todo intento es vano. Por ejemplo,
es importante destacar que ASLR intentará evitar la ejecución de
código no deseado de forma automática pero en ningún caso, por sí
solo, protegerá de la ejecución intencionada de archivos. Sólo el
sentido común y la prudencia pueden ayudar en este sentido.

En cualquier caso, esta funcionalidad no exime de la necesidad de
seguir actualizando y protegiendo los sistemas con el mayor de los
cuidados.


Sergio de los Santos
ssantos@hispasec.com


Más información:

Address Space Layout Randomization in Windows Vista
http://blogs.msdn.com/michael_howard/archive/2006/05/26/608315.aspx