Personalizzare la protezione dagli exploit

Si applica a:

Si desidera provare Microsoft Defender per endpoint? iscriversi a una versione di valutazione gratuita.

La protezione dagli exploit applica automaticamente una serie di tecniche di mitigazione degli exploit sia nei processi del sistema operativo sia nelle singole app.

Configurare queste impostazioni usando l'app Sicurezza di Windows in un singolo dispositivo. Esportare quindi la configurazione come file XML in modo che possa essere distribuita in altri dispositivi. Usare Criteri di gruppo per distribuire il file XML a più dispositivi contemporaneamente. È anche possibile configurare le mitigazioni con PowerShell.

Questo articolo elenca tutte le mitigazioni disponibili nella protezione dagli exploit. Indica se la mitigazione può essere applicata a livello di sistema o a singole app e fornisce una breve descrizione del funzionamento della mitigazione.

Descrive anche come abilitare o configurare le mitigazioni usando Sicurezza di Windows, PowerShell e provider di servizi di configurazione MDM (Mobile Device Management). Questo è il primo passaggio nella creazione di una configurazione che è possibile distribuire nella rete. Il passaggio successivo prevede la generazione, l'esportazione, l'importazione e la distribuzione della configurazione in più dispositivi.

Avviso

Alcune tecnologie di mitigazione della sicurezza possono presentare problemi di compatibilità con alcune applicazioni. È consigliabile testare la protezione dagli exploit in tutti gli scenari di utilizzo di destinazione usando la modalità di controllo prima di distribuire la configurazione in un ambiente di produzione o nel resto della rete.

Mitigazioni della protezione dagli exploit

Tutte le mitigazioni possono essere configurate per singole app. Alcune mitigazioni possono essere applicate anche a livello di sistema operativo.

È possibile impostare ognuna delle mitigazioni su on, off o sul relativo valore predefinito. Alcune mitigazioni includono opzioni aggiuntive indicate nella descrizione nella tabella.

I valori predefiniti vengono sempre specificati tra parentesi quadre nell'opzione Usa impostazione predefinita per ogni mitigazione. Nell'esempio seguente il valore predefinito per la prevenzione dell'esecuzione dei dati è "On".

La configurazione predefinita Usa per ognuna delle impostazioni di mitigazione indica la raccomandazione relativa a un livello di protezione di base per l'utilizzo quotidiano per gli utenti privati. Le distribuzioni aziendali devono considerare la protezione necessaria per le proprie esigenze individuali e potrebbe essere necessario modificare la configurazione lontano dalle impostazioni predefinite.

Per i cmdlet di PowerShell associati per ogni mitigazione, vedere la tabella di riferimento di PowerShell nella parte inferiore di questo articolo.

Mitigazione Descrizione Può essere applicato a Modalità di controllo disponibile
Protezione del flusso di controllo (CFG) Garantisce il controllo dell'integrità di flusso per chiamate indirette. Può facoltativamente eliminare le esportazioni e usare criteri di ricerca rigorosi. A livello di sistema e di app No
Protezione esecuzione programmi (DEP) Impedisce l'esecuzione del codice da pagine di memoria solo dati, ad esempio heap e stack. Configurabile solo per le app a 32 bit (x86), abilitata in modo permanente per tutte le altre architetture. Può facoltativamente abilitare l'emulazione thunk ATL. A livello di sistema e di app No
Forza l'assegnazione casuale per le immagini (ASLR obbligatorio) Sposta forzatamente le immagini non compilate con /DYNAMICBASE. Facoltativamente, può non riuscire a caricare immagini che non dispongono di informazioni sulla rilocazione. A livello di sistema e di app No
Utilizza le allocazioni di memoria casuali (ASLR bottom-up) Utilizza i percorsi casuali per le allocazioni di memoria virtuale. Include heap della struttura di sistema, stack, TEB e PEB. Può facoltativamente usare una varianza di randomizzazione più ampia per i processi a 64 bit. A livello di sistema e di app No
Convalida catene di eccezione (SEHOP) Garantisce l'integrità di una catena di eccezioni durante l'invio delle eccezioni. Configurabile solo per applicazioni a 32 bit (x86). A livello di sistema e di app No
Convalida l'integrità dell'heap Termina un processo quando viene rilevato il danneggiamento dell'heap. A livello di sistema e di app No
Controllo arbitrario di codice (ACG) Impedisce l'introduzione di codice eseguibile non supportato da immagini e impedisce la modifica delle tabelle codici. Può facoltativamente consentire il rifiuto esplicito del thread e il downgrade remoto (configurabile solo con PowerShell). Solo a livello app
Blocca immagini con bassa integrità Impedisce il caricamento di immagini contrassegnate da bassa integrità. Solo a livello app
Blocca immagini remote Impedisci il caricamento di immagini da dispositivi remoti. Solo a livello app No
Blocca i tipi di carattere non attendibili Impedisce il caricamento di tipi di carattere basati su GDI non installati nella directory dei tipi di carattere di sistema, in particolare i tipi di carattere dal Web. Solo a livello app
Controllo integrità codice Limita il caricamento delle immagini firmate da Microsoft, WHQL o versione successiva. Può facoltativamente consentire immagini firmate di Microsoft Store. Solo a livello app
Disabilita i punti di estensione Disabilita vari meccanismi di estendibilità che consentono l'inserimento di DLL in tutti i processi, ad esempio DLL AppInit, hook di finestre e provider di servizi Winsock. Solo a livello app No
Disabilita le chiamate di sistema Win32k Impedisce a un'app di usare la tabella delle chiamate di sistema Win32k. Solo a livello app
Non consente i processi figlio Impedisce a un'app di creare processi figlio. Solo a livello app
Filtro di indirizzi da esportare (EAF) Rileva le operazioni pericolose risolte da codice dannoso. Può facoltativamente convalidare l'accesso da moduli comunemente usati dagli exploit. Solo a livello app
Filtro di indirizzi da importare (IAF) Rileva le operazioni pericolose risolte da codice dannoso. Solo a livello app
Simula l'esecuzione (SimExec) Assicura che le chiamate alle API sensibili vengano restituite a chiamanti legittimi. Configurabile solo per applicazioni a 32 bit (x86). Non compatibile con ACG. Solo a livello app
Convalida chiamata di API (CallerCheck) Garantisce che le API sensibili vengano richiamate da chiamanti legittimi. Configurabile solo per applicazioni a 32 bit (x86). Non compatibile con ACG Solo a livello app
Convalida l'uso di handle Causa la generazione di un'eccezione per qualsiasi riferimento a handle non valido. Solo a livello app No
Convalida l'integrità di dipendenza dell'immagine Applica la firma del codice per il caricamento delle dipendenze delle immagini di Windows. Solo a livello app No
Convalida l'integrità della pila (StackPivot) Assicura che lo stack non sia stato reindirizzato per le API sensibili. Non compatibile con ACG. Solo a livello app

Importante

Se si aggiunge un'app alla sezione Impostazioni del programma e si configurano le singole impostazioni di mitigazione, tali impostazioni verranno anteposte alla configurazione per le stesse mitigazioni specificate nella sezione Impostazioni di sistema. La matrice e gli esempi seguenti consentono di illustrare il funzionamento delle impostazioni predefinite:

Abilitato nelle Impostazioni del programma Abilitato nelle Impostazioni di sistema Comportamento
No Come definito nelle Impostazioni del programma
Come definito nelle Impostazioni del programma
No Come definito nelle Impostazioni di sistema
No No Impostazione predefinita come determinato nell'opzione Usa predefinito
  • Esempio 1 Luca configura la Protezione esecuzione programmi (DEP) nella sezione delle impostazioni di sistema in modo che sia disattivata per impostazione predefinita. Luca aggiunge quindi l'app test.exe alla sezione Impostazioni programma. Nelle opzioni per l'app, in Protezione dell'esecuzione dei dati, abilita l'opzione Ignora impostazioni di sistema e imposta l'interruttore su Attivato. Nella sezione Impostazioni del programma non sono elencate altre app. Il risultato sarà che DEP verrà abilitato solo per test.exe. A tutte le altre app non verrà applicato DEP.

  • Esempio 2 Luca configura la Protezione esecuzione programmi (DEP) nella sezione delle impostazioni di sistema in modo che sia disattivata per impostazione predefinita. Luca aggiunge l'app test.exe alla sezione Impostazioni programma. Nelle opzioni per l'app, in Protezione dell'esecuzione dei dati, abilita l'opzione Ignora impostazioni di sistema e imposta l'interruttore su Attivato. Martina aggiunge anche l'app miles.exe alla sezione Impostazioni del programma e configura Protezione del flusso di controllo (Control Flow Guard, CFG) su Attivato. Martina non abilita l'opzione Ignora impostazioni di sistema per DEP o altre mitigazioni per l'app. Il risultato sarà che DEP verrà abilitato per test.exe. DEP non verrà abilitato per altre app, incluso miles.exe. La CFG verrà abilitata per miles.exe.

Nota

Se sono stati rilevati problemi in questo articolo, è possibile segnalarlo direttamente a un partner client Windows Server/Windows o usare i numeri di supporto tecnico Microsoft per il proprio paese/area geografica.

Configurare le mitigazioni a livello di sistema con l'app Sicurezza di Windows

  1. Aprire l'app Sicurezza di Windows selezionando l'icona a forma di scudo nella barra delle applicazioni o eseguendo la ricerca di Sicurezza nel menu Start.

  2. Selezionare il riquadro Controllo app e browser, o l'icona dell'app sulla barra dei menu a sinistra, e selezionare quindi Protezione dagli exploit.

  3. Nella sezione Impostazioni di sistema, individuare la mitigazione che si desidera configurare e selezionare una delle opzioni seguenti. Le app che non sono configurate singolarmente nella sezione Impostazioni programma useranno le impostazioni configurate qui:

    • Attivata per impostazione predefinita: la mitigazione è abilitata per le app per cui la mitigazione non è impostata nella sezione Impostazioni programma specifica dell'app
    • Disattivata per impostazione predefinita: la mitigazione è abilitata per le app per cui la mitigazione non è impostata nella sezione Impostazioni programma specifica dell'app
    • Usa l'impostazione predefinita: la mitigazione è abilitata o disabilitata, a seconda della configurazione predefinita configurata dall'installazione di Windows 10 o Windows 11. Il valore predefinito (Attivata o Disattivata) viene sempre specificato accanto all'etichetta Usa predefinita per ogni mitigazione

    Nota

    Quando si modificano alcune impostazioni, potrebbe essere visualizzata una finestra di controllo dell'account utente. Immettere le credenziali di amministratore per applicare l'impostazione.

    La modifica di alcune impostazioni potrebbe richiedere un riavvio.

  4. Ripetere questo per tutte le mitigazioni a livello di sistema da configurare.

  5. Andare alla sezione Impostazioni del programma e scegliere l'app a cui si desidera applicare le mitigazioni a:

    1. Se l'app che si desidera configurare è già elencata, selezionarla poi scegliere Modifica.
    2. Se l'app non è elencata, nella parte superiore dell'elenco selezionare Aggiungi programma da personalizzare e quindi scegliere come si desidera aggiungere l'app:
      • Usare Aggiungi per nome programma per applicare la mitigazione a qualsiasi processo in esecuzione con tale nome. È necessario specificare un file con estensione. È possibile immettere un percorso completo per limitare la mitigazione solo all'app con questo nome in quella posizione.
      • Usare Scegli il percorso esatto del file per utilizzare una finestra di selezione file Esplora risorse standard per trovare e selezionare il file desiderato.
  6. Dopo aver selezionato l'app, verrà visualizzato un elenco di tutte le mitigazioni che è possibile applicare. Per abilitare la mitigazione, selezionare la casella di controllo e quindi impostare il dispositivo di scorrimento suAttivato. Selezionare le altre opzioni. La scelta di Controllo applicherà la mitigazione solo in modalità di controllo. Si riceverà una notifica se è necessario riavviare il processo o l'app oppure se è necessario riavviare Windows.

  7. Ripetere questi passaggi per tutte le app e le mitigazioni da configurare. Al termine della configurazione, selezionare Applica.

È ora possibile esportare queste impostazioni come file XML o continuare a configurare le mitigazioni specifiche dell'app.

L'esportazione della configurazione come file XML consente di copiare la configurazione da un dispositivo in altri dispositivi.

Riferimenti a PowerShell

È possibile usare l'app Sicurezza di Windows per configurare protezione dagli exploit oppure i cmdlet di PowerShell.

Le impostazioni di configurazione modificate più di recente verranno sempre applicate, indipendentemente dal fatto che si usi PowerShell o Sicurezza di Windows. Questo significa che se si usa l'app per configurare una mitigazione, quindi si usa PowerShell per configurare la stessa mitigazione, l'app verrà aggiornata per visualizzare le modifiche apportate con PowerShell. Se si dovesse quindi usare l'app per modificare di nuovo la mitigazione, tale modifica verrebbe applicata.

Importante

Tutte le modifiche distribuite in un dispositivo tramite Criteri di gruppo sostituiranno la configurazione locale. Quando si configura una configurazione iniziale, usare un dispositivo a cui non verrà applicata una configurazione Criteri di gruppo per assicurarsi che le modifiche non vengano sostituite.

È possibile usare il verbo di PowerShell Get o Set con il cmdlet ProcessMitigation. L'uso di Get elencherà lo stato di configurazione corrente di tutte le mitigazioni abilitate nel dispositivo. Aggiungere il cmdlet -Name e il file exe per visualizzare le mitigazioni solo per l'app:

Get-ProcessMitigation -Name processName.exe

Importante

Le mitigazioni a livello di sistema che non sono state configurate mostreranno lo stato di NOTSET.

Per le impostazioni a livello di sistema, NOTSET indica che è stata applicata l'impostazione predefinita per tale mitigazione.

Per le impostazioni a livello di app, NOTSET indica che è stata applicata l'impostazione a livello di sistema per tale mitigazione.

L'impostazione predefinita per ogni mitigazione a livello di sistema può essere visualizzata in sicurezza di Windows.

Usare Set per configurare ciascuna mitigazione nel formato seguente:

Set-ProcessMitigation -<scope> <app executable> -<action> <mitigation or options>,<mitigation or options>,<mitigation or options>

Dove:

  • <Ambito>:
    • -Name per indicare che le mitigazioni devono essere applicate a un'app specifica. Specificare l'eseguibile dell'app dopo questo flag.
    • -System per indicare che la mitigazione deve essere applicate a livello di sistema
  • <Azione>:
    • -Enable per abilitare la mitigazione
    • -Disable per disabilitare la mitigazione
  • <Mitigazione>:
    • Il cmdlet della mitigazione, come definito nella tabella dei cmdlet di mitigazione seguente, insieme a eventuali sottoopzioni (racchiuse tra spazi). Ogni mitigazione è separata da una virgola.

Ad esempio, per abilitare la mitigazione DEP (Data Execution Prevention) con l'emulazione thunk ATL e per un file eseguibile denominato testing.exe nella cartella C:\Apps\LOB\tests e per impedire a tale eseguibile di creare processi figlio, è consigliabile usare il comando seguente:

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable DEP, EmulateAtlThunks, DisallowChildProcessCreation

Importante

Separare ogni opzione di mitigazione con virgole.

Se si vuole applicare DEP a livello di sistema, usare il comando seguente:

Set-Processmitigation -System -Enable DEP

Per disabilitare le mitigazioni, è possibile sostituire -Enable con -Disable. Tuttavia, per le mitigazioni a livello di app, questo forzerà la disabilitazione della mitigazione solo per l'app.

Se è necessario ripristinare l'impostazione predefinita di sistema per la mitigazione, è necessario includere anche il cmdlet -Remove, come nell'esempio seguente:

Set-Processmitigation -Name test.exe -Remove -Disable DEP

È anche possibile impostare alcune mitigazioni sulla modalità di controllo. Anziché usare il cmdlet di PowerShell per la mitigazione, usare il cmdlet della modalità di controllo come specificato nella tabella dei cmdlet di mitigazione riportata di seguito.

Ad esempio, per abilitare il controllo arbitrario di codice (ACG) nella modalità di controllo per testing.exe, usato in precedenza, usare il comando seguente:

Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable AuditDynamicCode

È possibile disabilitare la modalità di controllo usando lo stesso comando, ma sostituendo -Enable con -Disable.

Tabella di riferimento di PowerShell

Questa tabella elenca i cmdlet di PowerShell (e i cmdlet della modalità di controllo associati) che possono essere usati per configurare ogni mitigazione.

Mitigazione Si applica a Cmdlet di Microsoft PowerShell Cmdlet per la modalità di controllo
Protezione del flusso di controllo (CFG) A livello di sistema e di app CFG, StrictCFG, SuppressExports Controllo non disponibile
Protezione esecuzione programmi (DEP) A livello di sistema e di app DEP, EmulateAtlThunks Controllo non disponibile
Forza l'assegnazione casuale per le immagini (ASLR obbligatorio) A livello di sistema e di app ForceRelocateImages Controllo non disponibile
Utilizza le allocazioni di memoria casuali (ASLR bottom-up) A livello di sistema e di app BottomUp, HighEntropy Controllo non disponibile
Convalida catene di eccezione (SEHOP) A livello di sistema e di app SEHOP, SEHOPTelemetry Controllo non disponibile
Convalida l'integrità dell'heap A livello di sistema e di app TerminateOnError Controllo non disponibile
Controllo arbitrario di codice (ACG) Solo a livello app DynamicCode AuditDynamicCode
Blocca immagini con bassa integrità Solo a livello app BlockLowLabel AuditImageLoad
Blocca immagini remote Solo a livello app BlockRemoteImages Controllo non disponibile
Blocca i tipi di carattere non attendibili Solo a livello app DisableNonSystemFonts AuditFont, FontAuditOnly
Controllo integrità codice Solo a livello app BlockNonMicrosoftSigned, AllowStoreSigned AuditMicrosoftSigned, AuditStoreSigned
Disabilita i punti di estensione Solo a livello app ExtensionPoint Controllo non disponibile
Disabilita le chiamate di sistema Win32k Solo a livello app DisableWin32kSystemCalls AuditSystemCall
Non consentire processi figlio Solo a livello app DisallowChildProcessCreation AuditChildProcess
Filtro di indirizzi da esportare (EAF) Solo a livello app EnableExportAddressFilterPlus, EnableExportAddressFilter [1] Controllo non disponibile[2]
Filtro di indirizzi da importare (IAF) Solo a livello app EnableImportAddressFilter Controllo non disponibile[2]
Simula l'esecuzione (SimExec) Solo a livello app EnableRopSimExec Controllo non disponibile[2]
Convalida chiamata di API (CallerCheck) Solo a livello app EnableRopCallerCheck Controllo non disponibile[2]
Convalida l'uso di handle Solo a livello app StrictHandle Controllo non disponibile
Convalida l'integrità di dipendenza dell'immagine Solo a livello app EnforceModuleDepencySigning Controllo non disponibile
Convalida l'integrità della pila (StackPivot) Solo a livello app EnableRopStackPivot Controllo non disponibile[2]

[1]: usare il formato seguente per abilitare i moduli EAF per le DLL per un processo:

Set-ProcessMitigation -Name processName.exe -Enable EnableExportAddressFilterPlus -EAFModules dllName1.dll,dllName2.dll

[2]: il controllo per questa mitigazione non è disponibile tramite i cmdlet di PowerShell.

Personalizzare la notifica

Per altre informazioni sulla personalizzazione della notifica quando viene attivata una regola che blocca un'app o un file, vedere Sicurezza di Windows.

Vedere anche

Consiglio

Per saperne di più, Engage con la community Microsoft Security nella community tech: Microsoft Defender per endpoint Tech Community.