mirror of
https://github.com/carlospolop/hacktricks
synced 2024-12-29 22:43:11 +00:00
51 lines
5.2 KiB
Markdown
51 lines
5.2 KiB
Markdown
# CET & Shadow Stack
|
|
|
|
{% hint style="success" %}
|
|
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**Treinamento HackTricks GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Apoie o HackTricks</summary>
|
|
|
|
* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
{% endhint %}
|
|
|
|
## Tecnologia de Execução de Fluxo de Controle (CET)
|
|
|
|
**CET** é um recurso de segurança implementado em nível de hardware, projetado para frustrar ataques comuns de sequestro de fluxo de controle, como **Programação Orientada a Retorno (ROP)** e **Programação Orientada a Salto (JOP)**. Esses tipos de ataques manipulam o fluxo de execução de um programa para executar código malicioso ou encadear pedaços de código benigno de forma a realizar uma ação maliciosa.
|
|
|
|
CET introduz duas características principais: **Rastreamento de Ramificação Indireta (IBT)** e **Shadow Stack**.
|
|
|
|
* **IBT** garante que saltos e chamadas indiretas sejam feitos para destinos válidos, que são marcados explicitamente como destinos legais para ramificações indiretas. Isso é alcançado por meio de um novo conjunto de instruções que marca os destinos válidos, impedindo assim que os 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 ao shadow stack, impedindo que os atacantes sobrescrevam os endereços de retorno na pilha para sequestrar o fluxo de controle.
|
|
|
|
## Shadow Stack
|
|
|
|
O **shadow stack** é uma **pilha dedicada usada exclusivamente para armazenar endereços de retorno**. Ele funciona ao lado da pilha regular, mas é protegido e oculto da execução normal do programa, tornando difícil para os atacantes interferir. O principal objetivo do shadow stack é garantir que quaisquer modificações nos endereços de retorno na pilha convencional sejam detectadas antes que possam ser usadas, mitigando efetivamente os ataques ROP.
|
|
|
|
## Como CET e Shadow Stack Previnem Ataques
|
|
|
|
Os ataques **ROP e JOP** dependem da capacidade de sequestrar o fluxo de controle de um aplicativo 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 de programação orientada a retorno, os atacantes podem executar código arbitrário.
|
|
|
|
* A característica **IBT do CET** torna esses ataques significativamente mais difíceis, garantindo que as ramificações indiretas possam saltar apenas para endereços que foram explicitamente marcados como destinos válidos. Isso torna impossível para os atacantes executar gadgets arbitrários espalhados pelo binário.
|
|
* O **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 no shadow stack ao retornar de uma função. Se os endereços não corresponderem, o programa pode ser encerrado ou adotar outras medidas de segurança, impedindo que o ataque tenha sucesso.
|
|
|
|
{% hint style="success" %}
|
|
Aprenda e pratique Hacking AWS:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**Treinamento HackTricks AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
|
|
Aprenda e pratique Hacking GCP: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**Treinamento HackTricks GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
|
|
|
|
<details>
|
|
|
|
<summary>Apoie o HackTricks</summary>
|
|
|
|
* Verifique os [**planos de assinatura**](https://github.com/sponsors/carlospolop)!
|
|
* **Junte-se ao** 💬 [**grupo Discord**](https://discord.gg/hRep4RUj7f) ou ao [**grupo telegram**](https://t.me/peass) ou **siga-nos** no **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
|
|
* **Compartilhe truques de hacking enviando PRs para os repositórios** [**HackTricks**](https://github.com/carlospolop/hacktricks) e [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud).
|
|
|
|
</details>
|
|
{% endhint %}
|