Explorando a Proteção de Exploit do Windows
A Proteção de Exploit do Windows é um recurso de segurança importante, frequentemente solicitado, que ajusta a forma como o sistema operacional executa aplicativos e lida com certas situações para limitar a eficácia de ataques de exploração, mesmo que vulnerabilidades existam dentro de um programa.
Este recurso evoluiu a partir de uma ferramenta separada chamada “Enhanced Mitigation Experience Toolkit” (EMET), que a Microsoft integrou diretamente ao Windows, onde permanece disponível tanto no Windows 10 quanto no Windows 11.
Como Acessar as Configurações
Você pode encontrar essas configurações dentro das configurações de segurança do Windows. O caminho é geralmente:
Configurações > Privacidade e Segurança > Segurança do Windows > Controle de Aplicativos e Navegador > Configurações de Proteção de Exploit.
Nesta área, você encontrará duas abas principais: Configurações do Sistema e Configurações do Programa.
* Configurações do Sistema: Aqui estão os controles padrão aplicados à maioria das configurações importantes.
* Configurações do Programa: Esta aba permite que você defina substituições individuais para aplicativos específicos, caso deseje que um programa utilize configurações diferentes das predefinidas no sistema.
É importante notar que, mesmo que a aba Configurações do Programa pareça vazia inicialmente, o Windows adiciona regras padrão para aplicativos populares. Essas regras podem demorar a aparecer, mas você pode forçar sua exibição utilizando a opção “Exportar Configurações”, que salva as regras atuais como um arquivo XML, revelando as configurações padrão que se aplicam aos programas utilizados. As configurações individuais que você pode ajustar aqui são essencialmente as mesmas encontradas nas Configurações do Sistema.
Configurações Padrão e a Importância da Randomização
Ao analisar as configurações padrão na seção Configurações do Sistema, você verá que a maioria delas está ativada por padrão. A exceção notável é a opção “Randomização Forçada de Imagens”, também conhecida como ASLR Obrigatório (Address Space Layout Randomization).
É crucial entender que “imagens” neste contexto não se refere a figuras ou fotos, mas sim a arquivos de programa ou executáveis (como um .EXE ou .DLL) carregados na memória.
Embora seja possível ativar todas as proteções para máxima segurança, fazê-lo pode ocasionalmente causar problemas. Na maioria dos casos, manter tudo ativado não deve causar impacto, mas pode levar a bugs sutis em aplicativos específicos. Por exemplo, a ativação do ASLR Obrigatório pode, em raras ocasiões, causar erros inexplicáveis em alguns softwares, como falhas ao clonar repositórios no GitHub Desktop, que só são resolvidos ao desabilitar a configuração ou adicionar uma exceção para o aplicativo.
É importante saber que as configurações visíveis na interface gráfica (GUI) não englobam todas as regras disponíveis para proteção de exploit. Para visualizar a lista completa, é necessário usar o comando PowerShell Get-ProcessMitigation, que mostrará todas as regras associadas a cada processo, muitas das quais não estão expostas na interface. Para uma explicação detalhada de todas essas opções, há referências disponíveis em artigos da Microsoft sobre proteção de exploit.
A seguir, detalhamos as configurações que podem ser gerenciadas na GUI:
Explicação das Principais Mitigações do Sistema
As seguintes configurações visíveis na interface gráfica trabalham para aumentar a segurança dos aplicativos:
Control Flow Guard (CFG)
* Descrição: “Assegura a integridade do fluxo de controle para chamadas indiretas”.
O CFG atua impedindo que um invasor redirecione o fluxo de execução de um programa para um endereço de memória arbitrário. Em um cenário de exploração, se um invasor conseguir alterar o endereço de retorno de uma função para apontar para dados controlados pelo invasor (que contêm código malicioso), o CFG intervém. Ele verifica se o endereço de destino é uma função válida conhecida. Se não for, ele bloqueia a chamada, frustrando o exploit, embora o programa possa travar como resultado.
Data Execution Prevention (DEP)
* Descrição: “Previne que código seja executado a partir de páginas de memória que são apenas para dados”.
Diferentemente do CFG, que foca no destino das chamadas, o DEP verifica onde o código está sendo executado. Se um invasor conseguir sobrescrever uma função legítima e substituir seu código por um payload maior, que se estende para áreas de memória não marcadas como executáveis, o DEP entra em ação. Ele impede a execução do código nessas seções de memória não autorizadas, bloqueando a execução maliciosa.
Forced Randomization for Images (Mandatory ASLR)
* Descrição: “Força a realocação de imagens não compiladas com /DYNAMICBASE”.
Esta configuração lida com a randomização dos endereços de memória de executáveis carregados. O Endereçamento de Layout de Espaço de Endereço (ASLR) padrão exige que os aplicativos sejam compilados com a flag “DYNAMICBASE” para suportar a randomização de seus endereços de memória no tempo de execução. Isso dificulta para um invasor saber o local exato de uma função legítima para poder sobrescrevê-la. O ASLR Obrigatório força essa randomização mesmo em aplicativos mais antigos que não foram marcados para suportá-la, aumentando a segurança, embora possa causar problemas de compatibilidade em softwares legados.
Vale ressaltar que se um aplicativo já suporta ASLR e está marcado para isso, ele utilizará a randomização de qualquer forma. Esta configuração força a randomização apenas em aplicações que não possuem essa marcação explícita.
Randomized Memory Allocations (Bottom-up ASLR)
* Descrição: “Randomiza localizações para alocações de memória virtual”.
Enquanto o ASLR tradicional foca no endereço base do programa e suas funções, o Bottom-up ASLR randomiza os pontos de partida onde o programa aloca memória para dados em tempo de execução. Normalmente, essa alocação começa no final do espaço de memória do programa; esta configuração aleatoriza esse ponto inicial para dificultar a exploração.
High Entropy ASLR
* Descrição: “Aumenta a variabilidade ao usar alocações de memória randomizadas, também conhecido como Bottom-up ASLR”.
Esta opção intensifica a randomização para aplicativos de 64 bits (ou 64-bit aware). Em sistemas de 64 bits, o espaço de endereçamento virtual é vasto (terabytes). O High Entropy ASLR garante que haja muito mais endereços possíveis que podem ser aleatoriamente atribuídos, tornando muito mais difícil para um invasor adivinhar um endereço útil através de verificações aleatórias.
Validate Exception Chains (SEHOP)
* Descrição: “Assegura a integridade de uma cadeia de exceção durante a distribuição”.
SEHOP significa “Structured Exception Handling Overwrite Protection”. Quando um erro (exceção) ocorre em um programa, ele é direcionado a um “handler” (bloco catch, por exemplo), que possui seu próprio ponteiro ou endereço. Um exploit pode tentar substituir o ponteiro de um desses handlers para redirecionar o fluxo para código malicioso. O SEHOP adiciona verificações para determinar se os endereços desses handlers foram alterados, bloqueando o ataque.
Validate Heap Integrity
* Descrição: “Termina um processo quando corrupção de heap é detectada”.
O heap é uma área de memória utilizada para armazenar dados diversos durante a execução do programa. Hackers podem explorar vulnerabilidades para manipular os dados dentro do heap de maneiras não intencionais. Esta configuração aplica verificações para identificar se essa corrupção ocorreu e, ao detectá-la, encerra o processo afetado para evitar danos maiores.
Ao entender essas configurações, você estará mais informado sobre como proteger seu ambiente Windows contra diversas estratégias de exploração de software.






