CET & Shadow Stack
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: 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 Return-Oriented Programming (ROP) y Jump-Oriented Programming (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 realice una acción maliciosa.
CET introduce dos características principales: Indirect Branch Tracking (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 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 contra la pila sombra, evitando que los atacantes sobrescriban las direcciones de retorno en la pila para secuestrar el flujo de control.
La shadow stack es una pila dedicada utilizada únicamente para almacenar direcciones de retorno. Funciona junto con la pila regular, pero está protegida y oculta de la ejecución normal del programa, lo que dificulta que los atacantes la manipulen. El objetivo principal de la pila sombra es asegurar que cualquier modificación a las direcciones de retorno en la pila convencional sea detectada 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 orientados a retorno, los atacantes pueden ejecutar código arbitrario.
La característica IBT de CET hace que estos ataques sean significativamente más difíciles al asegurar que las ramas indirectas solo puedan saltar a direcciones que han sido marcadas explícitamente como destinos válidos. Esto hace que sea imposible para los atacantes ejecutar gadgets arbitrarios dispersos por el binario.
La shadow stack, por otro lado, 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 la pila sombra 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.
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)