Shadow stack
¿Qué es Shadow stack?
Shadow stackUna shadow stack es una pila protegida y separada que guarda copias de las direcciones de retorno para detectar manipulaciones de la pila normal y bloquear ataques ROP.
Una shadow stack corre en paralelo con la pila de llamadas convencional: cada llamada apila la direccion de retorno en ambas pilas y cada retorno las compara. Si difieren, la CPU genera una excepcion y el proceso aborta antes de usar la direccion corrupta. El mecanismo se popularizo en articulos academicos de CFI y hoy esta disponible en hardware como Intel CET shadow stack y Arm v8.5-A Guarded Control Stack (GCS). Existen versiones puramente software (LLVM SafeStack, clang -fsanitize=safe-stack) con costes en rendimiento y aislamiento. La shadow stack cubre la arista hacia atras de CFI; las llamadas indirectas siguen necesitando CFI/IBT.
● Ejemplos
- 01
Windows 11 fuerza shadow stacks en modo usuario en CPUs compatibles con CET.
- 02
Arm GCS detecta un desborde que sobrescribe el LR guardado.
● Preguntas frecuentes
¿Qué es Shadow stack?
Una shadow stack es una pila protegida y separada que guarda copias de las direcciones de retorno para detectar manipulaciones de la pila normal y bloquear ataques ROP. Pertenece a la categoría de Seguridad de aplicaciones en ciberseguridad.
¿Qué significa Shadow stack?
Una shadow stack es una pila protegida y separada que guarda copias de las direcciones de retorno para detectar manipulaciones de la pila normal y bloquear ataques ROP.
¿Cómo funciona Shadow stack?
Una shadow stack corre en paralelo con la pila de llamadas convencional: cada llamada apila la direccion de retorno en ambas pilas y cada retorno las compara. Si difieren, la CPU genera una excepcion y el proceso aborta antes de usar la direccion corrupta. El mecanismo se popularizo en articulos academicos de CFI y hoy esta disponible en hardware como Intel CET shadow stack y Arm v8.5-A Guarded Control Stack (GCS). Existen versiones puramente software (LLVM SafeStack, clang -fsanitize=safe-stack) con costes en rendimiento y aislamiento. La shadow stack cubre la arista hacia atras de CFI; las llamadas indirectas siguen necesitando CFI/IBT.
¿Cómo defenderse de Shadow stack?
Las defensas contra Shadow stack combinan habitualmente controles técnicos y prácticas operativas, como se detalla en la definición.
¿Cuáles son otros nombres para Shadow stack?
Nombres alternativos comunes: Pila sombra, Safe stack, GCS.
● Términos relacionados
- appsec№ 217
Integridad del flujo de control
La integridad de flujo de control (CFI) restringe las llamadas indirectas y los retornos del programa a un conjunto precomputado de destinos legitimos, bloqueando ROP y JOP.
- appsec№ 545
Intel CET
Intel CET (Control-flow Enforcement Technology) es una caracteristica de CPU que combina shadow stack hardware e Indirect Branch Tracking (IBT) para bloquear ROP, JOP y COP.
- appsec№ 925
Return-Oriented Programming
ROP es una tecnica de explotacion por reutilizacion de codigo que encadena secuencias cortas terminadas en RET para ejecutar computacion arbitraria sin inyectar codigo nuevo.
- appsec№ 1095
Canario de pila
Un canario de pila es un valor secreto colocado entre los buffers locales de una funcion y la direccion de retorno guardada para detectar desbordes antes de que secuestren el flujo de control.
- appsec№ 064
ASLR
La aleatorización del espacio de direcciones distribuye al azar la ubicación en memoria de código, pilas, montones y librerías para impedir que un atacante prediga direcciones.
- appsec№ 670
Seguridad de memoria
La seguridad de memoria es la propiedad de que un programa nunca lee, escribe ni ejecuta memoria que no haya asignado legitimamente, evitando clases enteras de vulnerabilidades.