Los problemas comienzan cuando el exceso de datos se escribe en otras posiciones de memoria, con la perdida de los datos anteriores.
EJEMPLO:
#include
#include
int main(int argc, char *argv[])
{
char buffer[10];
if (argc < 2)
{
fprintf(stderr, "MODO DE USO: %s string\n", argv[0]);
return 1;
}
strcpy(buffer, argv[1]);
return 0;
}
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á.
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. esta chido !!NO
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.
0 comments:
Publicar un comentario en la entrada