Referência de Proteção de ExploraçãoExploit Protection Reference

Aplica-se a:Applies to:

Deseja experimentar o Microsoft Defender para Ponto de Extremidade?Want to experience Microsoft Defender for Endpoint? Inscreva-se para uma avaliação gratuita.Sign up for a free trial.

A proteção de exploração fornece proteções avançadas para aplicativos que o Pro de aplicar depois que o desenvolvedor compilou e distribuiu o software.Exploit protection provides advanced protections for applications that the IT Pro can apply after the developer has compiled and distributed the software.

Este artigo ajuda você a entender como funciona a proteção de exploração, no nível da política e no nível de mitigação individual, para ajudá-lo a criar e aplicar políticas de Proteção de Exploração com êxito.This article helps you understand how exploit protection works, both at the policy level and at the individual mitigation level, to help you successfully build and apply Exploit Protection policies.

Como as mitigações são aplicadasHow mitigations are applied

As mitigações do Exploit Protection são aplicadas por aplicativo.Exploit Protection mitigations are applied per application.

As mitigações são configuradas por meio de uma entrada do Registro para cada programa para o que você configura proteções.Mitigations are configured via a registry entry for each program that you configure protections for. Essas configurações são armazenadas na entrada do Registro MitigationOptions para cada programa (HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution Options \ ImageFileName \ MitigationOptions).These settings are stored in the MitigationOptions registry entry for each program (HKEY_LOCAL_MACHINE \ SOFTWARE \ Microsoft \ Windows NT \ CurrentVersion \ Image File Execution Options \ ImageFileName \ MitigationOptions). Eles fazem efeito quando você reinicia o programa e permanece em vigor até que você os altere e reinicie o programa novamente.They take effect when you restart the program and remain effective until you change them and restart the program again.

Importante

As Opções de Execução de Arquivo de Imagem permitem apenas que você especifique um nome de arquivo ou caminho, e não um número de versão, arquitetura ou qualquer outro diferencial.Image File Execution Options only allows you to specify a file name or path, and not a version number, architecture, or any other differentiator. Tenha cuidado para direcionar mitigações a aplicativos que têm nomes ou caminhos exclusivos, aplicando-os apenas em dispositivos em que você testou essa versão e essa arquitetura do aplicativo.Be careful to target mitigations to apps which have unique names or paths, applying them only on devices where you have tested that version and that architecture of the application.

Se você configurar mitigações de proteção de exploração usando um arquivo de configuração XML, por meio do PowerShell, da Política de Grupo ou do MDM, ao processar esse arquivo de configuração XML, as configurações individuais do Registro serão configuradas para você.If you configure exploit protection mitigations using an XML configuration file, either via PowerShell, Group Policy, or MDM, when processing this XML configuration file, individual registry settings will be configured for you.

Quando a política de distribuição do arquivo XML não for mais imposta, as configurações implantadas por esse arquivo de configuração XML não serão removidas automaticamente.When the policy distributing the XML file is no longer enforced, settings deployed by this XML configuration file will not be automatically removed. Para remover as configurações da Proteção de Exploração, exporte a configuração XML de um dispositivo Windows 10 e implante esse novo arquivo XML.To remove Exploit Protection settings, export the XML configuration from a clean Windows 10 device, and deploy this new XML file. Como alternativa, a Microsoft fornece um arquivo XML como parte das linhas de base Segurança do Windows para redefinir as configurações do Exploit Protection.Alternately, Microsoft provides an XML file as part of the Windows Security Baselines for resetting Exploit Protection settings.

Para redefinir as configurações de proteção de exploração usando o PowerShell, você pode usar o seguinte comando:To reset exploit protection settings using PowerShell, you could use the following command:

Set-ProcessMitigation -PolicyFilePath EP-reset.xml

A seguir está o EP-reset.xml distribuído com o Segurança do Windows Baselines:Following is the EP-reset.xml distributed with the Windows Security Baselines:

<?xml version="1.0" encoding="UTF-8"?>
<MitigationPolicy>
  <AppConfig Executable="ONEDRIVE.EXE">
    <DEP OverrideDEP="false" />
    <ASLR OverrideRelocateImages="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
    <ImageLoad OverrideBlockRemoteImages="false" />
  </AppConfig>
  <AppConfig Executable="firefox.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
  </AppConfig>
  <AppConfig Executable="fltldr.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
    <ImageLoad OverrideBlockRemoteImages="false" />
    <ChildProcess OverrideChildProcess="false" />
  </AppConfig>
  <AppConfig Executable="GROOVE.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
    <ImageLoad OverrideBlockRemoteImages="false" />
    <ChildProcess OverrideChildProcess="false" />
  </AppConfig>
  <AppConfig Executable="Acrobat.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="AcroRd32.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="chrome.exe">
    <DEP OverrideDEP="false" />
  </AppConfig>
  <AppConfig Executable="EXCEL.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="iexplore.exe">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="INFOPATH.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="java.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="javaw.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="javaws.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="LYNC.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="MSACCESS.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="MSPUB.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="OIS.EXE">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="OUTLOOK.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="plugin-container.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="POWERPNT.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="PPTVIEW.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="VISIO.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="VPREVIEW.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="WINWORD.EXE">
    <DEP OverrideDEP="false" />
    <ASLR ForceRelocateImages="true" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="wmplayer.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
  <AppConfig Executable="wordpad.exe">
    <DEP OverrideDEP="false" />
    <Payload OverrideEnableExportAddressFilter="false" OverrideEnableExportAddressFilterPlus="false" OverrideEnableImportAddressFilter="false" OverrideEnableRopStackPivot="false" OverrideEnableRopCallerCheck="false" OverrideEnableRopSimExec="false" />
  </AppConfig>
</MitigationPolicy>

Referência de mitigaçãoMitigation Reference

As seções a seguir detalham as proteções fornecidas por cada mitigação de proteção de exploração, as considerações de compatibilidade para a mitigação e as opções de configuração disponíveis.The following sections detail the protections provided by each exploit protection mitigation, the compatibility considerations for the mitigation, and the configuration options available.

Proteção de código arbitrárioArbitrary code guard

DescriçãoDescription

O proteção de código arbitrário ajuda a proteger contra um invasor mal-intencionado carregando o código de sua escolha na memória por meio de uma vulnerabilidade de segurança de memória e podendo executar esse código.Arbitrary code guard helps protect against a malicious attacker loading the code of their choice into memory through a memory safety vulnerability and being able to execute that code.

O proteção de código arbitrário protege um aplicativo contra a execução de código gerado dinamicamente (código que não é carregado, por exemplo, do exe em si ou de uma dll).Arbitrary code guard protects an application from executing dynamically generated code (code that is not loaded, for example, from the exe itself or a dll). O code guard arbitrário funciona impedindo que a memória seja marcada como executável.Arbitrary code guard works by preventing memory from being marked as executable. Quando um aplicativo tenta alocar memória,verificamos os sinalizadores de proteção.When an application attempts to allocate memory, we check the protection flags. (A memória pode ser alocada com sinalizadores de proteção de leitura, gravação e/ou execução.) Se a alocação tentar incluir o sinalizador de proteção de execução, a alocação de memória falhará e retornará um código de erro (STATUS_DYNAMIC_CODE_BLOCKED).(Memory can be allocated with read, write, and/or execute protection flags.) If the allocation attempts to include the execute protection flag, then the memory allocation fails and returns an error code (STATUS_DYNAMIC_CODE_BLOCKED). Da mesma forma, se um aplicativo tentar alterar os sinalizadores de proteção da memória que já foram alocados e inclui o sinalizador de proteção de execução, a alteração de permissão falhará e retornará um código de erro (STATUS_DYNAMIC_CODE_BLOCKED).Similarly, if an application attempts to change the protection flags of memory that has already been allocated and includes the execute protection flag, then the permission change fails and returns an error code (STATUS_DYNAMIC_CODE_BLOCKED).

Ao impedir que o sinalizador de execução seja definido, o recurso de prevenção de execução de dados do Windows 10 pode, em seguida, proteger contra o ponteiro de instrução que está sendo definido para essa memória e executar esse código.By preventing the execute flag from being set, the data execution prevention feature of Windows 10 can then protect against the instruction pointer being set to that memory and running that code.

Considerações sobre compatibilidadeCompatibility considerations

O code guard arbitrário impede a alocação de qualquer memória como executável, o que apresenta um problema de compatibilidade com abordagens como compiladores just-in-time (JIT).Arbitrary code guard prevents allocating any memory as executable, which presents a compatibility issue with approaches such as Just-in-Time (JIT) compilers. A maioria dos navegadores modernos, por exemplo, compila JavaScript em código nativo para otimizar o desempenho.Most modern browsers, for example, will compile JavaScript into native code in order to optimize performance. Para dar suporte a essa mitigação, eles precisarão ser rearmados para mover a compilação JIT para fora do processo protegido.In order to support this mitigation, they will need to be rearchitected to move the JIT compilation outside of the protected process. Outros aplicativos cujo design gera dinamicamente código a partir de scripts ou outros idiomas intermediários serão incompatíveis com essa mitigação.Other applications whose design dynamically generates code from scripts or other intermediate languages will be similarly incompatible with this mitigation.

Opções de configuraçãoConfiguration options

Permitir a aceitação de threads - Você pode configurar a mitigação para permitir que um thread individual opte por essa proteção.Allow thread opt-out - You can configure the mitigation to allow an individual thread to opt-out of this protection. O desenvolvedor deve ter escrito o aplicativo com reconhecimento dessa mitigação e ter chamado a API SetThreadInformation com o parâmetro ThreadInformation definido como ThreadDynamicCodePolicy para poder executar o código dinâmico neste thread.The developer must have written the application with awareness of this mitigation, and have called the SetThreadInformation API with the ThreadInformation parameter set to ThreadDynamicCodePolicy in order to be allowed to execute dynamic code on this thread.

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Defender para o Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Defender for Endpoint.

Bloquear imagens de baixa integridadeBlock low integrity images

DescriçãoDescription

Bloquear imagens de baixa integridade impede que o aplicativo carregue arquivos que não sejam de confiança, normalmente porque eles foram baixados da Internet de um navegador em áreas de segurança.Block low integrity images prevents the application from loading files that are untrusted, typically because they have been downloaded from the internet from a sandboxed browser.

Essa mitigação bloqueará as cargas de imagem se a imagem tiver uma Ace (Entrada de Controle de Acesso) que conceda acesso a processos de Baixa IL e que não tenha um ACE de rótulo de confiança.This mitigation will block image loads if the image has an Access Control Entry (ACE) which grants access to Low IL processes and which does not have a trust label ACE. Ele é implementado pelo gerenciador de memória, que impede que o arquivo seja mapeado na memória.It is implemented by the memory manager, which blocks the file from being mapped into memory. Se um aplicativo tentar mapear uma imagem de baixa integridade, ele disparará um STATUS_ACCESS_DENIED erro.If an application attempts to map a low integrity image, it will trigger a STATUS_ACCESS_DENIED error. Para obter detalhes sobre como funcionam os níveis de integridade, consulte Controle obrigatório de integridade.For details on how integrity levels work, see Mandatory Integrity Control.

Considerações sobre compatibilidadeCompatibility considerations

Bloquear imagens de baixa integridade impedirá que o aplicativo carregue arquivos baixados da Internet.Block low integrity images will prevent the application from loading files that were downloaded from the internet. Se o fluxo de trabalho do aplicativo exigir o carregamento de imagens baixadas, você vai querer garantir que elas sejam baixadas de um processo de confiança mais alta ou sejam explicitamente rotuladas para aplicar essa mitigação.If your application workflow requires loading images that are downloaded, you will want to ensure that they are downloaded from a higher-trust process, or are explicitly relabeled in order to apply this mitigation.

Opções de configuraçãoConfiguration options

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Bloquear imagens remotasBlock remote images

DescriçãoDescription

O bloqueio de imagens remotas ajuda a impedir que o aplicativo carrega arquivos hospedados em um dispositivo remoto, como um compartilhamento UNC.Blocking remote images helps to prevent the application from loading files that are hosted on a remote device, such as a UNC share. O bloqueio de imagens remotas ajuda a proteger contra carregar binários na memória que estão em um dispositivo externo controlado pelo invasor.Blocking remote images helps protect against loading binaries into memory that are on an external device controlled by the attacker.

Essa mitigação bloqueará cargas de imagem se a imagem for determinada em um dispositivo remoto.This mitigation will block image loads if the image is determined to be on a remote device. Ele é implementado pelo gerenciador de memória, que impede que o arquivo seja mapeado na memória.It is implemented by the memory manager, which blocks the file from being mapped into memory. Se um aplicativo tentar mapear um arquivo remoto, ele disparará um STATUS_ACCESS_DENIED erro.If an application attempts to map a remote file, it will trigger a STATUS_ACCESS_DENIED error.

Considerações sobre compatibilidadeCompatibility considerations

Bloquear imagens remotas impedirá que o aplicativo carrega imagens de dispositivos remotos.Block remote images will prevent the application from loading images from remote devices. Se o aplicativo carregar arquivos ou plug-ins de dispositivos remotos, ele não será compatível com essa mitigação.If your application loads files or plug-ins from remote devices, then it will not be compatible with this mitigation.

Opções de configuraçãoConfiguration options

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Bloquear fontes não confiançasBlock untrusted fonts

DescriçãoDescription

O bloqueio de fontes nãotrudas reduz o risco de uma falha na análise de fonte que leva o invasor a executar código no dispositivo.Block untrusted fonts mitigates the risk of a flaw in font parsing leading to the attacker being able to run code on the device. Somente fontes instaladas no diretório windows\fonts serão carregadas para processamento pela GDI.Only fonts that are installed into the windows\fonts directory will be loaded for processing by GDI.

Essa mitigação é implementada no GDI, que valida o local do arquivo.This mitigation is implemented within GDI, which validates the location of the file. Se o arquivo não estiver no diretório de fontes do sistema, a fonte não será carregada para análise e essa chamada falhará.If the file is not in the system fonts directory, the font will not be loaded for parsing and that call will fail.

Essa mitigação é além da mitigação interna fornecida no Windows 10 1607 e posterior, que move a análise de fonte para fora do kernel e para um contêiner de aplicativo no modo de usuário.This mitigation is in addition to the built-in mitigation provided in Windows 10 1607 and later, which moves font parsing out of the kernel and into a user-mode app container. Qualquer exploração baseada na análise de fonte, como resultado, acontece em um contexto isolado e em áreas de áreas de risco, o que reduz significativamente o risco.Any exploit based on font parsing, as a result, happens in a sandboxed and isolated context, which reduces the risk significantly. Para obter detalhes sobre essa mitigação, consulte o blog Hardening Windows 10 with zero-day exploit mitigations.For details on this mitigation, see the blog Hardening Windows 10 with zero-day exploit mitigations.

Considerações sobre compatibilidadeCompatibility considerations

O uso mais comum de fontes fora do diretório de fontes do sistema é com fontes da Web.The most common use of fonts outside of the system fonts directory is with web fonts. Os navegadores modernos, como Microsoft Edge, usam DirectWrite em vez de GDI e não são afetados.Modern browsers, such as Microsoft Edge, use DirectWrite instead of GDI, and are not impacted. No entanto, navegadores herdados, como o Internet Explorer 11 (e o modo IE no novo Microsoft Edge) podem ser afetados, especialmente com aplicativos como o Office 365, que usam glifos de fonte para exibir a interface do usuário.However, legacy browsers, such as Internet Explorer 11 (and IE mode in the new Microsoft Edge) can be impacted, particularly with applications such as Office 365, which use font glyphs to display UI.

Opções de configuraçãoConfiguration options

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Proteção de integridade de códigoCode integrity guard

DescriçãoDescription

O Code integrity guard garante que todos os binários carregados em um processo sejam assinados digitalmente pela Microsoft.Code integrity guard ensures that all binaries loaded into a process are digitally signed by Microsoft. O Code integrity guard inclui assinaturas WHQL (Windows Hardware Quality Labs), o que permitirá que drivers aprovados pelo WHQL executem dentro do processo.Code integrity guard includes WHQL (Windows Hardware Quality Labs) signatures, which will allow WHQL-approved drivers to run within the process.

Essa mitigação é implementada no gerenciador de memória, o que impede que o binário seja mapeado na memória.This mitigation is implemented within the memory manager, which blocks the binary from being mapped into memory. Se você tentar carregar um binário não assinado pela Microsoft, o manger de memória retornará o erro STATUS_INVALID_IMAGE_HASH.If you attempt to load a binary that is not signed by Microsoft, the memory manger will return the error STATUS_INVALID_IMAGE_HASH. Ao bloquear no nível do gerenciador de memória, isso impede que binários carregados pelo processo e binários injetados no processo.By blocking at the memory manager level, this prevents both binaries loaded by the process and binaries injected into the process.

Considerações sobre compatibilidadeCompatibility considerations

Essa mitigação bloqueia especificamente qualquer binário que não seja assinado pela Microsoft.This mitigation specifically blocks any binary that is not signed by Microsoft. Dessa forma, ele será incompatível com a maioria dos softwares de terceiros, a menos que esse software seja distribuído pelo Microsoft Store e a opção de permitir o carregamento de imagens assinadas pelo Microsoft Store esteja selecionada.As such, it will be incompatible with most third-party software, unless that software is distributed by (and digitally signed by) the Microsoft Store, and the option to allow loading of images signed by the Microsoft Store is selected.

Opções de configuraçãoConfiguration options

Também permita o carregamento de imagens assinadas pelo Microsoft Store - Os aplicativos distribuídos pelo Microsoft Store serão assinados digitalmente pelo Microsoft Store e adicionar essa configuração permitirá que binários que passaram pelo processo de certificação da loja sejam carregados pelo aplicativo.Also allow loading of images signed by Microsoft Store - Applications that are distributed by the Microsoft Store will be digitally signed by the Microsoft Store, and adding this configuration will allow binaries that have gone through the store certification process to be loaded by the application.

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Proteção de fluxo de controle (CFG)Control flow guard (CFG)

DescriçãoDescription

O CfG reduz o risco de invasores usarem vulnerabilidades de corrupção de memória protegendo chamadas de função indireta.Control flow guard (CFG) mitigates the risk of attackers using memory corruption vulnerabilities by protecting indirect function calls. Por exemplo, um invasor pode usuária de uma vulnerabilidade de estouro de buffer para substituir a memória que contém um ponteiro de função e substituir esse ponteiro de função por um ponteiro para o código executável de sua escolha (que também pode ter sido injetado no programa).For example, an attacker may user a buffer overflow vulnerability to overwrite memory containing a function pointer, and replace that function pointer with a pointer to executable code of their choice (which may also have been injected into the program).

Essa mitigação é fornecida injetando outra verificação no momento da compilação.This mitigation is provided by injecting another check at compile time. Antes de cada chamada de função indireta, outras instruções são adicionadas que verificam se o destino é um destino de chamada válido antes de ser chamado.Before each indirect function call, another instructions are added which verify that the target is a valid call target before it is called. Se o destino não for um destino de chamada válido, o aplicativo será encerrado.If the target is not a valid call target, then the application is terminated. Dessa forma, somente aplicativos compilados com suporte a CFG podem se beneficiar dessa mitigação.As such, only applications that are compiled with CFG support can benefit from this mitigation.

A verificação de um destino válido é fornecida pelo Windows kernel.The check for a valid target is provided by the Windows kernel. Quando os arquivos executáveis são carregados, os metadados para destinos de chamada indireta são extraídos no tempo de carregamento e marcados como destinos de chamada válidos.When executable files are loaded, the metadata for indirect call targets is extracted at load time and marked as valid call targets. Além disso, quando a memória é alocada e marcada como executável (como para código gerado), esses locais de memória também são marcados como destinos de chamada válidos, para dar suporte a mecanismos como compilação JIT.Additionally, when memory is allocated and marked as executable (such as for generated code), these memory locations are also marked as valid call targets, to support mechanisms such as JIT compilation.

Considerações sobre compatibilidadeCompatibility considerations

Como os aplicativos devem ser compilados para dar suporte ao CFG, eles declaram implicitamente sua compatibilidade com ele.Since applications must be compiled to support CFG, they implicitly declare their compatibility with it. A maioria dos aplicativos, portanto, deve trabalhar com essa mitigação habilitada.Most applications, therefore, should work with this mitigation enabled. Como essas verificações são compiladas no binário, a configuração que você pode aplicar é simplesmente desabilitar verificações no kernel Windows.Because these checks are compiled into the binary, the configuration you can apply is merely to disable checks within the Windows kernel. Em outras palavras, a mitigação está em ação por padrão, mas você pode configurar o kernel Windows para sempre retornar "sim" se mais tarde determinar que há um problema de compatibilidade que o desenvolvedor de aplicativos não descobriu em seus testes, o que deve ser raro.In other words, the mitigation is on by default, but you can configure the Windows kernel to always return "yes" if you later determine that there is a compatibility issue that the application developer did not discover in their testing, which should be rare.

Opções de configuraçãoConfiguration options

Use CFG estrito - No modo estrito, todos os binários carregados no processo devem ser compilados para o Control Flow Guard (ou não têm código executável neles - como dlls de recurso) para serem carregados.Use strict CFG - In strict mode, all binaries loaded into the process must be compiled for Control Flow Guard (or have no executable code in them - such as resource dlls) in order to be loaded.

Observação

O control flow guard não tem modo de auditoria.Control flow guard has no audit mode. Binários são compilados com essa mitigação habilitada.Binaries are compiled with this mitigation enabled.

Prevenção de Execução de Dados (DEP)Data Execution Prevention (DEP)

DescriçãoDescription

A PREVENÇÃO de execução de dados (DEP) impede que a memória que não foi alocada explicitamente como executável seja executada.Data execution prevention (DEP) prevents memory that was not explicitly allocated as executable from being executed. A DEP ajuda a proteger contra um invasor que injeta código mal-intencionado no processo, como por meio de um estouro de buffer e, em seguida, executando esse código.DEP helps protect against an attacker injecting malicious code into the process, such as through a buffer overflow, and then executing that code.

Se você tentar definir o ponteiro de instrução para um endereço de memória não marcado como executável, o processador lançará uma exceção (violação de proteção geral), fazendo com que o aplicativo falha.If you attempt to set the instruction pointer to a memory address not marked as executable, the processor will throw an exception (general-protection violation), causing the application to crash.

Considerações sobre compatibilidadeCompatibility considerations

Todos os executáveis x64, ARM e ARM-64 têm o DEP habilitado por padrão e não podem ser desabilitados.All x64, ARM, and ARM-64 executables have DEP enabled by default, and it cannot be disabled. Como um aplicativo nunca será executado sem a DEP, a compatibilidade é assumida.Since an application will have never been executed without DEP, compatibility is assumed.

Todos os binários x86 (32 bits) têm o DEP habilitado por padrão, mas o DEP pode ser desabilitado por processo.All x86 (32-bit) binaries have DEP enabled by default, but DEP can be disabled per process. Alguns aplicativos antigos herdáveis, normalmente aplicativos desenvolvidos antes Windows XP SP2, podem não ser compatíveis com o DEP.Some old legacy applications, typically applications developed prior to Windows XP SP2, might not be compatible with DEP. Esses aplicativos normalmente geram código dinamicamente (por exemplo, compilação JIT) ou link para bibliotecas mais antigas (como versões mais antigas do ATL) que geram código dinamicamente.Such applications typically generate code dynamically (for example, JIT compiling) or link to older libraries (such as older versions of ATL) which dynamically generate code.

Opções de configuraçãoConfiguration options

Habilitar a emulação thunk atl - Essa opção de configuração desabilita a emulação thunk atl.Enable ATL Thunk emulation - This configuration option disables ATL Thunk emulation. A ATL, a ActiveX de modelos, foi projetada para ser o mais pequeno e rápido possível.ATL, the ActiveX Template Library, is designed to be as small and fast as possible. Para reduzir o tamanho binário, ele usaria uma técnica chamada thunking.In order to reduce binary size, it would use a technique called thunking. O thunking normalmente é pensado para interagir entre aplicativos de 32 e 16 bits, mas não há componentes de 16 bits para ATL aqui.Thunking is typically thought of for interacting between 32-bit and 16-bit applications, but there are no 16-bit components to ATL here. Em vez disso, para otimizar o tamanho binário, a ATL armazenará o código do computador na memória que não esteja alinhado a palavras (criando um binário menor) e invocará esse código diretamente.Rather, in order to optimize for binary size, ATL will store machine code in memory that is not word-aligned (creating a smaller binary), and then invoke that code directly. Os componentes ATL compilados com Visual Studio 7.1 ou anteriores (Visual Studio 2003) não alocam essa memória como executável - a emulação thunk resolve esse problema de compatibilidade.ATL components compiled with Visual Studio 7.1 or earlier (Visual Studio 2003) do not allocate this memory as executable - thunk emulation resolves that compatibility issue. Os aplicativos que têm um modelo de extensão binária (como o Internet Explorer 11) geralmente precisarão ter a emulação thunk ATL habilitada.Applications that have a binary extension model (such as Internet Explorer 11) will often need to have ATL Thunk emulation enabled.

Desabilitar pontos de extensãoDisable extension points

DescriçãoDescription

Essa mitigação desabilita vários pontos de extensão de um aplicativo, que podem ser usados para estabelecer persistência ou elevar privilégios de conteúdo mal-intencionado.This mitigation disables various extension points for an application, which might be used to establish persistence or elevate privileges of malicious content.

Isso inclui:This includes:

  • AppInit DLLs - Sempre que um processo é iniciado, o sistema carrega a DLL especificada para o contexto do processo recém-iniciado antes de chamar sua função de ponto de entrada.AppInit DLLs - Whenever a process starts, the system will load the specified DLL into to context of the newly started process before calling its entry point function. Detalhes sobre DLLs appInit podem ser encontrados aqui.Details on AppInit DLLs can be found here. Com essa mitigação aplicada, as DLLs appInit não são carregadas.With this mitigation applied, AppInit DLLs are not loaded. A partir Windows 7, as DLLs appInit precisam ser assinadas digitalmente, conforme descrito aqui.Beginning with Windows 7, AppInit DLLs need to be digitally signed, as described here. Além disso, começando com Windows 8, as DLLs appInit não serão carregadas se SecureBoot estiver habilitado, conforme descrito aqui.Additionally, beginning with Windows 8, AppInit DLLs will not be loaded if SecureBoot is enabled, as described here.
  • IMEs herdáveis - Um Editor de Método de Entrada (IME) permite que um usuário digite texto em um idioma que tenha mais caracteres do que pode ser representado em um teclado.Legacy IMEs - An Input Method Editor (IME) allows a user to type text in a language that has more characters than can be represented on a keyboard. Terceiros podem criar IMEs.Third parties are able to create IMEs. Um IME mal-intencionado pode obter credenciais ou outras informações confidenciais dessa captura de entrada.A malicious IME might obtain credentials or other sensitive information from this input capture. Algumas IMEs, conhecidas como IMEs Herdadas, funcionarão apenas em aplicativos da área de trabalho Windows e não em aplicativos UWP.Some IMEs, referred to as Legacy IMEs, will only work on Windows Desktop apps, and not UWP apps. Essa mitigação também impedirá que esse IME herdado seja carregado no aplicativo Windows Desktop especificado.This mitigation will also prevent this legacy IME from loading into the specified Windows Desktop app.
  • Windows Event Hooks - Um aplicativo pode chamar a API SetWinEventHook para registrar interesse em um evento que está ocorrendo.Windows Event Hooks - An application can call the SetWinEventHook API to register interest in an event taking place. Uma DLL é especificada e pode ser injetada no processo.A DLL is specified and can be injected into the process. Essa mitigação força o gancho a ser postado no processo de registro em vez de executar no processo por meio de uma DLL injetada.This mitigation forces the hook to be posted to the registering process rather than running in-process through an injected DLL.

Considerações sobre compatibilidadeCompatibility considerations

A maioria desses pontos de extensão são usados com pouca freqüência, portanto, o impacto da compatibilidade é geralmente pequeno, particularmente em um nível de aplicativo individual.Most of these extension points are relatively infrequently used, so compatibility impact is typically small, particularly at an individual application level. A única consideração é se os usuários estão usando IMEs Herdadas de terceiros que não funcionarão com o aplicativo protegido.The one consideration is if users are using third-party Legacy IMEs that will not work with the protected application.

Opções de configuraçãoConfiguration options

Não há opções de configuração para essa mitigação.There are no configuration options for this mitigation.

Observação

Desabilitar pontos de extensão não tem modo de auditoria.Disable extension points has no audit mode.

Desabilitar chamadas do sistema Win32kDisable Win32k system calls

DescriçãoDescription

Win32k.sys fornece uma ampla superfície de ataque para um invasor.Win32k.sys provides a broad attack surface for an attacker. Como um componente do modo kernel, ele é frequentemente direcionado como um vetor de escape para aplicativos que são áreas de segurança.As a kernel-mode component, it is frequently targeted as an escape vector for applications that are sandboxed. Essa mitigação impede chamadas em win32k.sys bloqueando que um thread se converta em um thread de GUI, que recebe acesso para invocar funções win32k.This mitigation prevents calls into win32k.sys by blocking a thread from converting itself into a GUI thread, which is then given access to invoke Win32k functions. Um thread não é GUI quando criado, mas convertido na primeira chamada para win32k.sys ou por meio de uma chamada de API para IsGuiThread.A thread is non-GUI when created, but converted on first call to win32k.sys, or through an API call to IsGuiThread.

Considerações sobre compatibilidadeCompatibility considerations

Essa mitigação foi projetada para processos que são processos não da interface do usuário dedicados.This mitigation is designed for processes that are dedicated non-UI processes. Por exemplo, muitos navegadores modernos usarão o isolamento do processo e incorporarão processos que não são da interface do usuário.For example, many modern browsers will use process isolation and incorporate non-UI processes. Qualquer aplicativo que exibe uma GUI usando um único processo será afetado por essa mitigação.Any application that displays a GUI using a single process will be impacted by this mitigation.

Opções de configuraçãoConfiguration options

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Não permitir processos filhoDo not allow child processes

DescriçãoDescription

Essa mitigação impede que um aplicativo cria novos aplicativos filho.This mitigation prevents an application from creating new child applications. Uma técnica comum usada por adversários é iniciar um processo confiável no dispositivo com entrada mal-intencionada (um ataque de "vida fora da terra"), que geralmente exige o lançamento de outro aplicativo no dispositivo.A common technique used by adversaries is to initiate a trusted process on the device with malicious input (a "living off the land" attack), which often requires launching another application on the device. Se não houver motivos legítimos para um aplicativo iniciar um processo filho, essa mitigação atenua esse possível vetor de ataque.If there are no legitimate reasons why an application would launch a child process, this mitigation mitigates that potential attack vector. A mitigação é aplicada definindo uma propriedade no token de processo, que bloqueia a criação de um token para o processo filho com a mensagem de erro STATUS_CHILD_PROCESS_BLOCKED.The mitigation is applied by setting a property on the process token, which blocks creating a token for the child process with the error message STATUS_CHILD_PROCESS_BLOCKED.

Considerações sobre compatibilidadeCompatibility considerations

Se o aplicativo iniciar aplicativos filho por qualquer motivo, como suporte a hiperlinks que iniciam um navegador ou um navegador externo, ou que iniciam outros utilitários no computador, essa funcionalidade será interrompida com essa mitigação aplicada.If your application launches child applications for any reason, such as supporting hyperlinks that launch a browser or an external browser, or which launch other utilities on the computer, this functionality will be broken with this mitigation applied.

Opções de configuraçãoConfiguration options

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Exportar filtragem de endereçosExport address filtering

DescriçãoDescription

A filtragem de endereços de exportação (EAF) reduz o risco de código mal-intencionado olhando para a tabela de endereços de exportação de todos os módulos carregados para encontrar módulos que contenham APIs úteis para seu ataque.Export address filtering (EAF) mitigates the risk of malicious code looking at the export address table of all loaded modules to find modules that contain useful APIs for their attack. Essa é uma tática comum usada pelo shellcode.This is a common tactic used by shellcode. Para reduzir o risco de tal ataque, essa mitigação protege três módulos comumente atacados:In order to mitigate the risk of such an attack, this mitigation protects three commonly attacked modules:

  • ntdll.dllntdll.dll
  • kernelbase.dllkernelbase.dll
  • kernel32.dllkernel32.dll

A mitigação protege a página de memória no [diretório de exportação que aponta para a tabela de endereços de exportação.The mitigation protects the memory page in the [export directory that points to the export address table. Esta página de memória terá a proteção PAGE_GUARD aplicada a ela.This memory page will have the PAGE_GUARD protection applied to it. Quando alguém tentar acessar essa memória, ela gerará uma STATUS_GUARD_PAGE_VIOLATION.When someone tries to access this memory, it will generate a STATUS_GUARD_PAGE_VIOLATION. A mitigação lida com essa exceção e, se a instrução de acesso não passar na validação, o processo será encerrado.The mitigation handles this exception, and if the accessing instruction doesn't pass validation, the process will be terminated.

Considerações sobre compatibilidadeCompatibility considerations

Essa mitigação é principalmente um problema para aplicativos como depurador, aplicativos em áreas de segurança, aplicativos que usam DRM ou aplicativos que implementam a tecnologia anti-depuração.This mitigation is primarily an issue for applications such as debuggers, sandboxed applications, applications using DRM, or applications that implement anti-debugging technology.

Opções de configuraçãoConfiguration options

Validar o acesso para módulos que são comumente abusadas por explorações - Essa opção, também conhecida como EAF+, adiciona proteções para outros módulos comumente atacados:Validate access for modules that are commonly abused by exploits - This option, also known as EAF+, adds protections for other commonly attacked modules:

  • mshtml.dll
  • flash*.ocx
  • jscript*.ocx
  • vbscript.dll
  • vgx.dll
  • mozjs.dll
  • xul.dll
  • acrord32.dll
  • acrofx32.dll
  • acroform.api

Além disso, habilitando o EAF+, essa mitigação adiciona a proteção PAGE_GUARD à página que contém o header "MZ", os dois primeiros bytes do header do DOSem um arquivo PE, que é outro aspecto do conteúdo de memória conhecido que o shellcode pode procurar para identificar módulos potencialmente de interesse na memória.Additionally, by enabling EAF+, this mitigation adds the PAGE_GUARD protection to the page containing the "MZ" header, the first two bytes of the DOS header in a PE file, which is another aspect of known memory content which shellcode can look for to identify modules potentially of interest in memory.

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Forçar a randomização para imagens (ASLR obrigatória)Force randomization for images (Mandatory ASLR)

DescriçãoDescription

A Randomização de Layout de Espaço de Endereço (ASLR) reduz o risco de um invasor usar seu conhecimento do layout de memória do sistema para executar um código que já está presente na memória do processo e já marcado como executável.Address Space Layout Randomization (ASLR) mitigates the risk of an attacker using their knowledge of the memory layout of the system in order to execute code that is already present in process memory and already marked as executable. Isso pode reduzir o risco de um invasor usar técnicas como ataques de retorno para libc, onde o adversário define o contexto e modifica o endereço de retorno para executar o código existente com contexto que se adéque à finalidade do adversário.This can mitigate the risk of an attacker using techniques such as return-to-libc attacks, where the adversary sets the context and then modifies the return address to execute existing code with context that suits the adversary's purpose.

O ASLR obrigatório força uma rebase de todas as DLLs dentro do processo.Mandatory ASLR forces a rebase of all DLLs within the process. Um desenvolvedor pode habilitar o ASLR usando a opção linker /DYNAMICBASE e essa mitigação tem o mesmo efeito.A developer can enable ASLR using the /DYNAMICBASE linker option, and this mitigation has the same effect.

Quando o gerenciador de memória estiver mapeando a imagem para o processo, o ASLR obrigatório irá rebaixar à força DLLs e EXEs que não optaram por ASLR.When the memory manager is mapping in the image into the process, Mandatory ASLR will forcibly rebase DLLs and EXEs that have not opted in to ASLR. Observe, no entanto, que esse rebasamento não tem entropia e, portanto, pode ser colocado em um local previsível na memória.Note, however, that this rebasing has no entropy, and can therefore be placed at a predictable location in memory. Para localização rebaixada e aleatória de binários, essa mitigação deve ser emparelhada com alocações de memória Randomize (ASLRinferior para cima) .For rebased and randomized location of binaries, this mitigation should be paired with Randomize memory allocations (Bottom-up ASLR).

Considerações sobre compatibilidadeCompatibility considerations

Esse impacto de compatibilidade do ASLR normalmente é restrito a aplicativos mais antigos que foram construídos usando compiladores que fizeram suposições sobre o endereço base de um arquivo binário ou despojaram informações de realocação base.This compatibility impact of ASLR is typically constrained to older applications that were built using compilers that made assumptions about the base address of a binary file or have stripped out base relocation information. Isso pode levar a erros imprevisíveis à medida que o fluxo de execução tenta ir para o local esperado, em vez do local real na memória.This can lead to unpredictable errors as the execution flow attempts to jump to the expected, rather than the actual, location in memory.

Opções de configuraçãoConfiguration options

Não permitir imagens despojadas - Essa opção bloqueia o carregamento de imagens que tiveram as informações de realocação despojadas.Do not allow stripped images - This option blocks the loading of images that have had relocation information stripped. O formato de arquivo WINDOWS PE contém endereços absolutos, e o compilador também gera uma [tabela de realocação base que o carregador pode usar para encontrar todas as referências de memória relativas e seu deslocamento, para que possam ser atualizadas se o binário não carregar no endereço base preferencial.The Windows PE file format contains absolute addresses, and the compiler also generates a [base relocation table that the loader can use to find all relative memory references and their offset, so they can be updated if the binary does not load at its preferred base address. Alguns aplicativos mais antigos retiram essas informações em builds de produção e, portanto, esses binários não podem ser rebasados.Some older applications strip out this information in production builds, and therefore these binaries cannot be rebased. Essa mitigação impede que esses binários são carregados (em vez de permitir que eles carreguem no endereço base preferencial).This mitigation blocks such binaries from being loaded (instead of allowing them to load at their preferred base address).

Observação

Forçar a randomização para imagens (ASLR obrigatória) não tem modo de auditoria.Force randomization for images (Mandatory ASLR) has no audit mode.

Importar filtragem de endereços (IAF)Import address filtering (IAF)

DescriçãoDescription

A mitigação de filtragem de endereços de importação (IAF) ajuda a reduzir o risco de um adversário alterar o fluxo de controle de um aplicativo modificando a tabela de endereços de importação (IAT) para redirecionar para o código arbitrário da escolha do invasor quando essa função for chamada.The import address filtering (IAF) mitigation helps mitigate the risk of an adversary changing the control flow of an application by modifying the import address table (IAT) to redirect to arbitrary code of the attacker's choice when that function is called. Um invasor pode usar essa abordagem para seqüestrar o controle ou interceptar, inspecionar e potencialmente bloquear chamadas para APIs confidenciais.An attacker could use this approach to hijack control, or to intercept, inspect, and potentially block calls to sensitive APIs.

As páginas de memória para todas as APIs protegidas terão a proteção PAGE_GUARD aplicada a elas.The memory pages for all protected APIs will have the PAGE_GUARD protection applied to them. Quando alguém tentar acessar essa memória, ela gerará uma STATUS_GUARD_PAGE_VIOLATION.When someone tries to access this memory, it will generate a STATUS_GUARD_PAGE_VIOLATION. A mitigação lida com essa exceção e, se a instrução de acesso não passar na validação, o processo será encerrado.The mitigation handles this exception, and if the accessing instruction doesn't pass validation, the process will be terminated.

Essa mitigação protege as SEGUINTES APIs Windows:This mitigation protects the following Windows APIs:

  • GetProcAddress
  • GetProcAddressForCaller
  • LoadLibraryA
  • LoadLibraryExA
  • LoadLibraryW
  • LoadLibraryExW
  • LdrGetProcedureAddress
  • LdrGetProcedureAddressEx
  • LdrGetProcedureAddressForCaller
  • LdrLoadDll
  • VirtualProtect
  • VirtualProtectEx
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • NtProtectVirtualMemory
  • CreateProcessA
  • CreateProcessW
  • WinExec
  • CreateProcessAsUserA
  • CreateProcessAsUserW
  • GetModuleHandleA
  • GetModuleHandleW
  • RtlDecodePointer
  • DecodePointer

Considerações sobre compatibilidadeCompatibility considerations

Aplicativos legítimos que executam interceptação de API podem ser detectados por essa mitigação e fazer com que alguns aplicativos falham.Legitimate applications that perform API interception may be detected by this mitigation and cause some applications to crash. Exemplos incluem software de segurança e compatibilidade de aplicativos.Examples include security software and application compatibility shims.

Opções de configuraçãoConfiguration options

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Randomize alocações de memória (ASLR de baixo para cima)Randomize memory allocations (Bottom-up ASLR)

DescriçãoDescription

Alocações de memória aleatórias (ASLR de baixo para cima) adiciona entropia a relocações, portanto, sua localização é aleatória e, portanto, menos previsível.Randomize memory allocations (Bottom-up ASLR) adds entropy to relocations, so their location is randomized and therefore less predictable. Essa mitigação exige que o ASLR obrigatório entre em vigor.This mitigation requires Mandatory ASLR to take effect.

O tamanho do espaço de endereço de 32 bits coloca restrições práticas na entropia que podem ser adicionadas e, portanto, os aplicativos de 64 bits dificultam para um invasor adivinhar um local na memória.The size of the 32-bit address space places practical constraints on the entropy that can be added, and therefore 64-bit applications make it more difficult for an attacker to guess a location in memory.

Considerações sobre compatibilidadeCompatibility considerations

A maioria dos aplicativos compatíveis com o ASLR obrigatório (rebasamento) também é compatível com a outra entropia do ASLR de bottom-up.Most applications that are compatible with Mandatory ASLR (rebasing) are also compatible with the other entropy of Bottom-up ASLR. Alguns aplicativos podem ter problemas de truncamento de ponteiro se eles estão salvando ponteiros locais em variáveis de 32 bits (esperando um endereço base abaixo de 4 GB) e, portanto, serão incompatíveis com a opção de alta entropia (que pode ser desabilitada).Some applications may have pointer-truncation issues if they are saving local pointers in 32-bit variables (expecting a base address below 4 GB), and thus will be incompatible with the high entropy option (which can be disabled).

Opções de configuraçãoConfiguration options

Não use alta entropia - essa opção desabilita o uso de ASLR de alta entropia, que adiciona 24 bits de entropia (1 TB de variação) à alocação inferior para aplicativos de 64 bits.Don't use high entropy - this option disables the use of high-entropy ASLR, which adds 24 bits of entropy (1 TB of variance) into the bottom-up allocation for 64-bit applications.

Observação

Alocações de memória aleatórias (ASLR inferior para cima) não tem modo de auditoria.Randomize memory allocations (Bottom-up ASLR) has no audit mode.

Simular execução (SimExec)Simulate execution (SimExec)

DescriçãoDescription

Simular execução (SimExec) é uma mitigação apenas para aplicativos de 32 bits.Simulate execution (SimExec) is a mitigation for 32-bit applications only. Isso ajuda a validar que as chamadas para APIs confidenciais retornarão às funções legítimas do chamador.This helps validate that calls to sensitive APIs will return to legitimate caller functions. Ele faz isso interceptando chamadas em APIs confidenciais e simulando a execução dessas APIs, passeando pelas instruções de idioma de assembly codificado procurando a instrução RET, que deve retornar ao chamador.It does this by intercepting calls into sensitive APIs, and then simulating the execution of those APIs by walking through the encoded assembly language instructions looking for the RET instruction, which should return to the caller. Em seguida, ele inspeciona essa função e anda para trás na memória para encontrar a instrução CALL anterior para determinar se a função e a instrução CALL corresponderam e que a RET não foi interceptada.It then inspects that function and walks backwards in memory to find the preceding CALL instruction to determine whether the function and CALL instruction match, and that the RET hasn't been intercepted.

As APIs interceptadas por essa mitigação são:The APIs intercepted by this mitigation are:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

Se um gadget ROP for detectado, o processo será encerrado.If a ROP gadget is detected, the process is terminated.

Considerações sobre compatibilidadeCompatibility considerations

Aplicativos que executam interceptação de API, especialmente software de segurança, podem causar problemas de compatibilidade com essa mitigação.Applications that perform API interception, particularly security software, can cause compatibility problems with this mitigation.

Essa mitigação é incompatível com a mitigação do Code Guard arbitrário.This mitigation is incompatible with the Arbitrary Code Guard mitigation.

Opções de configuraçãoConfiguration options

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Validar invocação de API (CallerCheck)Validate API invocation (CallerCheck)

DescriçãoDescription

Validar invocação de API (CallerCheck) é uma mitigação para técnicas rop (programação orientada a retorno) que valida que APIs confidenciais foram chamadas de um chamador válido.Validate API invocation (CallerCheck) is a mitigation for return-oriented programming (ROP) techniques that validates that sensitive APIs were called from a valid caller. Essa mitigação inspeciona o endereço de retorno passado e, em seguida, desmonta heuristicamente para trás para encontrar uma chamada acima do endereço de retorno para determinar se o destino da chamada corresponde ao parâmetro passado para a função.This mitigation inspects the passed return address, and then heuristically disassembles backwards to find a call above the return address to determine if the call target matches the parameter passed into the function.

As APIs interceptadas por essa mitigação são:The APIs intercepted by this mitigation are:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

Se um gadget ROP for detectado, o processo será encerrado.If a ROP gadget is detected, the process is terminated.

Considerações sobre compatibilidadeCompatibility considerations

Aplicativos que executam interceptação de API, especialmente software de segurança, podem causar problemas de compatibilidade com essa mitigação.Applications that perform API interception, particularly security software, can cause compatibility problems with this mitigation.

Essa mitigação é incompatível com a mitigação do Code Guard arbitrário.This mitigation is incompatible with the Arbitrary Code Guard mitigation.

Opções de configuraçãoConfiguration options

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Validar cadeias de exceção (SEHOP)Validate exception chains (SEHOP)

DescriçãoDescription

Validar cadeias de exceção (SEHOP) é uma mitigação em relação à técnica de exploração de sobregravações do Manipulador de Exceção Estruturado (SEH).Validate exception chains (SEHOP) is a mitigation against the Structured Exception Handler (SEH) overwrite exploitation technique. O tratamento de exceção estruturado é o processo pelo qual um aplicativo pode pedir para lidar com uma exceção específica.Structured exception handling is the process by which an application can ask to handle a particular exception. Manipuladores de exceção são encadeados juntos, para que, se um manipulador de exceção optar por não manipular uma exceção específica, ele poderá ser passado para o próximo manipulador de exceção na cadeia até que um decida lidar com ela.Exception handlers are chained together, so that if one exception handler chooses not to handle a particular exception, it can be passed on to the next exception handler in the chain until one decides to handle it. Como a lista de manipuladores é dinâmica, ela é armazenada na pilha.Because the list of handler is dynamic, it is stored on the stack. Um invasor pode usar uma vulnerabilidade de estouro de pilha para substituir o manipulador de exceção com um ponteiro para o código de escolha do invasor.An attacker can use a stack overflow vulnerability to then overwrite the exception handler with a pointer to the code of the attacker's choice.

Essa mitigação se baseia no design do SEH, onde cada entrada SEH contém um ponteiro para o manipulador de exceção, bem como um ponteiro para o próximo manipulador na cadeia de exceção.This mitigation relies on the design of SEH, where each SEH entry contains both a pointer to the exception handler, as well as a pointer to the next handler in the exception chain. Essa mitigação é chamada pelo despachante de exceção, que valida a cadeia SEH quando uma exceção é invocada.This mitigation is called by the exception dispatcher, which validates the SEH chain when an exception is invoked. Verifica se:It verifies that:

  • Todos os registros de cadeia de exceção estão dentro dos limites da pilhaAll exception chain records are within the stack boundaries
  • Todos os registros de exceção são alinhadosAll exception records are aligned
  • Nenhum ponteiro do manipulador de exceção está apontando para a pilhaNo exception handler pointers are pointing to the stack
  • Não há ponteiros para trásThere are no backward pointers
  • A cadeia de exceção termina em um manipulador de exceção final conhecidoThe exception chain ends at a known final exception handler

Se essas validações falharem, o tratamento de exceções será anulado e a exceção não será manipulada.If these validations fail, then exception handling is aborted, and the exception will not be handled.

Considerações sobre compatibilidadeCompatibility considerations

Os problemas de compatibilidade com o SEHOP são relativamente raros.Compatibility issues with SEHOP are relatively rare. É incomum para um aplicativo assumir uma dependência de corromper a cadeia de exceção.It's uncommon for an application to take a dependency on corrupting the exception chain. No entanto, alguns aplicativos são afetados pelas alterações sutis no tempo, que podem se manifesto como uma condição de corrida que revela um bug latente de vários threads no aplicativo.However, some applications are impacted by the subtle changes in timing, which may manifest as a race condition that reveals a latent multi-threading bug in the application.

Opções de configuraçãoConfiguration options

Observação

Validar cadeias de exceção (SEHOP) não tem modo de auditoria.Validate exception chains (SEHOP) has no audit mode.

Validar o uso da alçaValidate handle usage

DescriçãoDescription

Validar o uso do identificador é uma mitigação que ajuda a proteger contra um invasor usando uma alça existente para acessar um objeto protegido.Validate handle usage is a mitigation that helps protect against an attacker using an existing handle to access a protected object. Um identificador é uma referência a um objeto protegido.A handle is a reference to a protected object. Se o código do aplicativo estiver fazendo referência a uma alça inválida, isso pode indicar que um adversário está tentando usar uma alça que ele gravou anteriormente (mas qual contagem de referência de aplicativo não estaria ciente).If application code is referencing an invalid handle, that could indicate that an adversary is attempting to use a handle it has previously recorded (but which application reference counting wouldn't be aware of). Se o aplicativo tentar usar um objeto inválido, em vez de simplesmente retornar null, o aplicativo criará uma exceção (STATUS_INVALID_HANDLE).If the application attempts to use an invalid object, instead of simply returning null, the application will raise an exception (STATUS_INVALID_HANDLE).

Essa mitigação é aplicada automaticamente aos aplicativos Windows Store.This mitigation is automatically applied to Windows Store applications.

Considerações sobre compatibilidadeCompatibility considerations

Os aplicativos que não estavam monitorando com precisão as referências de alça e que não estavam envolvendo essas operações em manipuladores de exceção, serão potencialmente afetados por essa mitigação.Applications that were not accurately tracking handle references, and which were not wrapping these operations in exception handlers, will potentially be impacted by this mitigation.

Opções de configuraçãoConfiguration options

Observação

Validar o uso de alça não tem modo de auditoria.Validate handle usage has no audit mode.

Validar a integridade da pilhaValidate heap integrity

DescriçãoDescription

A mitigação de integridade de pilha de validação aumenta o nível de proteção de mitigações de pilha em Windows, fazendo com que o aplicativo seja encerrado se uma corrupção de pilha for detectada.The validate heap integrity mitigation increases the protection level of heap mitigations in Windows, by causing the application to terminate if a heap corruption is detected. As mitigações incluem:The mitigations include:

  • Impedindo que uma alça HEAP seja liberadaPreventing a HEAP handle from being freed
  • Executando outra validação em headers de bloco estendido para alocações de pilhaPerforming another validation on extended block headers for heap allocations
  • Verificar se as alocações de pilha já não estão sinalizadas como em usoVerifying that heap allocations are not already flagged as in-use
  • Adicionar páginas de proteção a grandes alocações, segmentos de heap e subsegments acima de um tamanho mínimoAdding guard pages to large allocations, heap segments, and subsegments above a minimum size

Considerações sobre compatibilidadeCompatibility considerations

Essa mitigação já é aplicada por padrão para aplicativos de 64 bits e para aplicativos de 32 bits destinados Windows Vista ou posterior.This mitigation is already applied by default for 64-bit applications and for 32-bit applications targeting Windows Vista or later. Aplicativos herdado Windows XP ou anteriores são mais em risco, embora os problemas de compatibilidade sejam raros.Legacy applications from Windows XP or earlier are most at-risk, though compatibility issues are rare.

Opções de configuraçãoConfiguration options

Observação

Validar integridade de pilha não tem modo de auditoria.Validate heap integrity has no audit mode.

Validar a integridade da dependência de imagemValidate image dependency integrity

DescriçãoDescription

A mitigação de dependência de imagem valida ajuda a proteger contra ataques que tentam substituir o código para dlls que são vinculados estaticamente por Windows binários.The validate image dependency mitigation helps protect against attacks that attempt to substitute code for dlls that are statically linked by Windows binaries. A técnica de implantação de DLL abusa do mecanismo de pesquisa do carregador para injetar código mal-intencionado, que pode ser usado para obter código mal-intencionado em execução em um contexto elevado.The technique of DLL planting abuses the loader's search mechanism to inject malicious code, which can be used to get malicious code running in an elevated context. Quando o carregador estiver carregando um binário assinado Windows e carregar todas as dlls das que o binário depende, esses binários serão verificados para garantir que eles também sejam assinados digitalmente como Windows binário.When the loader is loading a Windows signed binary, and then loads up any dlls that the binary depends on, these binaries will be verified to ensure that they are also digitally signed as a Windows binary. Se eles falharem na verificação de assinatura, a dll não será carregada e lançará uma exceção, retornando um status de STATUS_INVALID_IMAGE_HASH.If they fail the signature check, the dll will not be loaded, and will throw an exception, returning a status of STATUS_INVALID_IMAGE_HASH.

Considerações sobre compatibilidadeCompatibility considerations

Os problemas de compatibilidade são incomuns.Compatibility issues are uncommon. Os aplicativos que dependem da substituição Windows binários por versões privadas locais serão afetados e também há um pequeno risco de revelar bugs de tempo sutis em aplicativos com vários threads.Applications that depend on replacing Windows binaries with local private versions will be impacted, and there is also a small risk of revealing subtle timing bugs in multi-threaded applications.

Opções de configuraçãoConfiguration options

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Validar a integridade da pilha (StackPivot)Validate stack integrity (StackPivot)

DescriçãoDescription

A mitigação validar a integridade da pilha (StackPivot) ajuda a proteger contra o ataque Pivot de Pilha, um ataque ROP em que um invasor cria uma pilha falsa na memória de pilha e, em seguida, faz o aplicativo voltar para a pilha falsa que controla o fluxo de execução.The validate stack integrity (StackPivot) mitigation helps protect against the Stack Pivot attack, a ROP attack where an attacker creates a fake stack in heap memory, and then tricks the application into returning into the fake stack that controls the flow of execution.

Essa mitigação intercepta muitas Windows APIs e inspeciona o valor do ponteiro da pilha.This mitigation intercepts many Windows APIs, and inspects the value of the stack pointer. Se o endereço do ponteiro da pilha não se enquadrar entre a parte inferior e a parte superior da pilha, um evento será gravado e, se não estiver no modo de auditoria, o processo será encerrado.If the address of the stack pointer does not fall between the bottom and the top of the stack, then an event is recorded and, if not in audit mode, the process will be terminated.

As APIs interceptadas por essa mitigação são:The APIs intercepted by this mitigation are:

  • LoadLibraryA
  • LoadLibraryW
  • LoadLibraryExA
  • LoadLibraryExW
  • LdrLoadDll
  • VirtualAlloc
  • VirtualAllocEx
  • NtAllocateVirtualMemory
  • VirtualProtect
  • VirtualProtectEx
  • NtProtectVirtualMemory
  • HeapCreate
  • RtlCreateHeap
  • CreateProcessA
  • CreateProcessW
  • CreateProcessInternalA
  • CreateProcessInternalW
  • NtCreateUserProcess
  • NtCreateProcess
  • NtCreateProcessEx
  • CreateRemoteThread
  • CreateRemoteThreadEx
  • NtCreateThreadEx
  • WriteProcessMemory
  • NtWriteVirtualMemory
  • WinExec
  • CreateFileMappingA
  • CreateFileMappingW
  • CreateFileMappingNumaW
  • NtCreateSection
  • MapViewOfFile
  • MapViewOfFileEx
  • MapViewOfFileFromApp
  • LdrGetProcedureAddressForCaller

Considerações sobre compatibilidadeCompatibility considerations

Os aplicativos que estão usando pilhas falsas serão afetados e também há um pequeno risco de revelar bugs de tempo sutis em aplicativos com vários threads.Applications that are using fake stacks will be impacted, and there is also a small risk of revealing subtle timing bugs in multi-threaded applications. Aplicativos que executam interceptação de API, especialmente software de segurança, podem causar problemas de compatibilidade com essa mitigação.Applications that perform API interception, particularly security software, can cause compatibility problems with this mitigation.

Essa mitigação é incompatível com a mitigação do Code Guard arbitrário.This mitigation is incompatible with the Arbitrary Code Guard mitigation.

Opções de configuraçãoConfiguration options

Somente auditoria - Você pode habilitar essa mitigação no modo de auditoria para medir o impacto potencial da compatibilidade em um aplicativo.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Os eventos de auditoria podem ser exibidos no visualizador de eventos ou usando a Busca Avançada no Microsoft Defender para Ponto de Extremidade.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.