Desbordamiento de montículo
En informática, un desbordamiento de montículo (heap overflow/overrun) es un problema aritmético que hace referencia al exceso de flujo de datos sobre un montículo, esto permite un acceso no autorizado a la memoria por parte de un comando o de un programa o script denominado shellcode.
Un ejemplo de heap overflow[1] podría ser el siguiente: Supongamos que un programa tiene una función que acepta una cadena de caracteres y la copia en un búfer de memoria en el heap. Si el programador no verifica el tamaño de la cadena antes de copiarla en el búfer, un atacante podría enviar una cadena de caracteres que sea más grande que el tamaño del búfer, lo que provocaría que los caracteres adicionales se escriban en otras áreas de memoria adyacentes. Si estas áreas de memoria contienen información importante, el atacante podría alterarla y hacer que el programa se comporte de manera inesperada.
Para evitar un "heap overflow"[2], los programadores deben asegurarse de que sus programas estén diseñados para manejar correctamente el tamaño de los datos que reciben y asignan en el heap, utilizando técnicas como la validación de la entrada de usuario y el uso de funciones seguras de copia de memoria que verifican los límites de los búferes.
Véase también
- Desbordamiento de búfer (Buffer overflow/overrun).
- Desbordamiento de pila (Stack overflow/overrun).
- Error de software