CET & Shadow Stack
Last updated
Last updated
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)
CET es una característica de seguridad implementada a nivel de hardware, diseñada para frustrar ataques comunes de secuestro de flujo de control como Programación Orientada a Retorno (ROP) y Programación Orientada a Salto (JOP). Estos tipos de ataques manipulan el flujo de ejecución de un programa para ejecutar código malicioso o encadenar piezas de código benigno de una manera que realiza una acción maliciosa.
CET introduce dos características principales: Seguimiento de Ramas Indirectas (IBT) y Shadow Stack.
IBT asegura que los saltos y llamadas indirectas se realicen a destinos válidos, que están marcados explícitamente como destinos legales para ramas indirectas. Esto se logra mediante el uso de un nuevo conjunto de instrucciones que marca los destinos válidos, evitando así que los atacantes desvíen el flujo de control a ubicaciones arbitrarias.
Shadow Stack es un mecanismo que proporciona integridad para las direcciones de retorno. Mantiene una copia segura y oculta de las direcciones de retorno separada de la pila de llamadas regular. Cuando una función retorna, la dirección de retorno se valida con el shadow stack, evitando que los atacantes sobrescriban las direcciones de retorno en la pila para secuestrar el flujo de control.
El shadow stack es una pila dedicada utilizada únicamente para almacenar direcciones de retorno. Trabaja junto con la pila regular pero está protegida y oculta de la ejecución normal del programa, lo que dificulta que los atacantes manipulen. El objetivo principal del shadow stack es garantizar que se detecten cualquier modificación de las direcciones de retorno en la pila convencional antes de que puedan ser utilizadas, mitigando efectivamente los ataques ROP.
Los ataques ROP y JOP dependen de la capacidad de secuestrar el flujo de control de una aplicación aprovechando vulnerabilidades que les permiten sobrescribir punteros o direcciones de retorno en la pila. Al dirigir el flujo a secuencias de gadgets de código existentes o gadgets de programación orientada a retorno, los atacantes pueden ejecutar código arbitrario.
La característica IBT de CET dificulta significativamente estos ataques al garantizar que las ramas indirectas solo puedan saltar a direcciones que han sido marcadas explícitamente como destinos válidos. Esto hace imposible que los atacantes ejecuten gadgets arbitrarios dispersos en el binario.
Por otro lado, el shadow stack asegura que incluso si un atacante puede sobrescribir una dirección de retorno en la pila normal, la discrepancia será detectada al comparar la dirección corrupta con la copia segura almacenada en el shadow stack al retornar de una función. Si las direcciones no coinciden, el programa puede terminar o tomar otras medidas de seguridad, evitando que el ataque tenga éxito.
Aprende y practica Hacking en AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprende y practica Hacking en GCP: HackTricks Training GCP Red Team Expert (GRTE)