Actualizado el 14-01-2007
versión para imprimir
¿que es un buffer overflow ?
A menudo leemos el término buffer overflow en artículos
sobre seguridad en internet.
Los problemas de seguridad mas frecuentes (y
graves) tienen que ver con buffer overflow descubierto en el programa tal
o en el programa cual. En este artículo describiremos que es exactamente y por
que es un riesgo para la seguridad de nuestros ordenadores.
En resumen
buffer overflow o desbordamiento de buffer es un error de sistema causado
por un defecto de programación, de tal forma que el programa que lo sufre
pretende escribir mas información en el buffer (unidad de memoria) de la que
este puede alojar.
Este desbordamiento es posible porque el autor del
programa no incluyó el código necesario para comprobar el tamaño y capacidad del
buffer en relacion con el volumen de datos que tiene que alojar.
Los
problemas comienzan cuando el exceso de datos se escribe en otras posiciones de
memoria, con la perdida de los datos anteriores.
Si entre los datos
perdidos por la sobreescritura se encuentran rutinas o procedimientos necesarios
para el funcionamiento del programa que estamos ejecutando, el programa dará
error.
Cuando la memoria de un programa llega a sobreescribir en forma
aleatoria, el programa generalmente se colgará.
¿Y esto que tiene que ver
con la seguridad? El problema para la seguridad nace cuando este desbordamiento
de buffer es provocado intencionalmente por alguien mediante envio de datos que
incluyen porciones de código, calculando la cantidad de datos para poder
predeterminar cual es el sobrante que se va a sobreescribir y donde. Provocado
el desbordamiento, contienen una instrucción que apunta a una posición de
memoria distinta, donde se encuentra el codigo ejecutable enviado por el
atacante. El programa, inducido a funcionar anormalmente por la perdida de datos
causada por el desbordamiento, ejecutará el código enviado por el atacante.
El buffer overflow es un problema de código defectuoso, por lo tanto
como usuarios nada podemos hacer para evitarlo (salvo que ademas de usuarios
seamos expertos programadores, y dispongamos del codigo fuente de la aplicacion
que sufre el desbordamiento). En realidad el unico remedio es estar informado de
los programas que sufren estos problemas, y tener el software actualizado.