¿Qué es un desbordamiento de búfer?

Un desbordamiento del búfer se produce cuando un programa intenta escribir en un búfer y se sale de sus límites, lo que hace que la información del programa escriba 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 se «pierde» aparentemente, ya que el mapa de memoria de la computadora, su lista de ubicaciones de memoria, no puede dar cuenta de ella. En segundo lugar, un desbordamiento del búfer puede sobreescribir accidentalmente la información almacenada en la memoria para otro programa, interfiriendo efectivamente también con la ejecución de otro programa.

Un «búfer» es una región de la memoria que se utiliza 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 interrumpa si algo va temporalmente mal 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 sólo «sabe» que debe buscar información almacenada en el búfer dentro del espacio de búfer específico 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 que ya esté almacenada en esas secciones de memoria. Por lo tanto, un desbordamiento del búfer es un problema que puede socavar la eficacia de un programa adyacente y corromper su propio funcionamiento.