Attacchi da saturazione del buffer (buffer overflow) Ataques por profusão de tampão  (buffer overflow) Angriffe durch Pufferüberlauf (buffer overflow) Attaques par débordement de tampon (buffer overflow) Buffer overflow attacks

Introducción al ataque por desbordamiento de búfer

"Los ataques por desbordamiento de búfer" (también denominado saturación de búfer) están diseñados para activar la ejecución de un código arbitrario en un programa al enviar un caudal de datos mayor que el que puede recibir.

Los programas que admiten datos de entrada con parámetros, los almacenan temporalmente en una zona de la memoria denominada búfer. Pero algunas funciones de lectura, como las strcpy() del lenguaje C, no admiten este tipo de desbordamiento y causan el bloqueo de la aplicación, lo que puede provocar la ejecución del código arbitrario y permitir el acceso al sistema.

La implementación de este tipo de ataques es extremadamente complicada ya que requiere un conocimiento exhaustivo de la arquitectura del programa y del procesador. Sin embargo, existen varios puntos vulnerables capaces de automatizar este tipo de ataques y de hacerlos accesibles para aquellos que son casi inexpertos.

Funcionamiento básico

El principio operativo de un desbordamiento de búfer guarda una relación muy estrecha con la arquitectura del procesador en la que se ejecuta una aplicación vulnerable.

Los datos ingresados en una aplicación se almacenan en la memoria de acceso aleatorio en una zona que se conoce como búfer. Un programa con un diseño correcto debería estipular un tamaño máximo para los datos de entrada y garantizar que no superen ese valor.

Las instrucciones y los datos de un programa en ejecución se almacenan temporalmente en forma adyacente en la memoria, en una zona llamada pila. Los datos ubicados después del búfer contienen una dirección de retorno (que se denomina puntero de instrucción) que le permite al programa continuar su tiempo de ejecución. Si el tamaño de los datos es mayor que el del búfer, la dirección de retorno se sobrescribe y el programa leerá una dirección de memoria no válida generando una violación de segmento en la aplicación.

Un pirata informático con un sólido conocimiento técnico puede asegurarse de que la dirección de memoria sobrescrita corresponda a una real, por ejemplo, una que esté ubicada en el mismo búfer. Como tal, al ingresar las instrucciones en el búfer (el código arbitrario), es fácil para él ejecutar este procedimiento.

Por lo tanto, es posible incluir instrucciones en el búfer que permitan abrir un intérprete de comandos (shell) permitiendo que el pirata tome control del sistema. Este código arbitrario que posibilita la ejecución del intérprete de comandos se conoce como código de shell o shellcode.

Protección contra el desbordamiento de búfer

Para protegerse contra este tipo de ataques, es importante desarrollar aplicaciones que utilicen lenguajes de programación avanzados que garanticen una administración precisa de la memoria asignada o que usen un lenguaje de bajo nivel con bibliotecas de función seguras (por ejemplo, las funciones strncpy()).

Los boletines de alerta se publican con frecuencia y advierten sobre la vulnerabilidad de ciertas aplicaciones a los ataques por desbordamiento de búfer. Después de su publicación, los editores de software afectados por la vulnerabilidad generalmente publican revisiones (patch) para corregir el problema. Es recomendable que todos los administradores de sistema y red se mantengan informados acerca de las alertas de seguridad y que apliquen las revisiones lo antes posible.

Más información



Última actualización el jueves, 16 de octubre de 2008, 15:43:31 .Este documento intitulado « Ataques por desbordamiento de búfer » de Kioskea (es.kioskea.net) esta puesto a diposición bajo la licencia Creative Commons. Puede copiar, modificar bajo las condiciones puestas por la licencia, siempre que esta nota sea visible.
Mejores respuestas para « Ataques por desbordamiento de búfer » en :
Ataque SYN Ver Ataque SYN El "ataque SYN" (también denominado "inundación TCP/SYN") consiste en saturar el tráfico de la red (denegación de servicio) para aprovechar el mecanismo de negociación de tres vías del protocolo TCP. Dicho mecanismo permite que cualquier...
Ataque ping de la muerte Ver Ataque ping de la muerte El ataque ping de la muerte es uno de los ataques de red más antiguos. El principio de este ataque consiste simplemente en crear un datagrama IP cuyo tamaño total supere el máximo autorizado (65.536 bytes). Cuando un paquete...
Introducción a los ataques Ver Introducción a los ataques Cualquier equipo conectado a una red informática puede ser vulnerable a un ataque. Un "ataque" consiste en aprovechar una vulnerabilidad de un sistema informático (sistema operativo, programa de software o sistema del...
Las listas circulares (Ring Buffer) Verlas listas circulares Requisitos I. Introducción II Definición III. La construcción del modelo de un elemento de la lista IV. Operaciones sobre las listas circulares A. Inicialización B. Inserción de un elemento en la lista 1....
Proteger tu servidor SSH contra ataques de fuerza bruta VerSSH es excelente para acceder de forma remota a nuestros ficheros, o incluso para utilizar el PC de forma remota ¿Pero cómo nos protegemos contra los ataques de fuerza bruta? (Intento con todas las combinaciones de letras para encontrar la...
Descargar Youtube Buffer Video VerYoutube Buffer Video es un script para Greasemonkey que desactiva el autoplay de YouTube y almacena losl videos en la cache, para que los puedas ver después sin interrupciones. Un script de gran utilidad sobre todo para conexiones lentas o para...
Ataques de secuencia de comandos entre páginas Web (XSS) VerInyección de código malintencionado Los ataques por secuencias de comandos entre páginas Web (también conocidos como XSS o CSS) son ataques dirigidos a los páginas Web que muestran de forma dinámica el contenido de los usuarios sin verificar ni...
Ataques al servidor Web VerVulnerabilidad de los servicios en la Web Los primeros ataques a la red aprovecharon las vulnerabilidades relacionadas con la implementación de conjuntos de protocolos TCP/IP. Al corregirlas gradualmente, los ataques se dirigieron a las capas de...
Ataque Teardrop VerAtaque por fragmentación Un "ataque por fragmentación" consiste en saturar el tráfico de la red (denegación de servicio) para aprovechar el principio de fragmentación del protocolo IP. Este protocolo se utiliza para fragmentar paquetes grandes en...