Stack Guard vs Stack Shield

1

Me gustaría saber por qué hoy en día se usa Stack Guard en todas partes (ejemplo: ProPolice en GCC, / GS en Visual Studio), en lugar de Stack Shield.

Ambos enfoques (es decir, Stack Guard y Amp; Stack Shield) proporcionan un nivel de seguridad igual.

¿Alguna ventaja específica de Stack Guard sobre Stack Shield?

    
pregunta Jaydeep 20.10.2013 - 14:47
fuente

1 respuesta

1

Estas tecnologías son similares en cuanto a que son protecciones del compilador. Para obtener protección, una aplicación necesita ser recompilada, pero el código fuente no necesita ser cambiado (al menos, a menos que la aplicación haga algo raro, como el código de auto-modificación)

Stack Guard se basa en un valor "canario" que se coloca en la pila con cada llamada de función. Al final de la función, se comprueba el canario. Si se ha producido un desbordamiento, se dañará el canario y se detectará.

Stack Shield se basa en copiar la dirección de retorno a un área segura y verificar la dirección de retorno al final de la función. Si se sobrescribe la dirección de retorno, esto ya no coincidirá y se detectará el ataque.

Debido a que funcionan de manera diferente, tienen propiedades de seguridad ligeramente diferentes. En particular, Stack Guard es mejor para detectar la corrupción de otras cosas además de la dirección de retorno. Y es por eso que Stack Guard se usa más ampliamente.

Este documento es interesante: enlace

    
respondido por el paj28 20.10.2013 - 15:50
fuente

Lea otras preguntas en las etiquetas