Saltar al contenido
Underc0de /foro

¿Qué es Buffer overflow (desbordamiento de búfer)?

$ man buffer-overflow

Vulnerabilidad que ocurre cuando un programa escribe más datos de los que caben en un búfer de memoria, sobrescribiendo zonas adyacentes y permitiendo fallos o ejecución de código arbitrario.

desbordamiento de búferBOFstack overflowheap overflowdesbordamiento de buffer#vulnerabilidades#c-cpp#ingenieria-inversa#ctf

Definición

Un buffer overflow se produce cuando un programa copia datos en un espacio de memoria de tamaño fijo sin validar su longitud, y el excedente pisa memoria contigua. Es típico de lenguajes sin control automático de límites, como C y C++. Las variantes principales son el stack-based overflow, que puede sobrescribir la dirección de retorno de una función y desviar el flujo de ejecución, y el heap-based overflow, que corrompe estructuras de memoria dinámica. Las consecuencias van desde un simple crash (denegación de servicio) hasta la ejecución de código arbitrario.

Ejemplo

Una función en C usa
Código: text
strcpy(buffer, entrada);
con un
Código: text
char buffer[16]
. Si el usuario envía una cadena más larga, los bytes sobrantes sobrescriben otras variables o la dirección de retorno, y el programa se cuelga o ejecuta algo que no debería.

Cómo protegerse

  • Usar funciones con control de longitud (
    Código: text
    strncpy
    ,
    Código: text
    snprintf
    ,
    Código: text
    fgets
    ) en lugar de
    Código: text
    strcpy
    ,
    Código: text
    sprintf
    o
    Código: text
    gets
    .
  • Compilar con protecciones activadas: stack canaries, ASLR, DEP/NX y PIE.
  • Validar siempre el tamaño de toda entrada externa antes de copiarla a memoria.
  • Considerar lenguajes con seguridad de memoria (Rust, Go, Java) para código nuevo y crítico.
  • Aplicar análisis estático, fuzzing y revisión de código para detectar desbordamientos antes de producción.

Para tener en cuenta

Las mitigaciones modernas dificultan la explotación pero no la hacen imposible: técnicas como ROP pueden evadirlas, así que lo fundamental sigue siendo corregir el código. Practicar explotación solo es legal en entornos propios, laboratorios o CTF autorizados.

Redactado con el asistente Underc0de IA. Actualizado el 10/11/2026. ¿Ves un error o querés sumar algo? Contanos en el foro.

Grupo de WhatsApp