¿Cómo funciona la pila de guarda del compilador gcc para el desbordamiento de pila?

4

Cuando compilamos el programa c con gcc, tenemos que incluir la opción "-z execstack" para habilitar el ataque de desbordamiento de pila. La pregunta que quiero hacer es cómo gcc implementa esto. Sin esta opción, ¿cómo guarda gcc la pila? Por favor, explícame en detalle si es posible.

    
pregunta popo 25.05.2018 - 14:30
fuente

1 respuesta

5

En un ataque de desbordamiento de pila clásico, el atacante logra colocar su propio código (instrucciones del procesador) en la pila al desbordar algunas estructuras de datos basadas en pila con contenido controlado por el atacante. Ahora, el atacante necesita tener este contenido en la pila para que el procesador lo tome como instrucciones y lo ejecute. Pero, el procesador solo ejecutará el código de las páginas de memoria marcadas como ejecutables. Solo que el sistema operativo moderno y los compiladores marcarán las páginas de la pila como no ejecutables para evitar tales desbordamientos de pila. La opción -z execstack desactiva esta protección.

    
respondido por el Steffen Ullrich 25.05.2018 - 15:36
fuente

Lea otras preguntas en las etiquetas