Personalizzare la protezione dagli exploit

La protezione dagli exploit applica automaticamente molte tecniche di mitigazione degli exploit sia nei processi del sistema operativo che 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.

Questo articolo descrive anche come abilitare o configurare le mitigazioni usando protezione di Windows, PowerShell e i provider di servizi di configurazione MDM (Mobile Device Management). La configurazione delle impostazioni di protezione dagli exploit in un singolo dispositivo è il primo passaggio per la creazione di una configurazione che è possibile distribuire in rete. Per distribuire questa configurazione in più dispositivi, vedere Importare, esportare e distribuire configurazioni di protezione dagli exploit.

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 della protezione dagli exploit 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 altre opzioni indicate nella descrizione della tabella.

I valori predefiniti vengono sempre specificati tra parentesi quadre nell'opzione Usa impostazione predefinita per ogni mitigazione. Nell'esempio seguente l'impostazione predefinita per Prevenzione esecuzione 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 prendere in considerazione la protezione necessaria per le singole esigenze e quindi modificare la configurazione al di fuori delle impostazioni predefinite.Enterprise deployments should consider the protection required for their individual needs and quindi need to modify configuration away from the defaults.

Per i cmdlet di PowerShell associati per ogni mitigazione, vedere i cmdlet di PowerShell per le mitigazioni della protezione dagli exploit nella parte inferiore di questo articolo.

Mitigazione Descrizione Può essere applicato a Modalità di controllo disponibile
Protezione del flusso di controllo (CFG) Garantisce l'integrità del flusso di controllo per le chiamate indirette. Può facoltativamente sopprimere le esportazioni e usare CFG rigoroso. A livello di sistema e di app No
Prevenzione dell'esecuzione dei dati (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
Rende casuali le allocazioni di memoria (ASLR bottom-up) Utilizza i percorsi casuali per le allocazioni di memoria virtuale. Comprende heap delle strutture 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
Convalidare le catene di eccezione (SEHOP) Garantisce l'integrità di una catena di eccezioni durante i dispatch di 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
Protezione da codice arbitrario (ACG) Impedisce l'introduzione di codice eseguibile non supportato da immagini e impedisce la modifica delle tabelle codici. Può consentire facoltativamente la disattivazione 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
Protezione dell'integrità del codice Limita il caricamento delle immagini firmate da Microsoft, WHQL o versione successiva. Consente facoltativamente immagini firmate da 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 consentire i processi figlio Impedisce a un'app di creare processi figlio. Solo a livello app
Filtro di indirizzi da esportare (EAF) Rileva operazioni pericolose che vengono 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 operazioni pericolose che vengono risolte da un 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
Convalidare l'invocazione API (CallerCheck) Garantisce che i chiamanti legittimi richiamino API sensibili. 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 Impone la firma del codice per il caricamento delle dipendenze delle immagini Windows. Solo a livello app No
Verifica l'integrità dello stack (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 programma e si configurano le singole impostazioni di mitigazione, queste verranno rispettate sopra la 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 Mikael configura la Prevenzione esecuzione dati (DEP) nella sezione 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 Josie configura la Prevenzione esecuzione dati (DEP) nella sezione Impostazioni di sistema in modo che sia disattivata per impostazione predefinita. Josie aggiunge quindi l'app test.exe alla sezione Impostazioni del 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. Lei non abilita l'opzione Sostituisci le impostazioni di sistema per il DEP o qualsiasi altra misura di mitigazione per tale 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 paese o l'area geografica.

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

Per configurare le mitigazioni della protezione dagli exploit a livello di sistema e a livello di app in un singolo dispositivo, usare l'app protezione 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 è disabilitata per le app che non hanno questa mitigazione impostata nella sezione Impostazioni del 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 il riavvio del dispositivo.

  4. Ripetere questi passaggi di configurazione 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:
      • Usa Aggiungi in base al nome del programma in modo che la mitigazione venga applicata a qualsiasi processo in esecuzione con quel 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.
      • Utilizzare Scegli il percorso esatto del file per usare una finestra standard di Esplora file di Windows per la selezione dei file e trovare 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 la configurazione della protezione dagli exploit come file XML o continuare a configurare 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. Poiché la configurazione modificata più di recente viene sempre applicata, se si usa l'app per configurare una mitigazione, usare 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. Specifica 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>:

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.

Per applicare una mitigazione a livello di sistema anziché a un'applicazione specifica, usare l'ambito -System . Ad esempio, per abilitare DEP per tutti i processi nel dispositivo, 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 del sistema per una mitigazione a livello di app, è necessario includere anche il -Remove cmdlet . L'esempio seguente rimuove l'override DEP specifico dell'app per test.exe in modo che erediti l'impostazione predefinita del sistema:

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 Modalità di controllo come specificato nella tabella dei cmdlet di mitigazione della protezione dagli exploit riportata di seguito.

Ad esempio, il comando seguente abilita il monitoraggio in sola verifica per la mitigazione Arbitrary Code Guard (ACG) su testing.exe, usato in precedenza, che registra le violazioni dei criteri senza bloccare l'esecuzione:

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 Verifica non disponibile
Prevenzione dell'esecuzione dei dati (DEP) A livello di sistema e di app DEP, EmulateAtlThunks Verifica non disponibile
Forza l'assegnazione casuale per le immagini (ASLR obbligatorio) A livello di sistema e di app ForceRelocateImages Verifica non disponibile
Rende casuali le allocazioni di memoria (ASLR bottom-up) A livello di sistema e di app BottomUp, HighEntropy Verifica non disponibile
Convalidare le catene di eccezione (SEHOP) A livello di sistema e di app SEHOP, SEHOPTelemetry Verifica non disponibile
Convalida l'integrità dell'heap A livello di sistema e di app Termina in caso di errore Verifica non disponibile
Protezione da codice arbitrario (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 Blocca immagini remote Verifica non disponibile
Blocca i tipi di carattere non attendibili Solo a livello app DisableNonSystemFonts AuditFont, FontAuditOnly
Protezione dell'integrità del codice Solo a livello app MicrosoftSignedOnly, AllowStoreSignedBinaries AuditMicrosoftSigned, AuditStoreSigned
Disabilita i punti di estensione Solo a livello app ExtensionPoint Verifica non disponibile
Disabilita le chiamate di sistema Win32k Solo a livello app DisableWin32kSystemCalls AuditSystemCall
Non consentire i 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]
Convalidare l'invocazione API (CallerCheck) Solo a livello app EnableRopCallerCheck Controllo non disponibile[2]
Convalida l'uso di handle Solo a livello app StrictHandle Verifica non disponibile
Convalida l'integrità di dipendenza dell'immagine Solo a livello app EnforceModuleDepencySigning Verifica non disponibile
Verifica l'integrità dello stack (StackPivot) Solo a livello app EnableRopStackPivot Controllo non disponibile[2]

[1]: Per abilitare Export Address Filtering Plus (EAF+) per un processo e limitarlo a moduli DLL specifici, usare il formato seguente:

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 le notifiche di protezione dagli exploit

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