Customize exploit protection
In brief
The article updates Windows Security and PowerShell instructions, clarifies the `-System` scope and `-Remove` behavior, and explains that audit-only ACG monitoring logs policy violations without blocking execution.
What Defender admins need to know
Administrators can use the revised examples to configure system- and app-level mitigations and interpret audit mode more accurately. No action is required.
Summaries are generated from the documentation change itself.
Documentation change
The comparison below shows only the changed extract. Use the full-page view for complete context.
Customize exploit protection
This article lists each of the mitigations available in exploit protection. It indicates whether the mitigation can be applied system-wide or to individual apps, and provides a brief description of how the mitigation works.
ItThis article also describes how to enable or configure the mitigations using Windows Security, PowerShell, and mobile device management (MDM) configuration service providers (CSPs). Configuring exploit protection settings on a single device is the first step in creating a configuration that you can deploy across your network. To deploy this configuration across multiple devices, see Import, export, and deploy exploit protection configurations.
Exploit protection mitigations
The Use default configuration for each of the mitigation settings indicates our recommendation for a base level of protection for everyday usage for home users. Enterprise deployments should consider the protection required for their individual needs and hence need to modify configuration away from the defaults.
For the associated PowerShell cmdlets for each mitigation, see the PowerShell cmdlets for exploit protection mitigations at the bottom of this article.
| Mitigation | Description | Can be applied to | Audit mode available |
|---|
Configure system-level mitigations with the Windows Security app
To configure system-level and app-level exploit protection mitigations on an individual device, use the Windows Security app:
Open the Windows Security app by selecting the shield icon in the task bar or searching the start menu for Windows Security.
Select the App & browser control tile (or the app icon on the left menu bar) and then select Exploit protection.
Changing some settings may require restarting the device.
Repeat these configuration steps for all the system-level mitigations you want to configure.
Go to the Program settings section and choose the app you want to apply mitigations to:
Repeat these steps for all the apps and mitigations you want to configure. Select Apply when you're done setting up your configuration.
You can now export the exploit protection configuration as an XML file or continue on to configure app-specific mitigations.
Exporting the configuration as an XML file allows you to copy the configuration from one device onto other devices.
You can use the Windows Security app to configure Exploit protection, or you can use PowerShell cmdlets.
The configuration settings that were most recently modified will always be applied - regardless of whether you use PowerShell or Windows Security. This means thatBecause the most recently modified configuration is always applied, if you use the app to configure a mitigation, then use PowerShell to configure the same mitigation, the app will update to show the changes you made with PowerShell. If you were to then use the app to change the mitigation again, that change would apply.
-Enableto enable the mitigation-Disableto disable the mitigation- <Mitigation>:
- The mitigation's cmdlet as defined in the exploit protection mitigation cmdlets table below, along with any suboptions (surrounded with spaces). Each mitigation is separated with a comma.
For example, to enable the Data Execution Prevention (DEP) mitigation with ATL thunk emulation and for an executable called testing.exe in the folder C:\Apps\LOB\tests, and to prevent that executable from creating child processes, you'd use the following command:
To apply a mitigation at the system level instead of to a specific application, use the -System scope. For example, to enable DEP for all processes on the device, you'd use the following command:
Set-Processmitigation -System -Enable DEP
To disable mitigations, you can replace `-Enable` with `-Disable`. However, for app-level mitigations, this will force the mitigation to be disabled only for that app.
If you need to restore an app-level mitigation back to the system default, you need to include the `-Remove` cmdlet as well. The following example removes the app-specific DEP override for *test.exe* so that it inherits the system default:
```PowerShell
Set-Processmitigation -Name test.exe -Remove -Disable DEP
You can also set some mitigations to audit mode. Instead of using the PowerShell cmdlet for the mitigation, use the Audit mode cmdlet as specified in the exploit protection mitigation cmdlets table below.
For example, to enablethe following command enables audit-only monitoring for the Arbitrary Code Guard (ACG) in audit mode formitigation on the testing.exe used previously, you'd use the following command:which logs policy violations without blocking execution:
Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable AuditDynamicCode
|Validate image dependency integrity|App-level only|EnforceModuleDepencySigning|Audit not available|
|Validate stack integrity (StackPivot)|App-level only|EnableRopStackPivot|Audit not available<a href="#r2" id="t2">\[2\]</a>|
<a href="#t1" id="r1">\[1\]</a>: UseTo enable Export Address Filtering Plus (EAF+) for a process and restrict it to specific DLL modules, use the following format to enable EAF modules for dlls for a process:format:
```PowerShell
Set-ProcessMitigation -Name processName.exe -Enable EnableExportAddressFilterPlus -EAFModules dllName1.dll,dllName2.dll
<a href="#t2" id="r2">\[2\]</a>: Audit for this mitigation is not available via PowerShell cmdlets.
<a name="customize-the-notification"></a>
## Customize the notificationexploit protection notifications
For more information about customizing the notification when a rule is triggered and blocks an app or file, see [Windows Security](/windows/security/threat-protection/operating-system-security/system-security/windows-defender-security-center/windows-defender-security-center).
## See alsoRelated content
- [Protect devices from exploits](exploit-protection.md)
- [Evaluate exploit protection](evaluate-exploit-protection.md)
@@ -12,12 +12,12 @@ ms.collection: - m365-security - tier2 - mde-asr-ms.date: 06/16/2026+ms.date: 07/03/2026 appliesto: - Microsoft Defender for Endpoint Plan 1 - Microsoft Defender for Endpoint Plan 2 ai-usage: ai-assisted-ms.custom: msecd-doc-authoring-1014+ms.custom: msecd-doc-authoring-1016 --- # Customize exploit protection@@ -28,10 +28,10 @@ Configure these settings using the Windows Security app on an individual device. This article lists each of the mitigations available in exploit protection. It indicates whether the mitigation can be applied system-wide or to individual apps, and provides a brief description of how the mitigation works. -It also describes how to enable or configure the mitigations using Windows Security, PowerShell, and mobile device management (MDM) configuration service providers (CSPs). Configuring exploit protection settings on a single device is the first step in creating a configuration that you can deploy across your network. To deploy this configuration across multiple devices, see [Import, export, and deploy exploit protection configurations](import-export-exploit-protection-emet-xml.md).+This article also describes how to enable or configure the mitigations using Windows Security, PowerShell, and mobile device management (MDM) configuration service providers (CSPs). Configuring exploit protection settings on a single device is the first step in creating a configuration that you can deploy across your network. To deploy this configuration across multiple devices, see [Import, export, and deploy exploit protection configurations](import-export-exploit-protection-emet-xml.md). > [!WARNING]-> Some security mitigation technologies may have compatibility issues with some applications. You should test exploit protection in all target use scenarios by using [audit mode](evaluate-exploit-protection.md) before deploying the configuration across a production environment or the rest of your network.+> Some security mitigation technologies may have compatibility issues with some applications. You should test exploit protection in all target use scenarios by using [exploit protection audit mode](evaluate-exploit-protection.md) before deploying the configuration across a production environment or the rest of your network. ## Exploit protection mitigations @@ -43,7 +43,7 @@ Default values are always specified in brackets at the **Use default** option fo The **Use default** configuration for each of the mitigation settings indicates our recommendation for a base level of protection for everyday usage for home users. Enterprise deployments should consider the protection required for their individual needs and hence need to modify configuration away from the defaults. -For the associated PowerShell cmdlets for each mitigation, see the [PowerShell reference table](#cmdlets-table) at the bottom of this article.+For the associated PowerShell cmdlets for each mitigation, see the [PowerShell cmdlets for exploit protection mitigations](#cmdlets-table) at the bottom of this article. |Mitigation|Description|Can be applied to|Audit mode available| |---|---|---|---|@@ -90,6 +90,8 @@ For the associated PowerShell cmdlets for each mitigation, see the [PowerShell r ### Configure system-level mitigations with the Windows Security app +To configure system-level and app-level exploit protection mitigations on an individual device, use the Windows Security app:+ 1. Open the Windows Security app by selecting the shield icon in the task bar or searching the start menu for **Windows Security**. 1. Select the **App & browser control** tile (or the app icon on the left menu bar) and then select **Exploit protection**.@@ -102,9 +104,9 @@ For the associated PowerShell cmdlets for each mitigation, see the [PowerShell r > [!NOTE] > You may see a User Account Control window when changing some settings. Enter administrator credentials to apply the setting. - Changing some settings may require a restart.+ Changing some settings may require restarting the device. -1. Repeat this for all the system-level mitigations you want to configure.+1. Repeat these configuration steps for all the system-level mitigations you want to configure. 1. Go to the **Program settings** section and choose the app you want to apply mitigations to: @@ -117,7 +119,7 @@ For the associated PowerShell cmdlets for each mitigation, see the [PowerShell r 1. Repeat these steps for all the apps and mitigations you want to configure. Select **Apply** when you're done setting up your configuration. -You can now [export these settings as an XML file](import-export-exploit-protection-emet-xml.md) or continue on to configure app-specific mitigations.+You can now [export the exploit protection configuration as an XML file](import-export-exploit-protection-emet-xml.md) or continue on to configure app-specific mitigations. Exporting the configuration as an XML file allows you to copy the configuration from one device onto other devices. @@ -125,7 +127,7 @@ Exporting the configuration as an XML file allows you to copy the configuration You can use the Windows Security app to configure Exploit protection, or you can use PowerShell cmdlets. -The configuration settings that were most recently modified will always be applied - regardless of whether you use PowerShell or Windows Security. This means that if you use the app to configure a mitigation, then use PowerShell to configure the same mitigation, the app will update to show the changes you made with PowerShell. If you were to then use the app to change the mitigation again, that change would apply.+The configuration settings that were most recently modified will always be applied - regardless of whether you use PowerShell or Windows Security. Because the most recently modified configuration is always applied, if you use the app to configure a mitigation, then use PowerShell to configure the same mitigation, the app will update to show the changes you made with PowerShell. If you were to then use the app to change the mitigation again, that change would apply. > [!IMPORTANT] > Any changes that are deployed to a device through Group Policy will override the local configuration. When setting up an initial configuration, use a device that will not have a Group Policy configuration applied to ensure your changes aren't overridden.@@ -160,7 +162,7 @@ Where: - `-Enable` to enable the mitigation - `-Disable` to disable the mitigation - \<Mitigation\>:- - The mitigation's cmdlet as defined in the [mitigation cmdlets table](#cmdlets-table) below, along with any suboptions (surrounded with spaces). Each mitigation is separated with a comma.+ - The mitigation's cmdlet as defined in the [exploit protection mitigation cmdlets table](#cmdlets-table) below, along with any suboptions (surrounded with spaces). Each mitigation is separated with a comma. For example, to enable the Data Execution Prevention (DEP) mitigation with ATL thunk emulation and for an executable called *testing.exe* in the folder *C:\Apps\LOB\tests*, and to prevent that executable from creating child processes, you'd use the following command: @@ -171,7 +173,7 @@ Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable DEP, EmulateAt > [!IMPORTANT] > Separate each mitigation option with commas. -If you wanted to apply DEP at the system level, you'd use the following command:+To apply a mitigation at the system level instead of to a specific application, use the `-System` scope. For example, to enable DEP for all processes on the device, you'd use the following command: ```PowerShell Set-Processmitigation -System -Enable DEP@@ -179,15 +181,15 @@ Set-Processmitigation -System -Enable DEP To disable mitigations, you can replace `-Enable` with `-Disable`. However, for app-level mitigations, this will force the mitigation to be disabled only for that app. -If you need to restore the mitigation back to the system default, you need to include the `-Remove` cmdlet as well, as in the following example:+If you need to restore an app-level mitigation back to the system default, you need to include the `-Remove` cmdlet as well. The following example removes the app-specific DEP override for *test.exe* so that it inherits the system default: ```PowerShell Set-Processmitigation -Name test.exe -Remove -Disable DEP ``` -You can also set some mitigations to audit mode. Instead of using the PowerShell cmdlet for the mitigation, use the **Audit mode** cmdlet as specified in the [mitigation cmdlets table](#cmdlets-table) below.+You can also set some mitigations to audit mode. Instead of using the PowerShell cmdlet for the mitigation, use the **Audit mode** cmdlet as specified in the [exploit protection mitigation cmdlets table](#cmdlets-table) below. -For example, to enable Arbitrary Code Guard (ACG) in audit mode for the *testing.exe* used previously, you'd use the following command:+For example, the following command enables audit-only monitoring for the Arbitrary Code Guard (ACG) mitigation on the *testing.exe* used previously, which logs policy violations without blocking execution: ```PowerShell Set-ProcessMitigation -Name c:\apps\lob\tests\testing.exe -Enable AuditDynamicCode@@ -225,7 +227,7 @@ This table lists the PowerShell cmdlets (and associated audit mode cmdlet) that |Validate image dependency integrity|App-level only|EnforceModuleDepencySigning|Audit not available| |Validate stack integrity (StackPivot)|App-level only|EnableRopStackPivot|Audit not available<a href="#r2" id="t2">\[2\]</a>| -<a href="#t1" id="r1">\[1\]</a>: Use the following format to enable EAF modules for dlls for a process:+<a href="#t1" id="r1">\[1\]</a>: To enable Export Address Filtering Plus (EAF+) for a process and restrict it to specific DLL modules, use the following format: ```PowerShell Set-ProcessMitigation -Name processName.exe -Enable EnableExportAddressFilterPlus -EAFModules dllName1.dll,dllName2.dll@@ -233,11 +235,12 @@ Set-ProcessMitigation -Name processName.exe -Enable EnableExportAddressFilterPlu <a href="#t2" id="r2">\[2\]</a>: Audit for this mitigation is not available via PowerShell cmdlets. -## Customize the notification+<a name="customize-the-notification"></a>+## Customize exploit protection notifications -For more information about customizing the notification when a rule is triggered and blocks an app or file, see [Windows Security](/windows/security/threat-protection/windows-defender-security-center/windows-defender-security-center).+For more information about customizing the notification when a rule is triggered and blocks an app or file, see [Windows Security](/windows/security/operating-system-security/system-security/windows-defender-security-center/windows-defender-security-center). -## See also+## Related content - [Protect devices from exploits](exploit-protection.md) - [Evaluate exploit protection](evaluate-exploit-protection.md) 