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
¡Ouch! ¡Chema! Edita mi comentario,anda xD
Pongo bien el link 😉
http://www.gnucitizen.org/blog/xss-prelude
¿Como podemos proteger Windows Vista contra los desbordamiento de buffers? Esto es algo que se lleva
Tercera Protección: No ejecución de Datos —————————————————————-
Cuarta Protección: Ocultación de Información Con las tecnologías vistas hasta el momento se ha pretendido,
La verdad es que el articulo es muy podre tristemente se entiende
La verdad es que el articulo es muy pobre tristemente se entiende
PingBack desde http://chemi.myvnc.com:81/blog/?p=71
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.
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
Pues la colocación de objetos en memoria sin comprobar el tamaño previo correctamente antes.