Qué es un desbordamiento de búfer y cómo evitarlo

Gertrudis Bujalance

Un ciberdelincuente puede sacar partido de una vulnerabilidad para manipular un sistema. Sorteando la normativa de seguridad, el manejo de esta debilidad aporta cierto nivel de control. Es el caso del desbordamiento del búfer por una sobrecarga de datos.

Qué es un búfer y para qué sirve

Un búfer es un almacén de memoria física usado para conservar datos temporalmente, mientras se transportan de un lugar a otro. Estos depósitos informáticos suelen estar en la memoria RAM. Es frecuente que los ordenadores usen el búfer como elemento auxiliar para potenciar la capacidad del sistema. En general, los discos duros actuales utilizan el búfer para gestionar los datos con mayor agilidad, como hacen también numerosos servicios en línea. Por ejemplo, en la transmisión de vídeo en línea (el famoso streaming) es frecuente usar un búfer para impedir las pausas en la conexión. En estos casos, el reproductor de vídeo descarga y almacena simultáneamente en un búfer un 20% del contenido y lo transmite desde ese almacén de información. De esta manera, los frenazos de velocidad y las interrupciones en la conexión no afectarán a la continuidad de la reproducción del material audiovisual.

¿Cuándo se produce un desbordamiento de búfer?

Un desbordamiento es un error de software que ocurre si un programa no controla correctamente el volumen de información copiado a un espacio de memoria o búfer de datos. Si supera la capacidad predeterminada, los bytes sobrantes se acumulan en zonas de memoria adyacentes, sobrescribiendo su contenido original, que probablemente sean datos o códigos del sistema. O dicho de una manera más simple, se reubica una cantidad de datos excesiva a un lugar de almacenamiento sin espacio suficiente. Y ese alud de información reemplaza a la contenida en los espacios contiguos.

Este anegamiento constituye un defecto de programación. En las estructuras informáticas no existe separación entre las zonas de memoria asignadas a los datos y las asignadas a los programas. En consecuencia, los bytes que desbordan el búfer podrían grabarse donde antes había instrucciones. Esto implicaría la posibilidad de modificar el funcionamiento del sistema, con comportamientos ajenos a los diseñados por el programador original. Esto es lo que se conoce como una vulnerabilidad.