Anavem
Languagefr
security settingsComputer ConfigurationNot configured

Enable Hardware-Enforced Stack Protection

Enables Control-flow Enforcement Technology (CET) for hardware-based stack protection. Prevents stack-based ROP attacks on supported processors.

10 May 20264 min
Policy path
Computer Configuration > Administrative Templates > System > Exploit Guard > Exploit Guard > Exploit protection settings
Supported on
Windows 10, Windows 11, Windows Server 2016 and later

Enables Control-flow Enforcement Technology (CET) for hardware-based stack protection. Prevents stack-based ROP attacks on supported processors. Security baselines recommend setting it to 1.

Description

Enable Hardware-Enforced Stack Protection is a Windows Group Policy setting located under Computer Configuration > Administrative Templates > System > Exploit Guard > Exploit Guard > Exploit protection settings. It applies to the Computer Configuration branch and is classified as a Informational-level policy in the Exploit Protection category.

Enables Control-flow Enforcement Technology (CET) for hardware-based stack protection. Prevents stack-based ROP attacks on supported processors.

Microsoft sets the default value to 0 while industry security baselines (CIS, NIST, DISA STIG) recommend 1.

Under the hood, this policy is enforced through the Windows registry at HKLM\System\CurrentControlSet\Control\Session Manager\kernel using the value name CetEnabled. Modifying the value directly through regedit.exe or PowerShell produces the same effect as configuring the GPO, but going through Group Policy is preferred so that the setting is centrally managed and survives reboots, image rebuilds, and policy refresh cycles.

In-depth explanation

This is primarily an operational or user-experience setting. It does not directly raise or lower the security posture, but it standardizes behavior across the fleet, which is important for predictable support, training, and troubleshooting in an MSP-managed environment.

The policy is grouped under Exploit Protection, which means it is typically applied through a domain-wide GPO linked at the OU level. In a multi-tenant MSP context, scope it through WMI filters or security group filtering rather than linking at the domain root, so that you can roll out progressively (pilot OU → wider rings → all production).

The setting takes effect after the next Group Policy refresh (gpupdate /force for immediate testing, or by default within ~90 minutes for workstations and ~5 minutes on domain controllers). For computer-side policies a reboot may be required; for user-side policies, a sign-off/sign-on cycle is enough.

Use cases

  • Apply organization-wide hardening of exploit protection on all domain-joined Windows endpoints.
  • Roll out a CIS Benchmark-aligned baseline targeting 'Enable Hardware-Enforced Stack Protection' via a dedicated GPO.
  • Reduce attack surface for accounts that handle privileged credentials or sensitive data.
  • Standardize the configuration across multiple customer tenants for an MSP-managed fleet.

Security implications

This control is primarily about consistency and supportability rather than security. The main risk of leaving it unconfigured is divergence between machines, which makes troubleshooting and standardized imaging harder, especially across multiple customer tenants in an MSP context.

How to configure

  1. Open Group Policy Management Console (gpmc.msc) on a domain controller or a workstation with RSAT installed.
  2. Create or edit a GPO linked to the OU containing the target computer configurations. We recommend a dedicated baseline GPO (e.g. SEC – Exploit Protection) instead of editing Default Domain Policy.
  3. Navigate to Computer Configuration > Administrative Templates > System > Exploit Guard > Exploit Guard > Exploit protection settings.
  4. Open Enable Hardware-Enforced Stack Protection and set it to 1.
  5. Click OK and close the editor.
  6. On the target endpoint, run gpupdate /force (or wait for the next refresh cycle), then verify with rsop.msc or gpresult /h report.html.

Direct registry path: HKLM\System\CurrentControlSet\Control\Session Manager\kernel\CetEnabled. You can apply the same change with PowerShell:

New-Item -Path 'HKLM\System\CurrentControlSet\Control\Session Manager\kernel' -Force | Out-Null
Set-ItemProperty -Path 'HKLM\System\CurrentControlSet\Control\Session Manager\kernel' -Name 'CetEnabled' -Value <value> -Type DWord

Registry mapping

Registry pathHKLM\System\CurrentControlSet\Control\Session Manager\kernel
Value nameCetEnabled
Value typeREG_DWORD
Enabled value1
Disabled value0

Frequently asked questions

What does the Enable Hardware-Enforced Stack Protection Group Policy do?
Enables Control-flow Enforcement Technology (CET) for hardware-based stack protection. Prevents stack-based ROP attacks on supported processors.
Where do I find this setting in the GPO editor?
Open <code>gpmc.msc</code>, then navigate to <code>Computer Configuration > Administrative Templates > System > Exploit Guard > Exploit Guard > Exploit protection settings</code> and look for <strong>Enable Hardware-Enforced Stack Protection</strong>.
What is the Microsoft default value?
<code>0</code> on a fresh Windows install. Domain-joined machines may inherit a different value if a baseline GPO is already in place.
What value do security baselines recommend?
<code>1</code> – aligned with CIS, NIST, and DISA STIG guidance for current Windows versions.
Can I configure this without a GPO?
Yes, by writing to <code>HKLM\System\CurrentControlSet\Control\Session Manager\kernel\CetEnabled</code> directly via <code>regedit</code>, PowerShell, or Intune. A GPO is preferred for centrally managed environments because it survives reimaging and is easier to audit.