La protección contra Desbordamientos de Buffer en Windows Vista (I de IV)

El problema de los desbordamientos de Buffer en las aplicaciones que corren sobre un sistema operativo ha sido un tema recurrente. Desde hace tiempo se intenta encontrar una forma eficiente de realizar comprobaciones en el código fuente que se programa para evitarlos. Muchos de los lenguajes de alto nivel que se utilizan hoy en día tienen este tipo de protecciones, pero cuando se desarrollan módulos en lenguajes de bajo nivel siguen apareciendo estas debilidades.


 


Desbordamiento de Buffer


——————————————————————————————-


 


El objetivo de una explotación de desbordamiento de buffer es sobrepasar la longitud de memoria reservada para los parámetros de una llamada a un procedimiento con el fin de sobrescribir la dirección de retorno del contador de programa. Es decir, se buscan parámetros en procedimientos que no son correctamente comprobados antes de ser utilizados.


 


Imaginemos este entorno de memoria:


 


Imagen 1: Memoria


 


En esta sección de memoria vemos como se ha apilado una dirección de retorno para cuando se acabe de ejecutar el procedimiento que tiene actualmente el control del programa y encima se ha reservado espacio para que se apilen los parámetros locales de dicho procedimiento. A la hora de cargar los parámetros en ese espacio reservado, estos deberían ser comprobados, si no se produjera esta comprobación tendríamos un problema de buffer overflow.


 


Explotación de un Desbordamiento de Buffer


——————————————————————————————-


 


El atacante introduce como parámetro el código que quiere que se ejecute y luego escribe información nula hasta que sobrepasa el espacio que tiene reservado. Una vez que ha llegado a la dirección de retorno escribe la dirección de memoria donde ha introducido su programa.


 




Imagen 2: Desbordamiento de Buffer


 


Con esto consigue haber introducido un programa que se va a ejecutar. Este es un ejemplo típico para los programas que devuelven una shell o crean un interfaz de comandos.


 


Tecnologías de protección


——————————————————————————————-


 


Las tecnologías para evitar que se produzca una explotación de una vulnerabilidad de buffer overflow son varias, pero hay dos que son especialmente significativas: DEP (Data Execution Prevention) y ASLR (Address Space Layout Randomization). Ambas incluidas en Windows Vista y …¡lo vemos en el próximo post!.


 


Referencias


——————————————————————————————-


 


La protección contra Desbordamientos de Buffer en Windows Vista (II de IV)


La protección contra Desbordamientos de Buffer en Windows Vista (III de IV)


Buffer Overflow en Wikipedia.org


 

11 comentarios sobre “La protección contra Desbordamientos de Buffer en Windows Vista (I de IV)”

  1. Siento que no te haya gustado Oliver, no pretende ser una explicación detallada de los desbordamientos de buffer, sino dar unas pinceladas para que la gente pueda entender las tecnologías que tiene Windows Vista. Puedes leer el Blog de Michael Howard o alguno de los libros de Ingeniería inversa. Si te interesa el tema te recomiendo el foro de WinASM.

    Saludos.

  2. Que es lo que ocasina un desbordamiento de memoria y cuales son sus principales farctores que ayuda a que esto ocurra.

    Saludos coordiales! DR. FABIO GERARD

Responder a calonso Cancelar respuesta

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