Vulnerabilidad de desbordamiento de enteros y su protección
El desbordamiento de enteros es una vulnerabilidad común en la programación que puede ocurrir en la mayoría de los lenguajes de programación. Ocurre cuando el resultado de un cálculo excede el rango de representación del tipo de entero. Por ejemplo, el rango de un entero sin signo de 32 bits (uint32) es de 0 a 4,294,967,295. Si se suma 1 a 4,294,967,295, el resultado "desbordará" y se convertirá en 0.
Este desbordamiento puede causar errores graves en el programa, especialmente al manejar datos financieros. Por ejemplo, si se representa el precio de las acciones con un entero de 32 bits, cuando el precio supera el valor máximo, puede ser leído erróneamente como 0, lo que claramente causaría un gran caos.
El desbordamiento de enteros se divide en dos casos: desbordamiento superior y desbordamiento inferior.
- Desbordamiento: el resultado excede el valor máximo, por ejemplo, 0xFFFFFFFF + 1 = 0x00000000
- Subdesbordamiento: el resultado es menor que el valor mínimo, como