¿Qué es un desbordamiento de búfer?
Se produce un desbordamiento del búfer cuando un programa intenta escribir en un búfer y sale de sus límites, lo que da como resultado que el programa escriba información en la memoria que potencialmente pertenece a otro programa. Esto viola la integridad de la memoria dentro del sistema operativo, lo que resulta en un error grave y un posible bloqueo del programa en ejecución. El mayor peligro de un desbordamiento del búfer proviene de dos elementos principales. Primero, la información escrita fuera del búfer aparentemente se "pierde", ya que el mapa de memoria de la computadora, su lista de ubicaciones de memoria, no puede explicarlo. En segundo lugar, un desbordamiento del búfer puede sobrescribir accidentalmente la información almacenada en la memoria para otro programa, lo que también interfiere efectivamente con la ejecución de otro programa.
Un "buffer" es una región de memoria utilizada como ubicación de almacenamiento temporal mientras la computadora transfiere información de un punto a otro. El uso más común de un búfer es típicamente en la reproducción de video o audio, donde la computadora registra X segundos adicionales de metraje o audio en la memoria, asegurando que la reproducción no se interrumpirá si algo sale mal temporalmente en el sistema. Un búfer existe solo dentro de una ubicación específica y predeterminada dentro de la memoria de la computadora, al igual que un país solo existe dentro de las líneas fronterizas dibujadas en un mapa. Salir de estas "líneas" virtuales genera problemas no solo para el programa en ejecución, sino también para otros programas del sistema.
Esencialmente, el programa ha salido de su jurisdicción asignada y ha invadido el espacio de otro programa de trabajo. Una vez que esto sucede, la información escrita fuera del búfer cae efectivamente del mapa de la computadora; en otras palabras, el sistema ya no tiene forma de recuperarlo. Dado que la computadora solo "sabe" buscar información almacenada en el búfer dentro del espacio específico del búfer asignado en la memoria, no tiene forma de averiguar dónde se ha ido la información desbordada.
Además de esto, un desbordamiento del búfer tiene el potencial de interrumpir otros programas que se ejecutan en la computadora. Imagine que el espacio de almacenamiento de memoria a ambos lados del búfer ya se ha asignado a otros programas en ejecución. Una vez que la información en el búfer pasa por su área diseñada, sobrescribirá y corromperá cualquier información ya almacenada en esas secciones de la memoria. Por lo tanto, un desbordamiento del búfer es un problema que puede socavar la eficacia de un programa adyacente y corromper su propia operación.