Un desbordamiento de memoria es una forma de sobrepasar la memoria que hay reservada para un dato, hablando en términos de informática. Cuando un programador hace un programa, no se lia a escribir código todo secuencia, lo normal es utilizar pequeñas funciones que estructuran ese código y lo hacen más legible.

A estas pequeñas funciones se les pueden enviar datos para que hagan algo con ellos, de forma que cuando un programa tiene que ejecutar una funcion se guarda la direccion de retorno (una direccion de memoria en la cual continuará el flujo normal del programa), una vez en la función esos datos deben ser comprobados para que se pueda asegurar que son los correctos. Pero muchas veces los programadores olvidamos hacer esta comprobación, entonces alguien que quiera atacar nuestra aplicación podrá hacer que ese dato que se enviaba sea modificado de forma que el programa tome un comportamiento distinto al que le habiamos dado.

Por ejemplo, supongamos que nuestra funcion se encarga de sumar dos numeros, dichos numeros no pueden ser negativos… solo sumamos números positivos, si alguien inyecta un dato erroneo, por ejemplo un numero negativo, lo que hariamos ya no es sumar sino restar…
Esto puede parecer una tonteria, pero cuando hablamos de en vez de una simple suma, que el atacante inyecte otros tipos de codigos, podría ser muy peligroso.

De hecho este tipo de ataques funcionan porque cuando el atacante inyecta algo en uno de esos datos, se asegura de inyectar lo suficiente como para machacar la dirección de retorno y poner una dirección que al propio atacante le interese, por ejemplo la de un virus, troyano, etc… de ahi que lo llamado buffer overflow sea tan peligroso… en ocasiones te tumba el sistema, en otras ocasiones se produce robo de información.

Esto siempre ha atraido mi curiosidad, no se como se hacen todas estas cosas, pero entiendo el concepto (aunque no lo haya explicado tan claramente como desearia). Sobre todo porque hoy, visitando barrapunto encontre una serie de enlaces en un comentario en el cual hablaban de algunas medidas de proteccion que tiene windows vista (y otros sistemas) para protegerse contra estos ataques.

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

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)

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

Todo esto no lo he escrito yo ni mucho menos, lo he sacado de: vista-tecnica

Anuncios