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

Desbordamiento de entero

Revisado porCybersecurity entrepreneur & security researcher

¿Qué es Desbordamiento de entero?

Desbordamiento de enteroDefecto en el que una operación aritmética produce un valor fuera del rango representable del tipo entero, con efectos de envoltorio o truncamiento críticos para la seguridad.


Los desbordamientos de enteros ocurren cuando los cálculos exceden el valor máximo (o mínimo) que puede contener un tipo entero, provocando envoltorio, cambios de signo o truncamiento. Se convierten en problemas de seguridad cuando el valor erróneo se usa después como tamaño de búfer, contador de bucle, índice de arreglo o comprobación de autorización, generando con frecuencia desbordamientos de búfer, bucles infinitos o evasiones de límites.

El patrón clásico. Un punto de peligro habitual es malloc(count * size): si count * size se envuelve más allá de SIZE_MAX, el asignador devuelve un búfer mucho más pequeño de lo que el código supone, y la copia posterior escribe más allá del final: un desbordamiento provocado por una multiplicación, no por una longitud errónea de memcpy. La familia Stagefright de Android de 2015 (CVE-2015-1538) explotó exactamente esto: un desbordamiento de entero en el átomo de metadatos stsc de un archivo MP4 provocaba una asignación de heap demasiado pequeña, permitiendo que un solo mensaje MMS lograra la ejecución remota de código en unos 950 millones de dispositivos estimados. El fallo de challenge-response de OpenSSH de 2002 (CVE-2002-0639) y muchos errores en códecs de imagen y analizadores de fuentes siguen la misma forma. Las conversiones de con signo a sin signo son una trampa relacionada: una longitud negativa interpretada como un enorme valor sin signo derrota una comprobación ingenua como if (len > max).

Las defensas incluyen la aritmética verificada (checked_add/checked_mul de Rust, ckd_* de C23, -ftrapv del compilador y UBSan), calcular en un tipo más ancho y luego comprobar el rango antes de reducir, elegir tipos que se ajusten al dominio, validar los tamaños controlados por el atacante antes de asignar memoria y un fuzzing agresivo de los analizadores.

flowchart TD
  A[Cantidad y tamaño<br/>controlados por el atacante] --> B[size = count * elem]
  B --> C{¿El producto supera<br/>el máximo del tipo?}
  C -->|No| D[Asignación correcta]
  C -->|Sí| E[El valor se envuelve<br/>a un número pequeño]
  E --> F[Se asigna un búfer insuficiente]
  F --> G[La copia escribe más allá del final<br/>corrupción de heap / RCE]

Ejemplos

  1. 01

    CVE-2002-0639 (OpenSSH challenge-response): desbordamiento de entero que provoca corrupción de heap.

  2. 02

    CVE-2015-1538 (Android Stagefright): desbordamiento de entero en el átomo 'stsc' de un MP4 que permite la ejecución remota de código.

Preguntas frecuentes

¿Qué es Desbordamiento de entero?

Defecto en el que una operación aritmética produce un valor fuera del rango representable del tipo entero, con efectos de envoltorio o truncamiento críticos para la seguridad. Pertenece a la categoría de Vulnerabilidades en ciberseguridad.

¿Qué significa Desbordamiento de entero?

Defecto en el que una operación aritmética produce un valor fuera del rango representable del tipo entero, con efectos de envoltorio o truncamiento críticos para la seguridad.

¿Cómo defenderse de Desbordamiento de entero?

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

¿Cuáles son otros nombres para Desbordamiento de entero?

Nombres alternativos comunes: Wraparound de entero.

Términos relacionados

Véase también