Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 149

Desbordamiento de búfer

Revisado porCybersecurity entrepreneur & security researcher

¿Qué es Desbordamiento de búfer?

Desbordamiento de búferFallo de seguridad de memoria en el que un programa escribe más allá del final de un búfer asignado, corrompiendo memoria adyacente y a menudo permitiendo ejecución de código.


Los desbordamientos de búfer ocurren cuando, en lenguajes como C y C++, no se acotan correctamente las longitudes de entrada frente al tamaño del búfer de destino. Los bytes adicionales sobrescriben tramas de pila, bloques de heap, punteros a funciones o direcciones de retorno cercanas, permitiendo a los atacantes secuestrar el flujo de control o filtrar datos. Un aplastamiento de pila clásico sobrescribe la dirección de retorno guardada de modo que la función "retorne" hacia el shellcode proporcionado por el atacante; los desbordamientos de heap, en cambio, corrompen los metadatos del asignador u objetos adyacentes para obtener una primitiva de escritura.

Este patrón ha marcado la historia de Internet. El Morris Worm de 1988 se propagó mediante un desbordamiento de pila en el fingerd de BSD; Code Red (2001) abusó de un búfer sin comprobar en el filtro ISAPI .ida de IIS (CVE-2001-0500); y SQL Slammer (2003) explotó el desbordamiento del SQL Server Resolution Service (MS02-039 / CVE-2002-0649), infectando aproximadamente 75 000 hosts en diez minutos mediante un único paquete UDP de 404 bytes al puerto 1434 — seis meses después de que se publicara el parche.

La escritura fuera de límites (CWE-787) ocupó el puesto número 2 del CWE Top 25 de 2024, solo por detrás de XSS. Las mitigaciones modernas combinan canarios de pila, ASLR, DEP/NX, integridad del flujo de control (Intel CET, ARM PAC/BTI), funciones de libc más seguras, endurecimiento del compilador (_FORTIFY_SOURCE), pruebas de fuzzing y, cada vez más, la migración del código crítico a lenguajes con seguridad de memoria como Rust.

flowchart TD
  A[El atacante envía una entrada sobredimensionada] --> B{¿Se comprueba la longitud<br/>frente al tamaño del búfer?}
  B -->|Sí, acotada| C[Entrada truncada / rechazada]
  B -->|Sin comprobación de límites| D[Escritura más allá del fin del búfer]
  D --> E[Sobrescribe la dirección de retorno<br/>o un puntero a función]
  E --> F[Flujo de control redirigido]
  F --> G[Se ejecuta el shellcode / cadena ROP del atacante]
  C --> H[El programa continúa de forma segura]

Ejemplos

  1. 01

    CVE-2014-0160 (Heartbleed): desbordamiento de lectura de memoria en OpenSSL.

  2. 02

    El gusano de Morris (1988) explotó un desbordamiento de pila en fingerd.

Preguntas frecuentes

¿Qué es Desbordamiento de búfer?

Fallo de seguridad de memoria en el que un programa escribe más allá del final de un búfer asignado, corrompiendo memoria adyacente y a menudo permitiendo ejecución de código. Pertenece a la categoría de Vulnerabilidades en ciberseguridad.

¿Qué significa Desbordamiento de búfer?

Fallo de seguridad de memoria en el que un programa escribe más allá del final de un búfer asignado, corrompiendo memoria adyacente y a menudo permitiendo ejecución de código.

¿Cómo defenderse de Desbordamiento de búfer?

Las defensas contra Desbordamiento de búfer combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.

¿Cuáles son otros nombres para Desbordamiento de búfer?

Nombres alternativos comunes: Buffer overrun.

Términos relacionados

Véase también