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 llevar 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, apilado rompiendo colocando más datos en una pila que su capacidad de almacenamiento. 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 de la pila se ven afectados y hacen que el programa se bloquee.
Techinfo explica Stack Smashing
Si el programa afectado por la rotura de pilas acepta datos de redes que no son de confianza y se ejecuta con privilegios especiales, es un caso de vulnerabilidad de seguridad. Si el búfer contiene datos proporcionados por un usuario que no es de confianza, la pila puede dañarse 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.
A medida que la destrucción de pilas se ha convertido en una vulnerabilidad muy grave, se implementan ciertas tecnologías para superar el desastre de destrucción de pilas. 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 un búfer que lo precede en la memoria se ha desbordado. Los valores Canary monitorean 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 corrompe el canary primero. Una verificación fallida de los datos canarios significa un desbordamiento en la pila. Los tres tipos de canario son Random, Terminator y Random XOR.
El terminator canary 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 de recolección 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 codifican XOR utilizando datos de control. Es similar a los canarios aleatorios excepto que el "método de lectura de la pila" para obtener el canario es complejo. El pirata informático necesita el canario, el algoritmo y los datos de control para producir el canario original. Protegen contra ataques que involucran búferes desbordados en una estructura en punteros para cambiar el puntero para apuntar a una pieza de datos de control.