Informazioni di riferimento sulla protezione degli exploitExploit Protection Reference

Si applica a:Applies to:

Vuoi provare Microsoft Defender per Endpoint?Want to experience Microsoft Defender for Endpoint? Iscriversi per una versione di valutazione gratuita.Sign up for a free trial.

La protezione degli exploit offre protezioni avanzate per le applicazioni che il Pro IT può applicare dopo che lo sviluppatore ha compilato e distribuito il software.Exploit protection provides advanced protections for applications that the IT Pro can apply after the developer has compiled and distributed the software.

Questo articolo ti aiuta a comprendere il funzionamento della protezione degli exploit, sia a livello di criteri che a livello di mitigazione individuale, per aiutarti a creare e applicare correttamente i criteri di protezione da exploit.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.

Modalità di applicazione delle mitigazioniHow mitigations are applied

Le mitigazioni di Protezione da exploit vengono applicate per ogni applicazione.Exploit Protection mitigations are applied per application.

Le mitigazioni vengono configurate tramite una voce del Registro di sistema per ogni programma per cui si configurano le protezioni.Mitigations are configured via a registry entry for each program that you configure protections for. Queste impostazioni vengono archiviate nella voce del Registro di sistema MitigationOptions per ogni programma (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). Vengono applicate quando si riavvia il programma e rimangono effettive fino a quando non vengono modificate e riavviate di nuovo.They take effect when you restart the program and remain effective until you change them and restart the program again.

Importante

Opzioni di esecuzione dei file di immagine consente solo di specificare un nome file o un percorso e non un numero di versione, un'architettura o qualsiasi altro elemento di differenziazione.Image File Execution Options only allows you to specify a file name or path, and not a version number, architecture, or any other differentiator. Prestare attenzione alle mitigazioni per le app con nomi o percorsi univoci, applicandoli solo ai dispositivi in cui è stata testata la versione e l'architettura dell'applicazione.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 si configurano le mitigazioni di protezione da exploit utilizzando un file di configurazione XML, tramite PowerShell, Criteri di gruppo o MDM, durante l'elaborazione di questo file di configurazione XML, verranno configurate automaticamente singole impostazioni del Registro di sistema.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 il criterio che distribuisce il file XML non viene più applicato, le impostazioni distribuite da questo file di configurazione XML non verranno rimosse automaticamente.When the policy distributing the XML file is no longer enforced, settings deployed by this XML configuration file will not be automatically removed. Per rimuovere le impostazioni di Protezione dagli exploit, esporta la configurazione XML da un dispositivo Windows 10 e distribuisci questo nuovo file XML.To remove Exploit Protection settings, export the XML configuration from a clean Windows 10 device, and deploy this new XML file. In alternativa, Microsoft fornisce un file XML come parte delle Sicurezza di Windows di base per la reimpostazione delle impostazioni di Protezione da exploit.Alternately, Microsoft provides an XML file as part of the Windows Security Baselines for resetting Exploit Protection settings.

Per reimpostare le impostazioni di protezione da exploit tramite PowerShell, è possibile utilizzare il comando seguente:To reset exploit protection settings using PowerShell, you could use the following command:

Set-ProcessMitigation -PolicyFilePath EP-reset.xml

Di seguito è riportata EP-reset.xml distribuzione con le Sicurezza di Windows di base: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>

Informazioni di riferimento sulla mitigazioneMitigation Reference

Nelle sezioni seguenti vengono descritte in dettaglio le protezioni fornite da ogni mitigazione della protezione dagli exploit, le considerazioni sulla compatibilità per la mitigazione e le opzioni di configurazione disponibili.The following sections detail the protections provided by each exploit protection mitigation, the compatibility considerations for the mitigation, and the configuration options available.

Protezione del codice arbitrarioArbitrary code guard

DescrizioneDescription

La protezione del codice arbitrario consente di proteggersi da un utente malintenzionato che carica il codice scelto in memoria tramite una vulnerabilità di sicurezza della memoria ed è in grado di eseguire tale codice.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.

La protezione del codice arbitrario protegge un'applicazione dall'esecuzione di codice generato dinamicamente (codice non caricato, ad esempio, dall'exe stesso o da una 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). La protezione del codice arbitrario funziona impedendo che la memoria venga contrassegnata come eseguibile.Arbitrary code guard works by preventing memory from being marked as executable. Quando un'applicazione tenta di allocare memoria,controlliamo i flag di protezione.When an application attempts to allocate memory, we check the protection flags. La memoria può essere allocata con flag di protezione di lettura, scrittura e/o esecuzione. Se l'allocazione tenta di includere il flag di protezione dell'esecuzione, l'allocazione di memoria ha esito negativo e restituisce un codice di errore (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). Analogamente, se un'applicazione tenta di modificare i flag di protezione della memoria già allocati e include il flag di protezione esecuzione, la modifica delle autorizzazioni ha esito negativo e restituisce un codice di errore (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).

Impedendo l'impostazione del flag execute, la funzionalità di prevenzione dell'esecuzione dei dati di Windows 10 può quindi proteggersi dal puntatore all'istruzione impostato su tale memoria ed eseguire tale codice.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.

Considerazioni sulla compatibilitàCompatibility considerations

La protezione del codice arbitrario impedisce l'allocazione di memoria come eseguibile, che presenta un problema di compatibilità con approcci come i compilatori JIT (Just-in-Time).Arbitrary code guard prevents allocating any memory as executable, which presents a compatibility issue with approaches such as Just-in-Time (JIT) compilers. La maggior parte dei browser moderni, ad esempio, compilerà JavaScript in codice nativo per ottimizzare le prestazioni.Most modern browsers, for example, will compile JavaScript into native code in order to optimize performance. Per supportare questa mitigazione, è necessario riarchiviare tali elementi per spostare la compilazione JIT all'esterno del processo protetto.In order to support this mitigation, they will need to be rearchitected to move the JIT compilation outside of the protected process. Altre applicazioni la cui progettazione genera dinamicamente codice da script o da altri linguaggi intermedi saranno incompatibili con questa mitigazione.Other applications whose design dynamically generates code from scripts or other intermediate languages will be similarly incompatible with this mitigation.

Opzioni di configurazioneConfiguration options

Consenti rifiuto esplicito thread - È possibile configurare la mitigazione per consentire a un singolo thread di rifiutare esplicitamente questa protezione.Allow thread opt-out - You can configure the mitigation to allow an individual thread to opt-out of this protection. Lo sviluppatore deve aver scritto l'applicazione con consapevolezza di questa mitigazione e aver chiamato l'API SetThreadInformation con il parametro ThreadInformation impostato su ThreadDynamicCodePolicy per poter eseguire codice dinamico su questo 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.

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Advanced Hunting in Defender for Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Defender for Endpoint.

Bloccare le immagini con integrità bassaBlock low integrity images

DescrizioneDescription

Blocca immagini con integrità bassa impedisce all'applicazione di caricare file non attendibili, in genere perché sono stati scaricati da Internet da un browser in modalità sandbox.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.

Questa mitigazione blocca il caricamento dell'immagine se l'immagine dispone di una voce di controllo di accesso (ACE, Access Control Entry) che concede l'accesso ai processi Low IL e che non dispone di un'etichetta di attendibilità ACE.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. Viene implementato dal gestore della memoria, che blocca il mapping del file in memoria.It is implemented by the memory manager, which blocks the file from being mapped into memory. Se un'applicazione tenta di mappare un'immagine con integrità bassa, verrà generato un STATUS_ACCESS_DENIED errore.If an application attempts to map a low integrity image, it will trigger a STATUS_ACCESS_DENIED error. Per informazioni dettagliate sul funzionamento dei livelli di integrità, vedere Mandatory Integrity Control.For details on how integrity levels work, see Mandatory Integrity Control.

Considerazioni sulla compatibilitàCompatibility considerations

Blocca immagini con integrità bassa impedirà all'applicazione di caricare file scaricati da Internet.Block low integrity images will prevent the application from loading files that were downloaded from the internet. Se il flusso di lavoro dell'applicazione richiede il caricamento di immagini scaricate, è necessario assicurarsi che siano scaricate da un processo con attendibilità superiore o che siano state esplicitamente rietichettate per applicare questa mitigazione.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.

Opzioni di configurazioneConfiguration options

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Bloccare le immagini remoteBlock remote images

DescrizioneDescription

Il blocco delle immagini remote consente di impedire all'applicazione di caricare file ospitati in un dispositivo remoto, ad esempio una condivisione UNC.Blocking remote images helps to prevent the application from loading files that are hosted on a remote device, such as a UNC share. Il blocco delle immagini remote consente di proteggere dal caricamento di file binari in memoria presenti in un dispositivo esterno controllato dall'autore dell'attacco.Blocking remote images helps protect against loading binaries into memory that are on an external device controlled by the attacker.

Questa mitigazione bloccherà il caricamento dell'immagine se l'immagine viene determinata in un dispositivo remoto.This mitigation will block image loads if the image is determined to be on a remote device. Viene implementato dal gestore della memoria, che blocca il mapping del file in memoria.It is implemented by the memory manager, which blocks the file from being mapped into memory. Se un'applicazione tenta di eseguire il mapping di un file remoto, verrà generato un STATUS_ACCESS_DENIED errore.If an application attempts to map a remote file, it will trigger a STATUS_ACCESS_DENIED error.

Considerazioni sulla compatibilitàCompatibility considerations

Blocca immagini remote impedirà all'applicazione di caricare immagini da dispositivi remoti.Block remote images will prevent the application from loading images from remote devices. Se l'applicazione carica file o plug-in da dispositivi remoti, non sarà compatibile con questa mitigazione.If your application loads files or plug-ins from remote devices, then it will not be compatible with this mitigation.

Opzioni di configurazioneConfiguration options

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Blocca tipi di carattere non attendibiliBlock untrusted fonts

DescrizioneDescription

Blocca tipi di carattere non attendibili riduce il rischio di un difetto nell'analisi dei tipi di carattere che porta l'utente malintenzionato a eseguire codice nel 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. Solo i tipi di carattere installati nella directory windows\fonts verranno caricati per l'elaborazione da GDI.Only fonts that are installed into the windows\fonts directory will be loaded for processing by GDI.

Questa mitigazione viene implementata in GDI, che convalida il percorso del file.This mitigation is implemented within GDI, which validates the location of the file. Se il file non si trova nella directory dei tipi di carattere di sistema, il tipo di carattere non verrà caricato per l'analisi e la chiamata avrà esito negativo.If the file is not in the system fonts directory, the font will not be loaded for parsing and that call will fail.

Questa mitigazione si aggiunge alla mitigazione predefinita fornita in Windows 10 1607 e versioni successive, che sposta l'analisi dei tipi di carattere fuori dal kernel e in un contenitore di app in modalità utente.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. Qualsiasi exploit basato sull'analisi dei tipi di carattere, di conseguenza, si verifica in un contesto in modalità sandbox e isolato, riducendo in modo significativo il rischio.Any exploit based on font parsing, as a result, happens in a sandboxed and isolated context, which reduces the risk significantly. Per informazioni dettagliate su questa mitigazione, vedere il 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.

Considerazioni sulla compatibilitàCompatibility considerations

L'utilizzo più comune dei tipi di carattere al di fuori della directory dei tipi di carattere di sistema è con i tipi di carattere Web.The most common use of fonts outside of the system fonts directory is with web fonts. I browser moderni, ad esempio Microsoft Edge, usano DirectWrite anziché GDI e non sono influenzati.Modern browsers, such as Microsoft Edge, use DirectWrite instead of GDI, and are not impacted. Tuttavia, i browser legacy, ad esempio Internet Explorer 11 (e la modalità Internet Explorer nel nuovo Microsoft Edge) possono essere influenzati, in particolare con applicazioni come Office 365, che usano glifi dei tipi di carattere per visualizzare l'interfaccia utente.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.

Opzioni di configurazioneConfiguration options

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Protezione dell'integrità del codiceCode integrity guard

DescrizioneDescription

Protezione dell'integrità del codice garantisce che tutti i file binari caricati in un processo siano firmati digitalmente da Microsoft.Code integrity guard ensures that all binaries loaded into a process are digitally signed by Microsoft. Code Integrity Guard include firme WHQL (Windows Hardware Quality Labs), che consentiranno l'esecuzione di driver approvati da WHQL all'interno del processo.Code integrity guard includes WHQL (Windows Hardware Quality Labs) signatures, which will allow WHQL-approved drivers to run within the process.

Questa mitigazione viene implementata all'interno del gestore della memoria, che blocca il mapping del binario in memoria.This mitigation is implemented within the memory manager, which blocks the binary from being mapped into memory. Se si tenta di caricare un file binario non firmato da Microsoft, la gestione della memoria restituirà l'errore 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. Bloccando a livello di gestione della memoria, si evita che entrambi i file binari caricati dal processo e i file binari inseriti nel processo.By blocking at the memory manager level, this prevents both binaries loaded by the process and binaries injected into the process.

Considerazioni sulla compatibilitàCompatibility considerations

Questa mitigazione blocca in modo specifico qualsiasi file binario non firmato da Microsoft.This mitigation specifically blocks any binary that is not signed by Microsoft. Di conseguenza, sarà incompatibile con la maggior parte del software di terze parti, a meno che tale software non sia distribuito (e firmato digitalmente da) il Microsoft Store e non sia selezionata l'opzione per consentire il caricamento di immagini firmate dal Microsoft Store.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.

Opzioni di configurazioneConfiguration options

Consenti anche il caricamento delle immagini firmate da Microsoft Store: le applicazioni distribuite dal Microsoft Store saranno firmate digitalmente dal Microsoft Store e l'aggiunta di questa configurazione consentirà ai file binari che hanno attraversato il processo di certificazione dell'archivio di essere caricati dall'applicazione.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.

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Control flow guard (CFG)Control flow guard (CFG)

DescrizioneDescription

Control flow guard (CFG) riduce il rischio che gli utenti malintenzionati utilizzino vulnerabilità di danneggiamento della memoria proteggendo le chiamate di funzione indirette.Control flow guard (CFG) mitigates the risk of attackers using memory corruption vulnerabilities by protecting indirect function calls. Ad esempio, un utente malintenzionato potrebbe utilizzare una vulnerabilità di overflow del buffer per sovrascrivere la memoria contenente un puntatore a funzione e sostituire tale puntatore a funzione con un puntatore al codice eseguibile di propria scelta (che potrebbe essere stato inserito anche nel programma).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).

Questa mitigazione viene fornita mediante l'inserimento di un altro controllo in fase di compilazione.This mitigation is provided by injecting another check at compile time. Prima di ogni chiamata di funzione indiretta, vengono aggiunte altre istruzioni che verificano che la destinazione sia una destinazione di chiamata valida prima della chiamata.Before each indirect function call, another instructions are added which verify that the target is a valid call target before it is called. Se la destinazione non è una destinazione di chiamata valida, l'applicazione viene terminata.If the target is not a valid call target, then the application is terminated. Di conseguenza, solo le applicazioni compilate con il supporto CFG possono trarre vantaggio da questa mitigazione.As such, only applications that are compiled with CFG support can benefit from this mitigation.

Il controllo di una destinazione valida viene fornito dal kernel Windows di destinazione.The check for a valid target is provided by the Windows kernel. Quando i file eseguibili vengono caricati, i metadati per le destinazioni di chiamata indirette vengono estratti in fase di caricamento e contrassegnati come destinazioni di chiamata valide.When executable files are loaded, the metadata for indirect call targets is extracted at load time and marked as valid call targets. Inoltre, quando la memoria viene allocata e contrassegnata come eseguibile (ad esempio per il codice generato), queste posizioni di memoria vengono contrassegnate anche come destinazioni di chiamata valide, per supportare meccanismi come la compilazione 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.

Considerazioni sulla compatibilitàCompatibility considerations

Poiché le applicazioni devono essere compilate per supportare CFG, dichiarano implicitamente la compatibilità con essa.Since applications must be compiled to support CFG, they implicitly declare their compatibility with it. La maggior parte delle applicazioni, pertanto, dovrebbe funzionare con questa mitigazione abilitata.Most applications, therefore, should work with this mitigation enabled. Poiché questi controlli vengono compilati nel file binario, la configurazione che puoi applicare è semplicemente per disabilitare i controlli all'interno del kernel Windows kernel.Because these checks are compiled into the binary, the configuration you can apply is merely to disable checks within the Windows kernel. In altre parole, la mitigazione è impostata per impostazione predefinita, ma è possibile configurare il kernel di Windows per restituire sempre "sì" se in seguito si determina che esiste un problema di compatibilità che lo sviluppatore dell'applicazione non ha scoperto nei test, cosa che dovrebbe essere rara.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.

Opzioni di configurazioneConfiguration options

Usa CFG strict - In modalità strict, tutti i file binari caricati nel processo devono essere compilati per Control Flow Guard (o non contengono codice eseguibile, ad esempio dll di risorse) per poter essere caricati.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.

Nota

Control flow guard has no audit mode.Control flow guard has no audit mode. I file binari vengono compilati con questa mitigazione abilitata.Binaries are compiled with this mitigation enabled.

Protezione esecuzione programmiData Execution Prevention (DEP)

DescrizioneDescription

Protezione esecuzione programmi impedisce l'esecuzione della memoria non allocata in modo esplicito come eseguibile.Data execution prevention (DEP) prevents memory that was not explicitly allocated as executable from being executed. Protezione esecuzione programmi consente di proteggersi da un utente malintenzionato che inserisce codice dannoso nel processo, ad esempio tramite un sovraccarico del buffer e quindi eseguendo tale codice.DEP helps protect against an attacker injecting malicious code into the process, such as through a buffer overflow, and then executing that code.

Se tenti di impostare il puntatore all'istruzione su un indirizzo di memoria non contrassegnato come eseguibile, il processore genererà un'eccezione (violazione di protezione generale), causando l'arresto anomalo dell'applicazione.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.

Considerazioni sulla compatibilitàCompatibility considerations

Tutti i file eseguibili x64, ARM e ARM-64 hanno protezione esecuzione programmi abilitata per impostazione predefinita e non possono essere disabilitati.All x64, ARM, and ARM-64 executables have DEP enabled by default, and it cannot be disabled. Poiché un'applicazione non sarà mai stata eseguita senza Protezione esecuzione programmi, si presuppone la compatibilità.Since an application will have never been executed without DEP, compatibility is assumed.

Per tutti i file binari x86 (32 bit) la funzionalità Protezione esecuzione programmi è abilitata per impostazione predefinita, ma la funzionalità Protezione esecuzione programmi può essere disabilitata per processo.All x86 (32-bit) binaries have DEP enabled by default, but DEP can be disabled per process. Alcune applicazioni legacy precedenti, in genere le applicazioni sviluppate prima di Windows XP SP2, potrebbero non essere compatibili con Protezione esecuzione programmi.Some old legacy applications, typically applications developed prior to Windows XP SP2, might not be compatible with DEP. Tali applicazioni in genere generano codice in modo dinamico (ad esempio, compilazione JIT) o collegamenti a librerie precedenti (ad esempio versioni precedenti di ATL) che generano codice in modo dinamico.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.

Opzioni di configurazioneConfiguration options

Abilita emulazione Thunk ATL - Questa opzione di configurazione disabilita l'emulazione Thunk ATL.Enable ATL Thunk emulation - This configuration option disables ATL Thunk emulation. ATL, la ActiveX template library, è progettata per essere il più piccola e veloce possibile.ATL, the ActiveX Template Library, is designed to be as small and fast as possible. Per ridurre le dimensioni binarie, viene utilizzata una tecnica denominata thunking.In order to reduce binary size, it would use a technique called thunking. Il thunking viene in genere pensato per interagire tra applicazioni a 32 bit e a 16 bit, ma qui non esistono componenti a 16 bit per ATL.Thunking is typically thought of for interacting between 32-bit and 16-bit applications, but there are no 16-bit components to ATL here. Al contrario, per ottimizzare le dimensioni binarie, ATL archivierà il codice macchina in memoria che non è allineato alle parole (creando un binario più piccolo) e quindi richiama direttamente il codice.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. I componenti ATL compilati con Visual Studio 7.1 o versioni precedenti (Visual Studio 2003) non allocano questa memoria come eseguibile: l'emulazione thunk risolve il problema di compatibilità.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. Le applicazioni con un modello di estensione binario (ad esempio Internet Explorer 11) spesso dovranno avere l'emulazione Thunk ATL abilitata.Applications that have a binary extension model (such as Internet Explorer 11) will often need to have ATL Thunk emulation enabled.

Disabilitare i punti di estensioneDisable extension points

DescrizioneDescription

Questa mitigazione disabilita diversi punti di estensione per un'applicazione, che potrebbero essere usati per stabilire la persistenza o elevare i privilegi di contenuto dannoso.This mitigation disables various extension points for an application, which might be used to establish persistence or elevate privileges of malicious content.

Tra questi vi sono anche:This includes:

  • DLL AppInit: ogni volta che viene avviato un processo, il sistema carica la DLL specificata nel contesto del processo appena avviato prima di chiamare la relativa funzione del punto di ingresso.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. I dettagli sulle DLL AppInit sono disponibili qui.Details on AppInit DLLs can be found here. Con questa mitigazione applicata, le DLL AppInit non vengono caricate.With this mitigation applied, AppInit DLLs are not loaded. A partire Windows 7, le DLL AppInit devono essere firmate digitalmente, come descritto qui.Beginning with Windows 7, AppInit DLLs need to be digitally signed, as described here. Inoltre, a partire da Windows 8, le DLL AppInit non verranno caricate se SecureBoot è abilitato, come descritto qui.Additionally, beginning with Windows 8, AppInit DLLs will not be loaded if SecureBoot is enabled, as described here.
  • IME legacy - Un IME (Input Method Editor) consente all'utente di digitare testo in una lingua con più caratteri di quelli che possono essere rappresentati su una tastiera.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. Terze parti sono in grado di creare IME.Third parties are able to create IMEs. Un IME dannoso potrebbe ottenere credenziali o altre informazioni riservate da questa acquisizione di input.A malicious IME might obtain credentials or other sensitive information from this input capture. Alcuni IME, denominati IME legacy, funzionano solo Windows app desktop e non app UWP.Some IMEs, referred to as Legacy IMEs, will only work on Windows Desktop apps, and not UWP apps. Questa mitigazione impedirà anche il caricamento di questo IME legacy nell'app desktop Windows specificata.This mitigation will also prevent this legacy IME from loading into the specified Windows Desktop app.
  • Windows hook di evento- Un'applicazione può chiamare l'API SetWinEventHook per registrare l'interesse per un evento in corso.Windows Event Hooks - An application can call the SetWinEventHook API to register interest in an event taking place. Viene specificata una DLL e può essere inserita nel processo.A DLL is specified and can be injected into the process. Questa mitigazione forza l'inserimento dell'hook nel processo di registrazione anziché l'esecuzione in-process tramite una DLL inserita.This mitigation forces the hook to be posted to the registering process rather than running in-process through an injected DLL.

Considerazioni sulla compatibilitàCompatibility considerations

La maggior parte di questi punti di estensione viene utilizzata relativamente raramente, quindi l'impatto sulla compatibilità è in genere ridotto, in particolare a livello di singola applicazione.Most of these extension points are relatively infrequently used, so compatibility impact is typically small, particularly at an individual application level. L'unica considerazione è se gli utenti utilizzano IME legacy di terze parti che non funzionano con l'applicazione protetta.The one consideration is if users are using third-party Legacy IMEs that will not work with the protected application.

Opzioni di configurazioneConfiguration options

Non sono disponibili opzioni di configurazione per questa mitigazione.There are no configuration options for this mitigation.

Nota

Disabilitare i punti di estensione non ha alcuna modalità di controllo.Disable extension points has no audit mode.

Disabilitare le chiamate di sistema Win32kDisable Win32k system calls

DescrizioneDescription

Win32k.sys fornisce un'ampia superficie di attacco per un utente malintenzionato.Win32k.sys provides a broad attack surface for an attacker. Come componente in modalità kernel, è spesso destinato come vettore di escape per le applicazioni in modalità sandbox.As a kernel-mode component, it is frequently targeted as an escape vector for applications that are sandboxed. Questa mitigazione impedisce alle chiamate in win32k.sys bloccando un thread di convertirsi in un thread GUI, a cui viene quindi assegnato l'accesso per richiamare le funzioni 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. Un thread non è gui al momento della creazione, ma viene convertito alla prima chiamata a win32k.sys o tramite una chiamata API a IsGuiThread.A thread is non-GUI when created, but converted on first call to win32k.sys, or through an API call to IsGuiThread.

Considerazioni sulla compatibilitàCompatibility considerations

Questa mitigazione è progettata per i processi dedicati non dell'interfaccia utente.This mitigation is designed for processes that are dedicated non-UI processes. Ad esempio, molti browser moderni useranno l'isolamento dei processi e incorporano processi non dell'interfaccia utente.For example, many modern browsers will use process isolation and incorporate non-UI processes. Tutte le applicazioni che visualizzano un'interfaccia utente grafica con un singolo processo saranno influenzate da questa mitigazione.Any application that displays a GUI using a single process will be impacted by this mitigation.

Opzioni di configurazioneConfiguration options

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Non consentire processi figlioDo not allow child processes

DescrizioneDescription

Questa mitigazione impedisce a un'applicazione di creare nuove applicazioni figlio.This mitigation prevents an application from creating new child applications. Una tecnica comune usata dagli avversari consiste nell'avviare un processo attendibile sul dispositivo con input dannoso (un attacco di tipo "living off the land"), che spesso richiede l'avvio di un'altra applicazione nel 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 non esistono motivi legittimi per cui un'applicazione avvii un processo figlio, questa mitigazione riduce il potenziale vettore di attacco.If there are no legitimate reasons why an application would launch a child process, this mitigation mitigates that potential attack vector. La mitigazione viene applicata impostando una proprietà sul token del processo, che blocca la creazione di un token per il processo figlio con il messaggio di errore 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.

Considerazioni sulla compatibilitàCompatibility considerations

Se l'applicazione avvia applicazioni figlio per qualsiasi motivo, ad esempio supportando collegamenti ipertestuali che avviano un browser o un browser esterno o che avviano altre utilità nel computer, questa funzionalità verrà interrotta con questa mitigazione applicata.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.

Opzioni di configurazioneConfiguration options

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Esportare il filtro indirizziExport address filtering

DescrizioneDescription

Il filtro degli indirizzi di esportazione (EAF) riduce il rischio di codice dannoso esaminando la tabella degli indirizzi di esportazione di tutti i moduli caricati per trovare i moduli che contengono API utili per l'attacco.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. Si tratta di una tattica comune usata da shellcode.This is a common tactic used by shellcode. Per ridurre il rischio di un attacco di questo tipo, questa mitigazione protegge tre moduli comunemente attaccati: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

La mitigazione protegge la pagina di memoria nella [directory di esportazione che punta alla tabella degli indirizzi di esportazione.The mitigation protects the memory page in the [export directory that points to the export address table. A questa pagina di memoria verrà applicata PAGE_GUARD protezione.This memory page will have the PAGE_GUARD protection applied to it. Quando qualcuno tenta di accedere a questa memoria, genererà un STATUS_GUARD_PAGE_VIOLATION.When someone tries to access this memory, it will generate a STATUS_GUARD_PAGE_VIOLATION. La mitigazione gestisce questa eccezione e se l'istruzione di accesso non supera la convalida, il processo verrà terminato.The mitigation handles this exception, and if the accessing instruction doesn't pass validation, the process will be terminated.

Considerazioni sulla compatibilitàCompatibility considerations

Questa mitigazione è principalmente un problema per applicazioni quali debugger, applicazioni in modalità sandbox, applicazioni che utilizzano DRM o applicazioni che implementano la tecnologia anti-debug.This mitigation is primarily an issue for applications such as debuggers, sandboxed applications, applications using DRM, or applications that implement anti-debugging technology.

Opzioni di configurazioneConfiguration options

Convalidare l'accesso per i moduli comunemente utilizzati dagli exploit: questa opzione, nota anche come EAF+, aggiunge protezioni per altri moduli comunemente attaccati: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

Inoltre, abilitando EAF+, questa mitigazione aggiunge la protezione PAGE_GUARD alla pagina contenente l'intestazione "MZ", i primi due byte dell'intestazione DOS in un file PE,che è un altro aspetto del contenuto di memoria noto che shellcode può cercare per identificare i moduli potenzialmente di interesse per la memoria.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.

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Forza la casualizzazione per le immagini (ASLR obbligatorio)Force randomization for images (Mandatory ASLR)

DescrizioneDescription

Address Space Layout Randomization (ASLR) riduce il rischio che un utente malintenzionato utilizzi la conoscenza del layout di memoria del sistema per eseguire codice già presente nella memoria del processo e già contrassegnato come eseguibile.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. In questo modo è possibile ridurre il rischio che un utente malintenzionato utilizzi tecniche come gli attacchi da ritorno a libc, in cui l'avversario imposta il contesto e quindi modifica l'indirizzo del mittente per eseguire il codice esistente con un contesto adatto allo scopo dell'avversario.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.

L'ASLR obbligatorio forza un rebase di tutte le DLL all'interno del processo.Mandatory ASLR forces a rebase of all DLLs within the process. Uno sviluppatore può abilitare ASLR usando l'opzione del linker /DYNAMICBASE e questa mitigazione ha lo stesso effetto.A developer can enable ASLR using the /DYNAMICBASE linker option, and this mitigation has the same effect.

Quando il gestore della memoria esegue il mapping dell'immagine nel processo, l'ASLR obbligatorio esegue il rebase forzato delle DLL e degli EXE che non hanno acconsentito esplicitamente ad 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. Si noti, tuttavia, che questo sconto non ha entropia e pertanto può essere posizionato in una posizione prevedibile in memoria.Note, however, that this rebasing has no entropy, and can therefore be placed at a predictable location in memory. Per la posizione basata su base e casuale dei file binari, questa mitigazione deve essere associata alle allocazioni di memoria randomizzate (ASLR bottom-up).For rebased and randomized location of binaries, this mitigation should be paired with Randomize memory allocations (Bottom-up ASLR).

Considerazioni sulla compatibilitàCompatibility considerations

Questo impatto sulla compatibilità di ASLR è in genere limitato alle applicazioni meno recenti create utilizzando compilatori che presupponevano l'indirizzo di base di un file binario o che hanno privato le informazioni di rilocazione di 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. Ciò può causare errori imprevisti quando il flusso di esecuzione tenta di passare alla posizione prevista anziché alla posizione effettiva in memoria.This can lead to unpredictable errors as the execution flow attempts to jump to the expected, rather than the actual, location in memory.

Opzioni di configurazioneConfiguration options

Non consentire immagini stripped- Questa opzione blocca il caricamento delle immagini per le cui informazioni di rilocazione sono state tortuite.Do not allow stripped images - This option blocks the loading of images that have had relocation information stripped. Il formato di file PE di Windows contiene indirizzi assoluti e il compilatore genera anche una [tabella di rilocazione di base che il caricatore può utilizzare per trovare tutti i riferimenti di memoria relativi e il relativo offset, in modo che possano essere aggiornati se il file binario non viene caricato nell'indirizzo di base preferito.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. Alcune applicazioni precedenti es rimuovere queste informazioni nelle build di produzione e pertanto questi file binari non possono essere ribaseti.Some older applications strip out this information in production builds, and therefore these binaries cannot be rebased. Questa mitigazione blocca il caricamento di file binari di questo tipo anziché consentire il caricamento all'indirizzo di base preferito.This mitigation blocks such binaries from being loaded (instead of allowing them to load at their preferred base address).

Nota

Forzare la casualizzazione per le immagini (ASLR obbligatorio) non ha modalità di controllo.Force randomization for images (Mandatory ASLR) has no audit mode.

Filtro indirizzi di importazione (IAF)Import address filtering (IAF)

DescrizioneDescription

La mitigazione del filtro degli indirizzi di importazione (IAF) consente di ridurre il rischio che un avversario cambi il flusso di controllo di un'applicazione modificando la tabella degli indirizzi di importazione (IAT, Import Address Table) per reindirizzare al codice arbitrario scelto dall'autore dell'attacco quando viene chiamata tale funzione.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. Un utente malintenzionato potrebbe usare questo approccio per dirottare il controllo o intercettare, ispezionare e bloccare potenzialmente le chiamate alle API sensibili.An attacker could use this approach to hijack control, or to intercept, inspect, and potentially block calls to sensitive APIs.

Alle pagine di memoria per tutte le API protette verrà applicata PAGE_GUARD protezione.The memory pages for all protected APIs will have the PAGE_GUARD protection applied to them. Quando qualcuno tenta di accedere a questa memoria, genererà un STATUS_GUARD_PAGE_VIOLATION.When someone tries to access this memory, it will generate a STATUS_GUARD_PAGE_VIOLATION. La mitigazione gestisce questa eccezione e se l'istruzione di accesso non supera la convalida, il processo verrà terminato.The mitigation handles this exception, and if the accessing instruction doesn't pass validation, the process will be terminated.

Questa mitigazione protegge le API Windows seguenti: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

Considerazioni sulla compatibilitàCompatibility considerations

Le applicazioni legittime che eseguono l'intercettazione api possono essere rilevate da questa mitigazione e causare l'arresto anomalo di alcune applicazioni.Legitimate applications that perform API interception may be detected by this mitigation and cause some applications to crash. Tra gli esempi sono inclusi gli serre di compatibilità di applicazioni e software di sicurezza.Examples include security software and application compatibility shims.

Opzioni di configurazioneConfiguration options

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Allocazioni di memoria casuali (ASLR dal basso verso l'alto)Randomize memory allocations (Bottom-up ASLR)

DescrizioneDescription

Le allocazioni di memoria casuali (ASLR bottom-up) aggiungono entropia alle rilocazioni, quindi la loro posizione è casuale e quindi meno prevedibile.Randomize memory allocations (Bottom-up ASLR) adds entropy to relocations, so their location is randomized and therefore less predictable. Questa mitigazione richiede l'applicazione dell'aslR obbligatorio.This mitigation requires Mandatory ASLR to take effect.

La dimensione dello spazio degli indirizzi a 32 bit pone vincoli pratici sull'entropia che è possibile aggiungere e pertanto le applicazioni a 64 bit rendono più difficile per un utente malintenzionato indovinare una posizione in memoria.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.

Considerazioni sulla compatibilitàCompatibility considerations

La maggior parte delle applicazioni compatibili con l'ASLR obbligatorio (rebasing) è compatibile anche con l'altra entropia di ASLR bottom-up.Most applications that are compatible with Mandatory ASLR (rebasing) are also compatible with the other entropy of Bottom-up ASLR. Alcune applicazioni potrebbero avere problemi di troncamento del puntatore se salvano puntatori locali in variabili a 32 bit (prevedendo un indirizzo di base inferiore a 4 GB) e pertanto non saranno compatibili con l'opzione di entropia elevata (che può essere disabilitata).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).

Opzioni di configurazioneConfiguration options

Non usare l'entropia elevata: questa opzione disabilita l'uso di ASLR ad alta entropia, che aggiunge 24 bit di entropia (1 TB di varianza) nell'allocazione dal basso verso l'alto per le applicazioni a 64 bit.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.

Nota

Le allocazioni di memoria casuali (ASLR dal basso verso l'alto) non hanno modalità di controllo.Randomize memory allocations (Bottom-up ASLR) has no audit mode.

Simulazione dell'esecuzione (SimExec)Simulate execution (SimExec)

DescrizioneDescription

L'esecuzione simulata (SimExec) è una mitigazione solo per le applicazioni a 32 bit.Simulate execution (SimExec) is a mitigation for 32-bit applications only. Ciò consente di verificare che le chiamate alle API riservate restituiranno le funzioni chiamante legittime.This helps validate that calls to sensitive APIs will return to legitimate caller functions. A tale scopo, intercetta le chiamate in API sensibili e quindi simula l'esecuzione di tali API esaminando le istruzioni del linguaggio assembly codificato alla ricerca dell'istruzione RET, che dovrebbe tornare al chiamante.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. Esamina quindi la funzione e torna indietro nella memoria per trovare l'istruzione CALL precedente per determinare se la funzione e l'istruzione CALL corrispondono e che l'istruzione RET non è stata intercettata.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.

Le API intercettate da questa mitigazione sono: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 viene rilevato un gadget ROP, il processo viene terminato.If a ROP gadget is detected, the process is terminated.

Considerazioni sulla compatibilitàCompatibility considerations

Le applicazioni che eseguono l'intercettazione delle API, in particolare il software di sicurezza, possono causare problemi di compatibilità con questa mitigazione.Applications that perform API interception, particularly security software, can cause compatibility problems with this mitigation.

Questa mitigazione non è compatibile con la mitigazione arbitraria di Code Guard.This mitigation is incompatible with the Arbitrary Code Guard mitigation.

Opzioni di configurazioneConfiguration options

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Convalida chiamata API (CallerCheck)Validate API invocation (CallerCheck)

DescrizioneDescription

Validate API invocation (CallerCheck) è una mitigazione per le tecniche ROP (Return-Oriented Programming) che convalidano che le API sensibili sono state chiamate da un chiamante valido.Validate API invocation (CallerCheck) is a mitigation for return-oriented programming (ROP) techniques that validates that sensitive APIs were called from a valid caller. Questa mitigazione esamina l'indirizzo del mittente passato e quindi disassembla euristicamente all'indietro per trovare una chiamata sopra l'indirizzo del mittente per determinare se la destinazione della chiamata corrisponde al parametro passato alla funzione.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.

Le API intercettate da questa mitigazione sono: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 viene rilevato un gadget ROP, il processo viene terminato.If a ROP gadget is detected, the process is terminated.

Considerazioni sulla compatibilitàCompatibility considerations

Le applicazioni che eseguono l'intercettazione delle API, in particolare il software di sicurezza, possono causare problemi di compatibilità con questa mitigazione.Applications that perform API interception, particularly security software, can cause compatibility problems with this mitigation.

Questa mitigazione non è compatibile con la mitigazione arbitraria di Code Guard.This mitigation is incompatible with the Arbitrary Code Guard mitigation.

Opzioni di configurazioneConfiguration options

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Convalida catene di eccezioni (SEHOP)Validate exception chains (SEHOP)

DescrizioneDescription

Validate exception chains (SEHOP) è una mitigazione rispetto alla tecnica di sfruttamento della sovrascrittura del gestore di eccezioni strutturato (SEH).Validate exception chains (SEHOP) is a mitigation against the Structured Exception Handler (SEH) overwrite exploitation technique. La gestione delle eccezioni strutturata è il processo tramite il quale un'applicazione può chiedere di gestire una determinata eccezione.Structured exception handling is the process by which an application can ask to handle a particular exception. I gestori delle eccezioni sono concatenati, in modo che se un gestore di eccezioni sceglie di non gestire una determinata eccezione, può essere passato al gestore di eccezioni successivo nella catena finché non si decide di gestirla.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. Poiché l'elenco del gestore è dinamico, viene archiviato nello stack.Because the list of handler is dynamic, it is stored on the stack. Un utente malintenzionato può utilizzare una vulnerabilità di overflow dello stack per sovrascrivere il gestore delle eccezioni con un puntatore al codice scelto dall'utente malintenzionato.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.

Questa mitigazione si basa sulla progettazione di SEH, in cui ogni voce SEH contiene sia un puntatore al gestore delle eccezioni, sia un puntatore al gestore successivo nella catena di eccezioni.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. Questa mitigazione viene chiamata dal dispatcher delle eccezioni, che convalida la catena SEH quando viene richiamata un'eccezione.This mitigation is called by the exception dispatcher, which validates the SEH chain when an exception is invoked. Verifica che:It verifies that:

  • Tutti i record della catena di eccezioni sono all'interno dei limiti dello stackAll exception chain records are within the stack boundaries
  • Tutti i record delle eccezioni sono allineatiAll exception records are aligned
  • Nessun puntatore del gestore di eccezioni punta a uno stackNo exception handler pointers are pointing to the stack
  • Non sono presenti puntatori all'indietroThere are no backward pointers
  • La catena di eccezioni termina in corrispondenza di un gestore eccezioni finale notoThe exception chain ends at a known final exception handler

Se queste convalide hanno esito negativo, la gestione delle eccezioni viene interrotta e l'eccezione non verrà gestita.If these validations fail, then exception handling is aborted, and the exception will not be handled.

Considerazioni sulla compatibilitàCompatibility considerations

I problemi di compatibilità con SEHOP sono relativamente rari.Compatibility issues with SEHOP are relatively rare. È raro che un'applicazione prenda una dipendenza dal danneggiamento della catena di eccezioni.It's uncommon for an application to take a dependency on corrupting the exception chain. Tuttavia, alcune applicazioni sono influenzate dalle lievi modifiche della tempistica, che possono manifestarsi come una race condition che rivela un bug latente del multithreading nell'applicazione.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.

Opzioni di configurazioneConfiguration options

Nota

Validate exception chains (SEHOP) has no audit mode.Validate exception chains (SEHOP) has no audit mode.

Convalidare l'utilizzo dell'handleValidate handle usage

DescrizioneDescription

La convalida dell'utilizzo degli handle è una mitigazione che consente di proteggere un utente malintenzionato utilizzando un handle esistente per accedere a un oggetto protetto.Validate handle usage is a mitigation that helps protect against an attacker using an existing handle to access a protected object. Un handle è un riferimento a un oggetto protetto.A handle is a reference to a protected object. Se il codice dell'applicazione fa riferimento a un handle non valido, potrebbe indicare che un avversario sta tentando di utilizzare un handle registrato in precedenza (ma di quale conteggio dei riferimenti dell'applicazione non sarebbe a conoscenza).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 l'applicazione tenta di utilizzare un oggetto non valido, invece di restituire semplicemente null, l'applicazione genererà un'eccezione (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).

Questa mitigazione viene applicata automaticamente alle Windows Store.This mitigation is automatically applied to Windows Store applications.

Considerazioni sulla compatibilitàCompatibility considerations

Le applicazioni che non rilevavano in modo accurato i riferimenti agli handle e che non eseguevano il wrapping di queste operazioni nei gestori di eccezioni potrebbero essere influenzate da questa mitigazione.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.

Opzioni di configurazioneConfiguration options

Nota

La convalida dell'utilizzo dell'handle non ha modalità di controllo.Validate handle usage has no audit mode.

Convalidare l'integrità dell'heapValidate heap integrity

DescrizioneDescription

La mitigazione dell'integrità dell'heap di convalida aumenta il livello di protezione delle mitigazioni dell'heap in Windows, causando la chiusura dell'applicazione se viene rilevato un danneggiamento dell'heap.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. Le mitigazioni includono:The mitigations include:

  • Impedire il libero di un handle HEAPPreventing a HEAP handle from being freed
  • Esecuzione di un'altra convalida sulle intestazioni di blocco estese per le allocazioni heapPerforming another validation on extended block headers for heap allocations
  • Verifica che le allocazioni heap non siano già contrassegnate come in usoVerifying that heap allocations are not already flagged as in-use
  • Aggiunta di pagine di protezione a allocazioni, segmenti heap e sottosegmenti di grandi dimensioni superiori a una dimensione minimaAdding guard pages to large allocations, heap segments, and subsegments above a minimum size

Considerazioni sulla compatibilitàCompatibility considerations

Questa mitigazione è già applicata per impostazione predefinita per le applicazioni a 64 bit e per le applicazioni a 32 bit di destinazione Windows Vista o versioni successive.This mitigation is already applied by default for 64-bit applications and for 32-bit applications targeting Windows Vista or later. Le applicazioni legacy di Windows XP o versioni precedenti sono più a rischio, anche se i problemi di compatibilità sono rari.Legacy applications from Windows XP or earlier are most at-risk, though compatibility issues are rare.

Opzioni di configurazioneConfiguration options

Nota

La convalida dell'integrità dell'heap non ha alcuna modalità di controllo.Validate heap integrity has no audit mode.

Convalidare l'integrità delle dipendenze delle immaginiValidate image dependency integrity

DescrizioneDescription

La mitigazione della dipendenza dell'immagine di convalida consente di proteggere dagli attacchi che tentano di sostituire il codice per le DLL collegate in modo statico da Windows binari.The validate image dependency mitigation helps protect against attacks that attempt to substitute code for dlls that are statically linked by Windows binaries. La tecnica della distribuzione delle DLL abusa del meccanismo di ricerca del caricatore per inserire codice dannoso, che può essere usato per ottenere l'esecuzione di codice dannoso in un contesto con privilegi elevati.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 il caricatore carica un file binario firmato Windows e quindi carica tutte le DLL da cui dipende il file binario, questi file binari verranno verificati per assicurarsi che siano firmati anche digitalmente come file binario Windows.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. In caso di esito negativo del controllo della firma, la dll non verrà caricata e genererà un'eccezione, che restituirà lo stato 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.

Considerazioni sulla compatibilitàCompatibility considerations

I problemi di compatibilità non sono comuni.Compatibility issues are uncommon. Le applicazioni che dipendono dalla sostituzione dei file binari di Windows con versioni private locali saranno interessate e vi è anche un piccolo rischio di rivelare bug di temporizzazione sottili nelle applicazioni multi-thread.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.

Opzioni di configurazioneConfiguration options

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.

Convalidare l'integrità dello stack (StackPivot)Validate stack integrity (StackPivot)

DescrizioneDescription

La mitigazione dell'integrità dello stack di convalida (StackPivot) consente di proteggere dall'attacco Stack Pivot, un attacco ROP in cui un utente malintenzionato crea uno stack fittizio nella memoria heap e quindi inganna l'applicazione per tornare allo stack falso che controlla il flusso di esecuzione.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.

Questa mitigazione intercetta Windows API ed esamina il valore del puntatore dello stack.This mitigation intercepts many Windows APIs, and inspects the value of the stack pointer. Se l'indirizzo del puntatore dello stack non si trova tra la parte inferiore e la parte superiore dello stack, viene registrato un evento e, se non è in modalità di controllo, il processo verrà terminato.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.

Le API intercettate da questa mitigazione sono: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

Considerazioni sulla compatibilitàCompatibility considerations

Le applicazioni che utilizzano stack falsi saranno influenzate e c'è anche un piccolo rischio di rivelare bug di temporizzazione sottili nelle applicazioni multi-thread.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. Le applicazioni che eseguono l'intercettazione delle API, in particolare il software di sicurezza, possono causare problemi di compatibilità con questa mitigazione.Applications that perform API interception, particularly security software, can cause compatibility problems with this mitigation.

Questa mitigazione non è compatibile con la mitigazione arbitraria di Code Guard.This mitigation is incompatible with the Arbitrary Code Guard mitigation.

Opzioni di configurazioneConfiguration options

Solo controllo: è possibile abilitare questa mitigazione in modalità di controllo per misurare il potenziale impatto sulla compatibilità di un'applicazione.Audit Only - You can enable this mitigation in audit mode in order to measure the potential compatibility impact on an application. Gli eventi di controllo possono quindi essere visualizzati nel visualizzatore eventi o usando Ricerca avanzata in Microsoft Defender per Endpoint.Audit events can then be viewed either in the event viewer or using Advanced Hunting in Microsoft Defender for Endpoint.