Tabla de contenido:
Definición - ¿Qué significa Stack Smashing?
Stack Smashing es una forma de vulnerabilidad en la que la pila de una aplicación informática o sistema operativo se ve obligada a desbordarse. Esto puede conducir a subvertir el programa / sistema y bloquearlo.
Una pila, un circuito primero en entrar, último en salir, es una forma de búfer que contiene resultados intermedios de operaciones dentro de él. Para simplificar, aplastar la pila poniendo más datos en una pila que su capacidad de retención. Los piratas informáticos expertos pueden introducir deliberadamente datos excesivos en la pila. Los datos excesivos pueden almacenarse en otras variables de la pila, incluida la dirección de retorno de la función. Cuando la función regresa, salta al código malicioso en la pila, lo que podría dañar todo el sistema. Los datos adyacentes en la pila se ven afectados y obligan al programa a bloquearse.
Techopedia explica Stack Smashing
Si el programa afectado por la destrucción de la pila acepta datos de redes no confiables y se ejecuta con privilegios especiales, es un caso de vulnerabilidad de seguridad. Si el búfer contiene datos proporcionados por un usuario no confiable, la pila puede corromperse al inyectar código ejecutable en el programa, obteniendo así acceso no autorizado a una computadora. Un atacante también puede sobrescribir la información del flujo de control almacenada en la pila.
Como el aplastamiento de la pila se ha convertido en una vulnerabilidad muy grave, se implementan ciertas tecnologías para superar el desastre del aplastamiento de la pila. La protección de desbordamiento del búfer de pila cambia la organización de los datos en el marco de pila de una llamada de función para incluir valores canarios. Estos valores cuando se destruyen indican que se ha desbordado un búfer que lo precede en la memoria. Los valores Canarios supervisan los desbordamientos del búfer y se colocan entre los datos de control y el búfer en la pila. Esto asegura que un desbordamiento del búfer corrompa primero al canario. Una verificación fallida de datos canarios significa un desbordamiento en la pila. Los tres tipos de canario son Random, Terminator y Random XOR.
El terminador canario se basa en el hecho de que el ataque de desbordamiento del búfer de pila depende de las operaciones de cadena que terminan en los terminadores. Los canarios aleatorios se generan aleatoriamente a partir de un demonio recolector de entropía, lo que evita que los atacantes conozcan los valores. Los canarios aleatorios se generan en la inicialización del programa y se almacenan en variables globales. Los canarios XOR aleatorios son portadores aleatorios que se mezclan XOR utilizando datos de control. Es similar a los canarios aleatorios, excepto que el "método de lectura desde la pila" para obtener el canario es complejo. El hacker necesita el canario, el algoritmo y los datos de control para producir el canario original. Protegen contra ataques que involucran desbordamientos de búferes en una estructura en punteros para cambiar el puntero para apuntar a una pieza de datos de control.