¿Se usa Shadow-Stack solo para anti-BufferOverflows?

3

Tengo algunas preguntas sobre la concepción de la pila de sombras:

  1. ¿Se utiliza la concepción de la pila sombra para las previsiones de desbordamientos de búfer? ¿solamente?
  2. ¿Es la pila canaria adyacente a la sombra de la pila?
  3. ¿Qué ocurrirá si las direcciones de retorno de la pila y la sombra de la pila no coinciden (es ¿Shadow-stack tiene una prioridad más alta o sigfault aumentará)?
pregunta AseN 16.10.2016 - 21:31
fuente

2 respuestas

2

Intel CET protege contra la programación orientada al retorno, no los desbordamientos de búfer en sí. Su trabajo es asegurarse de que cada instrucción RET vuelva a la misma dirección de la que provino su instrucción CALL correspondiente, y eso es todo. Para hacer esto, el hardware mantiene una sección de memoria llamada "pila de sombra" que está fuera del alcance del programa en sí. Cada instrucción CALL empuja la dirección de retorno apropiada en la pila sombra, y cada RET saca el valor superior de la pila sombra y bloquea el proceso si ese valor no es igual al valor de retorno en la pila real.

La programación orientada hacia el retorno es una forma de evitar la tecnología DEP (o NX). Ya que con DEP no puedes simplemente inyectar más el código ejecutable, en lugar de eso, puedes usar ROP para sobrescribir las direcciones de retorno y unir los fragmentos del propio código del programa en un orden que hace que haga su oferta.

Los desbordamientos de búfer se utilizan para inyectar cargas útiles en el espacio de la memoria de un proceso, y esas cargas útiles pueden ser cargas de ROP. Pero no hay una relación fundamental entre los desbordamientos de búfer y Intel CET.

    
respondido por el Reid Rankin 17.11.2016 - 06:00
fuente
0

No sé mucho sobre CET, pero hasta que obtenga una respuesta más autoritaria, esto podría ayudar:

  1. Funciona con otras fallas de corrupción de memoria (por ejemplo, el usuario después de gratis). Pero su único propósito es la seguridad.
  2. Stack canary es una técnica totalmente separada, y normalmente tendrías ambas habilitadas.
  3. La CPU provocará una interrupción. El sistema operativo puede decidir cómo manejar esto, aunque terminar el proceso parece ser la única acción sensata.
respondido por el paj28 17.10.2016 - 09:07
fuente

Lea otras preguntas en las etiquetas