CET & Shadow Stack
Last updated
Last updated
Aprenda e pratique Hacking na AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking no GCP: HackTricks Training GCP Red Team Expert (GRTE)
CET é um recurso de segurança implementado no nível de hardware, projetado para frustrar ataques comuns de sequestro de fluxo de controle, como Return-Oriented Programming (ROP) e Jump-Oriented Programming (JOP). Esses tipos de ataques manipulam o fluxo de execução de um programa para executar código malicioso ou para encadear pedaços de código benigno de uma maneira que realiza uma ação maliciosa.
CET introduz duas características principais: Indirect Branch Tracking (IBT) e Shadow Stack.
IBT garante que saltos e chamadas indiretas sejam feitos para alvos válidos, que são marcados explicitamente como destinos legais para ramificações indiretas. Isso é alcançado por meio do uso de um novo conjunto de instruções que marca alvos válidos, impedindo assim que atacantes desviem o fluxo de controle para locais arbitrários.
Shadow Stack é um mecanismo que fornece integridade para endereços de retorno. Ele mantém uma cópia segura e oculta dos endereços de retorno separada da pilha de chamadas regular. Quando uma função retorna, o endereço de retorno é validado em relação à pilha sombra, impedindo que atacantes sobrescrevam endereços de retorno na pilha para sequestrar o fluxo de controle.
A shadow stack é uma pilha dedicada usada exclusivamente para armazenar endereços de retorno. Ela funciona ao lado da pilha regular, mas é protegida e oculta da execução normal do programa, tornando difícil para os atacantes interferirem. O objetivo principal da shadow stack é garantir que quaisquer modificações aos endereços de retorno na pilha convencional sejam detectadas antes que possam ser usadas, mitigando efetivamente os ataques ROP.
Os ataques ROP e JOP dependem da capacidade de sequestrar o fluxo de controle de uma aplicação aproveitando vulnerabilidades que permitem sobrescrever ponteiros ou endereços de retorno na pilha. Ao direcionar o fluxo para sequências de gadgets de código existentes ou gadgets orientados a retorno, os atacantes podem executar código arbitrário.
O recurso IBT do CET torna esses ataques significativamente mais difíceis, garantindo que ramificações indiretas só possam saltar para endereços que foram explicitamente marcados como alvos válidos. Isso torna impossível para os atacantes executarem gadgets arbitrários espalhados pelo binário.
A shadow stack, por outro lado, garante que mesmo que um atacante consiga sobrescrever um endereço de retorno na pilha normal, a discrepância será detectada ao comparar o endereço corrompido com a cópia segura armazenada na shadow stack ao retornar de uma função. Se os endereços não coincidirem, o programa pode ser encerrado ou tomar outras medidas de segurança, impedindo que o ataque tenha sucesso.
Aprenda e pratique Hacking na AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking no GCP: HackTricks Training GCP Red Team Expert (GRTE)