2pos | |
|
Re: Conflicto Mcafee-Internet Explorer 7 - 2007-03-13 01:06 - Respuesta 8
"QUE ES DESBORDAMIENTO DE BUFFER ??
El desbordamiento de buffer se produce cuando en un buffer con tamaño limitado se intenta introducir más datos de los que permite, excediendo el número de bytes que se habían reservado en la memoria. Este tipo de errores suelen detectarse en programas escritos en C que utilizan funciones de la librería estándar -como strcat(), strcpy(), sprintf() o vsprintf()-, que no realizan ningún tipo de chequeo para determinar si están sobrepasándose los límites de los buffers.
Para entender cómo se produce un desbordamiento de buffer vamos a poner un
ejemplo. Imaginemos un programa que admite el comando DESTINATARIO seguido
de una dirección de correo electrónico como parámetro. Para almacenar dicha
dirección el programador crea un buffer de 128 bytes, tamaño que es a priori
suficiente, ya que permite introducir cualquiera. Sin embargo, ¿qué ocurre si un usuario, por error o de forma malintencionada, en vez de introducir el comando seguido de un e-mail, envía como parámetro una cadena que excede los 128 bytes? Los datos introducidos desbordan el tamaño predeterminado del buffer, y los caracteres sobrantes pasan a ocupar espacios de la memoria del sistema que no estaban reservados para el almacenamiento de datos. En la mayoría de las situaciones este tipo de error provocará una denegación de servicio, interrumpiendo el programa o afectando a la estabilidad del propio sistema.
Un ataque más sofisticado consiste en introducir código en la cadena de datos que se envían para provocar el desbordamiento, y forzar la ejecución del mismo. Este tipo de ataque requiere grandes conocimientos de Ensamblador y del sistema por parte del atacante, que debe definir la dirección de retorno de la función afectada para alterar el flujo del programa y conseguir así ejecutar el código en Ensamblador introducido en el desbordamiento. "
Pues...eso | |
|
|