Lo que necesitas saber sobre los ataques de desbordamiento de búfer

Lo que necesitas saber sobre los ataques de desbordamiento de búfer

Escrito por: Lizzie Danielson
Publicado: 9/6/2026

Persona escribiendo en un teclado

Desde el gusano Morris en 1988 hasta el brote de WannaCry en 2017, los ataques de desbordamiento de búfer son una amenaza persistente para la ciberseguridad. Las vulnerabilidades críticas recientes siguen mostrando que este problema no desaparecerá pronto.

No se trata solo de fallas que hacen fallar una aplicación. Pueden darle a un hacker las llaves de tu sistema, permitiéndole moverse por toda tu red o desplegar ransomware.

En esta guía, explicaremos cómo funcionan estas brechas y por qué la detección basada en comportamiento es tu mejor defensa.

Puntos clave

  • El desbordamiento de búfer es una falla de seguridad de décadas de antigüedad en la que los actores de amenazas saturan la memoria del programa ingresando demasiados datos.
  • Este problema de seguridad sigue siendo una amenaza porque los sistemas modernos todavía usan lenguajes sin seguridad de memoria que los actores de amenazas saben eludir.
  • La codificación segura, las protecciones a nivel de sistema operativo y los parches son tres formas comunes de abordar el desbordamiento de búfer, pero no son suficientes.
  • La detección de endpoints basada en comportamiento agrega una capa de seguridad necesaria para detectar la actividad maliciosa que sigue a las explotaciones de desbordamiento de búfer y otros errores de seguridad de memoria.

¿Qué es un desbordamiento de búfer?

Un ataque de desbordamiento de búfer ocurre cuando un programa recibe más datos de los que puede contener. El almacenamiento (búfer) es un bloque de memoria de tamaño fijo destinado a contener información limitada. Cuando se desborda, esos datos se derraman hacia áreas cercanas.

En una situación normal, este desbordamiento solo provoca una falla de segmentación. Pero un actor de amenazas puede usarlo para sobrescribir instrucciones críticas y secuestrar un sistema. Tu sistema.

Los lenguajes de programación usados para construir software de sistemas son objetivos comunes debido a su falta de verificación de límites integrada. Los lenguajes de programación “con seguridad de memoria” como Rust o Go usan la verificación de límites para evitar que el software acceda a datos fuera de su área designada (o “límites”).

Por estas razones, CISA señala que depender de lenguajes sin seguridad de memoria como C y C++ para software nuevo conectado a internet es una “mala práctica” en su guía de seguridad de productos.

Hacer fallar un proceso no es el objetivo final. Los actores de amenazas usan los desbordamientos de búfer para lograr ejecución de código y escalar privilegios, con el fin de tomar control de los sistemas y avanzar más profundo en tu entorno.

Cómo entra la IA en juego

Los nuevos modelos de IA son cada vez mejores para detectar vulnerabilidades de software. En las manos correctas, estas herramientas ayudan a las empresas a mejorar su seguridad. En las manos equivocadas, la IA puede encontrar más formas de entrar a los sistemas con menos esfuerzo.

Recientemente, el investigador de Anthropic Nicholas Carlini usó un script básico para pedirle a Claude Code que buscara vulnerabilidades en el kernel de Linux. La herramienta encontró una explotación de desbordamiento de búfer que existía desde 2003. Linux ya emitió parches, pero el descubrimiento genera inquietud: ¿qué otras explotaciones siguen ahí afuera esperando a que la IA las saque a la luz?

Tipos de ataques de desbordamiento de búfer

Todos los ataques de desbordamiento de búfer son un poco diferentes, y un atacante necesita usar distintos métodos según dónde ocurrió el derrame de datos. Mientras algunos son fáciles de realizar, otros requieren verdadera habilidad técnica.

Desbordamiento de búfer basado en pila

Un desbordamiento de búfer de pila ocurre en una parte de la memoria de la computadora que usa un enfoque “último en entrar, primero en salir” para organizar el código. Esta parte rápida y gestionada automáticamente del almacenamiento es la pila.

Piensa en la pila como una pila de bandejas. En la parte inferior de cada bandeja hay una dirección de retorno. En términos informáticos, esta es una nota que le indica a la computadora adónde ir después de terminar una tarea. En un desbordamiento de búfer de pila, un hacker envía suficientes datos para sobrescribir esa nota. Entonces, en lugar de volver al trabajo normal, la computadora sigue las instrucciones nuevas y maliciosas para ejecutar el shellcode del hacker.

Los expertos en ciberseguridad crearon herramientas para bloquear esto, pero los actores de amenazas simplemente se adaptaron. Ahora usan trucos como la programación orientada al retorno (ROP) o la programación orientada al salto (JOP) para infiltrarse. En lugar de traer su propio malware, encadenan pequeños fragmentos de código legítimo que ya existen en tu sistema. Cuando está listo, el código se reutiliza para hacer el trabajo sucio del atacante.

Este tipo de desbordamiento se usó en la explotación EternalBlue, que luego alimentó el ataque de ransomware WannaCry.

Desbordamiento de búfer basado en heap

Un ataque de desbordamiento de heap apunta al área grande y dinámica de memoria usada para datos de largo plazo. Esta parte flexible del almacenamiento es el heap.

A diferencia de la pila, no hay una dirección de retorno simple en un ataque de heap. En cambio, los atacantes necesitan corromper las estructuras de memoria subyacentes o los metadatos que el sistema usa para su organización. Si se hace correctamente, los actores de amenazas obtienen control total o escalan sus privilegios en tu sistema.

Desbordamiento off-by-one

Los actores de amenazas no siempre necesitan una inundación masiva de datos para aprovechar una vulnerabilidad de desbordamiento de búfer. A veces, solo necesitan un único carácter adicional.

Un desbordamiento off-by-one ocurre cuando un programador comete un pequeño error matemático, como olvidar el terminador nulo al final de una cadena en C. Aunque suene trivial, esa sobrescritura de un solo byte puede infiltrarse en los datos de control y redirigir la ejecución.

A diferencia de los desbordamientos basados en pila o en heap, este tipo de error es un recordatorio de que la seguridad del software no siempre se trata de vulnerabilidades de día cero llamativas o cadenas de explotación complejas: pequeños errores off-by-one pueden ser igual de peligrosos. Por ejemplo, hemos visto problemas críticos del mundo real, como las vulnerabilidades de WS_FTP, que surgen de fallas sutiles en el manejo de entradas.

Ejemplos reales de desbordamiento de búfer

No tendrás que buscar mucho para encontrar un ejemplo real de desbordamiento de búfer. Estos son algunos de los ataques más notables y generalizados desde la década de 1980:

  • El gusano Morris en 1988 usó un ataque de desbordamiento de búfer para propagarse en 6.000 computadoras en un lapso de 24 horas. Este incidente marcó el primer gran ataque de gusano en internet.
  • El ataque WannaCry, o CVE-2017-0144, atacó una vulnerabilidad en Windows SMBv1. Permitió que el ransomware se propagara automáticamente por las redes sin que nadie hiciera clic en un enlace, lo que generó problemas en líneas navieras globales y hospitales.
  • Baron Samedit, o CVE-2021-3156, usó un ataque de desbordamiento de montón que daba a usuarios locales acceso root en sistemas Linux sin necesitar una contraseña. La vulnerabilidad permaneció oculta durante años antes de que el equipo de investigación de Qualys la encontrara.
  • El desbordamiento de pila CVE-2025-32756 permitió que un atacante ejecutara código malicioso solo con enviar una solicitud HTTP incorrecta. Descubierto por primera vez en 2025, esto demostró que los desbordamientos de búfer no eran un problema del pasado.

    Los ataques de desbordamiento de búfer son una amenaza constante en el mundo de la ciberseguridad. Cada vez que las empresas crean una solución, los actores de amenazas parecen encontrar una nueva vulnerabilidad.

Cómo prevenir los ataques de desbordamiento de búfer

Prevenir eficazmente los ataques de desbordamiento de búfer requiere un enfoque por capas, pero no basta con confiar solo en la tecnología.

Estas son las mejores prácticas para detener el desbordamiento de búfer de raíz.

Codificación segura y lenguajes seguros en memoria

¿La mejor forma de detener un desbordamiento? Prevenirlo durante el desarrollo. Al escribir código nuevo, asegúrate de usar un lenguaje seguro en memoria con verificación de límites integrada.

Para aplicaciones heredadas en C/C++, los desarrolladores deberían reemplazar funciones inseguras como strcpy (copia texto sin verificar el tamaño) por alternativas más seguras como strncpy (copia texto con un límite de tamaño). Este límite simple exige que los datos de entrada quepan dentro de los límites fijos para mantener a los actores de amenazas fuera de la aplicación.

Si esto no es posible, aplica otras medidas de seguridad como stack canaries, aleatorización del diseño del espacio de direcciones (ASLR) y prevención de ejecución de datos (DEP) para dificultar la explotación de tu entorno por parte de los actores de amenazas.

Protecciones de tiempo de ejecución a nivel del sistema operativo

Los sistemas operativos modernos usan algunos trucos para hacer menos probables los exploits de desbordamiento:

  • Aleatorización del diseño del espacio de direcciones (ASLR) revuelve las direcciones de memoria para que los atacantes no puedan encontrar su objetivo.
  • Prevención de ejecución de datos (DEP) marca ciertas áreas como no ejecutables para impedir que se ejecute código malicioso.
  • Protección de sobrescritura del manejador de excepciones estructurado (SEHOP) impide que los actores de amenazas alteren la forma en que un programa maneja los errores.

    Si bien estas son defensas esenciales, no son infalibles. Los actores de amenazas muy capacitados aún pueden encontrar formas de evadirlas con técnicas ROP y JOP.

Aplicación de parches (y por qué no basta por sí sola)

Aplicar parches es tu primera línea de defensa, pero es un enfoque reactivo. Dicho de otro modo, es una respuesta a que alguien encuentre una vulnerabilidad antes de que los desarrolladores la corrijan. Siempre existe una ventana de riesgo entre el descubrimiento de la vulnerabilidad y la instalación de la solución.

Una vez que un hacker desencadena un ataque, las herramientas tradicionales suelen pasar por alto los sutiles cambios de proceso que siguen. Aquí es donde los equipos de seguridad reducidos enfrentan su mayor brecha: pueden ver el fallo, pero no pueden detener al hacker mientras se mueve por su red.

Cómo Huntress Managed EDR detecta lo que los parches pasan por alto

Los vacíos de seguridad representan un gran problema cuando aparece un actor de amenazas experimentado. Sin un nuevo binario o firma que detectar, los escáneres pueden pasar por alto por completo las tácticas de ROP y JOP.

Ahí es donde entra la detección basada en comportamiento.

Huntress Managed EDR monitorea de forma continua los procesos y la actividad de los endpoints en tiempo real. Nuestros analistas del SOC, disponibles 24/7 e inpulsado por IA, revisan detecciones de alta fidelidad sobre comportamiento malicioso de procesos, mecanismos de persistencia, escalada de privilegios y movimiento lateral, no solo archivos de malware evidentes.

Cuando detectamos actividad sospechosa, nuestro Attack Disruption Engine de Managed EDR puede eliminar automáticamente procesos maliciosos, detener la ejecución de código sospechoso y bloquear nuevos puntos de apoyo, mientras envía una alerta acelerada a nuestro SOC.

Descubre cómo Huntress puede ayudar a proteger tu sistema contra desbordamientos de búfer y otros ataques basados en comportamiento. Inicia tu prueba gratis hoy mismo.

Preguntas frecuentes

Un desbordamiento de búfer es la categoría amplia de un ataque basado en sobrecargar la memoria de un programa. Un desbordamiento de pila es un tipo de ataque de desbordamiento de búfer que ocurre en la región de la pila.

Sí, el desbordamiento de búfer sigue siendo un problema en 2026. Los actores de amenazas siguen explotando esta brecha de seguridad porque los sistemas heredados todavía usan C y C++. Incluso los programas escritos en lenguajes más seguros no cuentan con un método de prevención infalible.

Una vez que un actor de amenazas explota con éxito un desbordamiento de búfer, a menudo puede ejecutar código arbitrario, escalar privilegios y tomar el control efectivo del sistema afectado.

Recursos adicionales

Más información sobre Evasión de EDR: cómo los actores de amenazas burlan la seguridad de endpoints
Evasión de EDR: cómo los actores de amenazas burlan la seguridad de endpoints
Ciberseguridad 101

Descubre cómo los actores de amenazas evaden la visibilidad de endpoints, ocultan la ejecución y abusan de herramientas legítimas, y cómo Huntress Managed EDR te ayuda a investigar y responder.

Más información sobre ¿Qué es el estándar de cifrado avanzado (AES)?
¿Qué es el estándar de cifrado avanzado (AES)?
Ciberseguridad 101

Aprende sobre el estándar de cifrado avanzado (AES), un protocolo de cifrado de primer nivel confiable para proteger datos sensibles. Explora su historia, funcionalidad, características y aplicaciones prácticas.

Más información sobre ¿Qué es un vector de inicialización? Criptografía explicada
¿Qué es un vector de inicialización? Criptografía explicada
Ciberseguridad 101

Descubre por qué los vectores de inicialización son fundamentales para la seguridad de los datos en esta guía de Huntress. Comprende cómo funcionan, su papel en la criptografía y las mejores prácticas para administrarlos.

Protege lo que importa

Protege endpoints, correo electrónico y empleados con el poder de nuestro SOC 24/7. Prueba Huntress gratis y despliega en minutos para empezar a combatir las amenazas.
Probar Huntress gratis