¿Qué es un desbordamiento del búfer de pila?
Un desbordamiento del búfer de pila es lo que sucede cuando un programa ingresa en la memoria de una computadora que es más larga que el espacio asignado. En algunas circunstancias, esto puede corromper otros datos en la memoria, causando problemas en el funcionamiento de la computadora. En otros casos, una aplicación maliciosa puede explotar un desbordamiento del búfer de pila para tomar el control de otras partes de la computadora.
El nombre de un desbordamiento del búfer de pila se deriva primero de la pila, que es efectivamente una lista activa en la que se organizan los datos: el término proviene de la analogía de acumular elementos físicos. Una versión de esto, la pila de llamadas, es la lista que utiliza un programa de computadora para realizar un seguimiento de las diversas partes del programa, las subrutinas, que están operando en un momento particular. Como la pila de llamadas funciona de forma temporal y necesita acceso rápido, se encuentra en la memoria de la computadora en lugar de en un almacenamiento permanente como el disco duro.
Debido a que los sistemas operativos modernos permiten que se ejecuten múltiples programas a la vez, es necesario organizar la forma en que se asigna la memoria, incluidas las pilas de llamadas. Esto se realiza de manera eficiente mediante la asignación de búferes, un espacio en la memoria diseñado para ser lo suficientemente grande como para hacer frente al espacio máximo requerido por un búfer en particular. En la mayoría de los casos, parte del espacio no se usará, por lo que actúa como un búfer entre los datos de diferentes aplicaciones, dejando espacio para hacer frente si uno de repente requiere espacio adicional. Una forma de visualizarlo sería pensar en una biblioteca que asignara una cierta cantidad de espacio a cada área temática, asegurándose de dejar espacio adicional para hacer frente si, por ejemplo, todos los libros sobre un tema estaban en la biblioteca Al mismo tiempo, en lugar de que ninguno de ellos sea revisado.
Un desbordamiento del búfer de la pila ocurre cuando un programa escribe datos de la pila de llamadas en el búfer de una manera que excede el espacio asignado. Esto puede suceder por error, generalmente a través de un error en un programa. Por ejemplo, si una aplicación está diseñada para permitir al usuario escribir un número de teléfono, pero no tiene límite en la cantidad de caracteres que se pueden ingresar, un pirata informático puede usar el campo ilimitado para causar un desbordamiento del búfer de la pila intencionalmente . Dependiendo de la forma en que funciona el sistema operativo, esto podría permitir que el hacker acceda indirectamente a otra aplicación o al propio sistema operativo.
Existen varios enfoques para mitigar los efectos de un desbordamiento del búfer de pila. Uno se conoce como aleatorización del diseño del espacio de direcciones. Esto organiza las áreas más importantes de datos en la computadora de forma aleatoria. La idea es que incluso si un pirata informático causa o explota un desbordamiento del búfer de la pila, no podrá explotar la violación de manera confiable.