Skip to main content

Patching Gaps in the CIS Windows 11 Benchmark - Level 2 Windows 11

· loading ·
Microsoft Intune Windows 10 and later Security Center for Internet Security (CIS) Custom Profiles Settings Catalog Remediation Scripts PowerShell
Author
Nick Benton
Principal Cloud Endpoint Consultant | Intune Blogger
Author
Jonathan Fallis
Cloud Endpoint Consultant | DeploymentShare.com Author
Table of Contents
Patching Gaps in the CIS Windows 11 Benchmark - This article is part of a series.
Part 4: This Article

This is the final part in this series, covering the final boss CIS Level 2 settings; I’ve brought back Jonathan to share the pain again.

After the weeks reviewing and working on the benchmark, we can both happily say that we’re very glad to not have to look at CIS benchmarks for a while…until they release a new one for you know iOS 18 or something (foreshadowing).

The settings in the CIS Level 2 benchmark are for the hardcore security fans out there, high security environments, or for when you just plain hate your end-users and just want to stop them from using their Windows 11 devices in normal ways.

Let’s start on a positive note though, and look into some of the settings in the CIS build kit that just weren’t put together with logical though processes.

CIS Level 2 Issues
#

Remember that the CIS Level 2 settings on their own aren’t particularly useful without their BitLocker and Level 1 counterparts, issues or otherwise 😄.

CIS Settings
All CIS profiles in Microsoft Intune.

So make sure you have a good understanding of the impact of these levels by looking at all posts in this series.

For now though, let’s continue into CIS Level 2 build kit profiles and work out where the issues sit.

Windows Enterprise Edition
#

Before we even look at the problems enabling the DisableStoreOriginatedApps setting will cause, it’s worth mentioning that this setting is a Windows Enterprise/Education edition only configuration:

PolicyCSP Windows Edition Settings
PolicyCSP Edition settings for DisableStoreOriginatedApps

So exactly like the previous post, a quick PowerShell script would allow us to configure the registry equivalent setting.

Windows Pro registry settings
Windows Pro registry settings under HKLM:\Software\Policies\Microsoft\WindowsStore.

Sadly though, this is a true Windows Enterprise/Education setting and will do absolutely nothing on any other Windows edition, so there’s no point in building a PowerShell script to apply the registry setting to our Windows Professional or otherwise devices.

User Settings
#

We’ve seen this previously so for the sake of completeness we should also break out the user specific settings into their own profiles, and assign these to users and not devices.

User Settings Not Applicable
User Only settings not applying to the device context in Microsoft Intune.

CIS (L2) Administrative Templates (User) - Windows 11 Intune 3.0.1
Category Setting Value
Administrative Templates > Windows Components > Windows Media Player > Playback Prevent Codec Download (User) Enabled
Administrative Templates > System > Internet Communication Management > Internet Communication settings Turn off Help Experience Improvement Program (User) Enabled

More user only settings.

CIS (L2) Section 11.1 - 80 (No Services) (User) - Windows 11 Intune 3.0.1
Category Setting Value
Experience Allow Windows Spotlight (User) Block
The amended profiles and the new user based profiles, CIS (L2) Administrative Templates (User) - Windows 11 Intune 3.0.1 and CIS (L2) Section 11.1 - 80 (No Services) (User) - Windows 11 Intune 3.0.1 are available for you to import into Microsoft Intune.

Miscellaneous Settings
#

As with CIS Level 1, there are some settings they couldn’t shoehorn into a Settings Catalog policy, leaving us to create a new Custom Profile picking up the pieces.

CIS (L2) Level 2 Misc - Windows 11 Intune 3.0.1
Name OMA-URI Data Type Value
AllowSharedUserAppData ./Device/Vendor/MSFT/Policy/Config/ApplicationManagement/AllowSharedUserAppData Integer 0
DisableEnterpriseAuthProxy ./Device/Vendor/MSFT/Policy/Config/System/DisableEnterpriseAuthProxy Integer 1
AllowLocation ./Device/Vendor/MSFT/Policy/Config/System/AllowLocation Integer 0
DisallowCloudNotification ./Device/Vendor/MSFT/Policy/Config/Notifications/DisallowCloudNotification Integer 1

We’ll deal with the impact of these settings later on, for now just be happy we can create them in Microsoft Intune.

A Custom profile for you to import, CIS (L2) Level 1 Misc - Windows 11 Intune 3.0.1, these were exported using Intune Management so you’ll need to import them using the same tool.

CIS Level 2 Settings
#

Now we’ve covered the missing or at least misconfigured CIS Level 2 settings, let’s dig into their impact on Windows 11 cloud native devices.

CIS Level 2 Settings
CIS Level 2 settings in Microsoft Intune.

Starting in no particular order (we lied, it’s the worst one first).

Blocking Store Apps
#

Well this one is a a bit of a kicker, we could deal with some end user experience changes as part of the CIS benchmark, what we can’t deal with are Microsoft Store apps being disabled entirely.

Application Block Message
Application Blocked message in Windows 11.

CIS (L2) Section 11.1 - 80 (No Services) - Windows 11 Intune 3.0.1
Category Setting Value
Microsoft App Store Disable Store Originated Apps Enabled

This kind of takes the piss mick really, it’s not just the built-in apps such as Paint, Calculator and the like, but any UWP app that has come from the store originally, including the Company Portal, and any UWP based Microsoft Store app (new) apps you’ve deployed from Microsoft Intune like Mozilla Firefox.

Microsoft Intune deployed Store Win32 Apps, such as Adobe Reader, are safe though, which does align with the CIS benchmark documents reasoning:

The Store service is a retail outlet built into Windows, primarily for consumer use. In an enterprise managed environment, the IT department should be managing the installation of all applications to reduce the risk of the installation of vulnerable software.

Did someone not tell CIS that we are managing the installation of apps, they just happen to be store apps now?

UWP Store (new) Apps from Microsoft Intune will still get installed on your devices, they just won’t actually run 😬.

Blocking App Updates
#

It’s not enough that the Store originated apps are gone, but also the ability to allow them to update.

Disable turns off the launch of all apps from the Microsoft Store that came pre-installed or were downloaded. Apps will not be updated. Your Store will also be disabled.

So that leave’s us with outdated unpatched applications, which doesn’t make any sense from a security stand point.

Even if you can’t actually use the applications, you’re stopping them from being updated? Surely this is a bad move CIS?

Either way, you can force them to update using a Remediation script, as has been covered before:

Keeping Windows Store Apps Updated with Microsoft Intune
· loading
Microsoft Intune Windows 10 and later Software Updates Remediation Scripts Apps PowerShell Windows Autopilot Security
Now we all love the new Windows Store, especially for deploying applications from Microsoft Intune, but we should find a way to keep these UWP applications up to date without additional license cost.

OneDrive Settings
#

Let’s say goodbye to OneDrive whilst we’re at it; the CIS Level 2 settings actively stop OneDrive from being available across all of Windows 11.

CIS (L2) Section 11.1 - 80 (No Services) - Windows 11 Intune 3.0.1
Category Setting Value
System Disable One Drive File Sync Sync disabled.

This doesn’t just block the ability synchronise files locally from OneDrive or SharePoint Online, but removes OneDrive from File Explorer, and any integration into applications as well.

Enabling this setting prevents users from accidentally (or intentionally) uploading confidential or sensitive corporate information to the OneDrive cloud service using the Next Generation Sync Client.

Where on earth are users meant to upload corporate information if not to OneDrive ffs 🧐.

No working around this one, leaving your end-users only able to access files in OneDrive from the web, and pretty much breaking any option to utilise known folder move across Windows devices.

Cloud Search #

More feature breaking settings inbound, with the below settings stopping users having the ability to search either OneDrive or SharePoint Online content from within the Windows 11 search bar.

CIS (L2) Section 11.1 - 80 (No Services) - Windows 11 Intune 3.0.1
Category Setting Value
Search Allow Cloud Search Not allowed.

Do CIS hate Microsoft integrations? Or do they love the Microsoft Edge homepage integration with OneDrive and SharePoint, and are just forcing uses to access this to find their recently worked on documents, or collaborations?

Due to privacy concerns, data should never be sent to any third-party since this data could contain sensitive information.

Do they realise that these Windows 11 devices are already sharing quite a lot of information with Microsoft, what’s a few extra documents going to hurt?

Remote Desktop
#

It just keeps getting better. No remote desktop access, even for those users explicitly given permission to remote desktop.

CIS (L2) Administrative Templates - Windows 11 Intune 3.0.1
Category Setting Value
Administrative Templates > Windows Components > Remote Desktop Services > Remote Desktop Session Host > Connections Allow users to connect remotely by using Remote Desktop Services Disabled

Surely there must be a bit of wriggle room with this one based upon the rationale in the CIS Benchmark document?

Any account with the Allow log on through Remote Desktop Services user right can log on to the remote console of the computer. If you do not restrict access to legitimate users who need to log on to the console of the computer, unauthorized users could download and execute malicious code to elevate their privileges.

It looks like you might be able to get away with not disabling this, if you’re controlling the Allow log on through Remote Desktop Services, which we actually are, in the Level 1 profile CIS (L1) User Rights Global - Windows 11 Intune 3.0.1.

Locating Devices
#

You might not have any interest in using the locate device functionality within Microsoft Intune, to legitimately find lost or stolen Windows devices (and not to be nosey and abuse privileges), but some people do.

Located Device
Locate device failing in Microsoft Intune.

Those people should not try and align themselves to CIS Level 2, as one of the key requirements for locating a device, is allowing location services, which after we configured the miscellaneous settings earlier is now disabled.

CIS (L2) Level 2 Misc - Windows 11 Intune 3.0.1
Name OMA-URI Data Type Value
AllowLocation ./Device/Vendor/MSFT/Policy/Config/System/AllowLocation Integer 0

Turns out though, if you have a legitimate reason, you might be able to change this setting, and maybe some others…

This setting affects the location feature (e.g. GPS or other location tracking). From a security perspective, it’s not a good idea to reveal your location to software in most cases, but there are legitimate uses, such as mapping software. However, they should not be used in high security environments.

…and allow location services to find out if your dad really went to get milk your lost and stolen devices.

Organisational Messages
#

Whoever is using these in Microsoft Intune, please let us know 😂.

Either way to use Organisational Messages there are a handful of pre-requisites, specifically Windows Spotlight, which we are now blocking.

CIS (L2) Section 11.1 - 80 (No Services) (User) - Windows 11 Intune 3.0.1
Category Setting Value
Experience Allow Windows Spotlight (User) Block

So another bit of Microsoft Intune functionality is gone.

Next.

Windows System Services
#

We’ve seen something like this somewhere before, this time it’s another whole set of system services up for the chop, with the impact of disabling these services detailed below.

CIS (L2) System Services - Windows 11 Intune 3.0.1
Service Name Service Description Impact
BTAGService Bluetooth Audio Gateway Service No more Bluetooth headsets or speakers.
bthserv Bluetooth Support Service No more Bluetooth devices.
MapsBroker Downloaded Maps Manager Makes no difference as Maps is blocked anyways
lfsvc Geolocation Service There goes Location services again.
lltdsvc Link-Layer Topology Discovery Mapper No network device discovery maps.
MSiSCSI Microsoft iSCSI Initiator Service No iSCSI attached devices.
PNRPsvc Peer Name Resolution Protocol No chatting to internet devices about their names.
p2psvc Peer Networking Grouping Definitely no chatting to internet devices about their names.
p2pimsvc Peer Networking Identity Manager Seriously no chatting to internet devices about their names.
PNRPAutoReg PNRP Machine Name Publication Service We get it, no chatting to internet devices about their names.
Spooler Print Spooler No printing, not even to PDF but you know PrintNightmare was a thing.
wercplsupport Problem Reports and Solutions Control Panel Support No reporting issues, shhhhhh your mouth.
RasAuto Remote Access Auto Connection Manager No Always On VPN device tunnel connections.
SessionEnv Remote Desktop Configuration Just no Remote Desktop access.
TermService Remote Desktop LocalServices Still no Remote Desktop access.
UmRdpService Remote Desktop LocalServices UserMode Port Redirector More no Remote Desktop Access.
RemoteRegistry Remote Registry No Remote Registry access.
LanmanServer Server No File or Print sharing.
SNMP SNMP Service No SNMP communication.
WerSvc Windows Error Reporting Service CIS hates errors.
Wecsvc Windows Event Collector Also events. Bet it hates Birthdays as well.
WpnService Windows Push Notifications System Service We can assume that Organisation Messages are dead, as the network endpoints are specifically called out.
PushToInstall Windows PushToInstall Service Does this kill the deployment of Store Apps from Microsoft Intune? It does not, phew.
WinRM Windows Remote Management No remote PowerShell sessions.

If after understanding the entire impact of disabling these services, you still want to have to disable them, you can deploy the provided PowerShell script using Microsoft Intune with deployment settings:

CIS Level 2 System Services Script
CIS Level 2 services PowerShell Script in Microsoft Intune.

The PowerShell Script CIS (L2) System Services - Windows 11 Intune 3.0.1 is available to download and add as a new Platform Script to Microsoft Intune.

And following on from the previous improvement, you can deploy a Remediation detection script to devices in scope of CIS Level 2.

CIS (L2) System Services - Windows 11 Intune 3.0.1_Detection.ps1
$cisServices = @(
    'BTAGService', # Bluetooth Audio Gateway Service
    'bthserv', # Bluetooth Support Service
    'MapsBroker', # Downloaded Maps Manager
    'lfsvc', # Geolocation Service
    'lltdsvc', # Link-Layer Topology Discovery Mapper
    'MSiSCSI', # Microsoft iSCSI Initiator Service
    'PNRPsvc', # Peer Name Resolution Protocol
    'p2psvc', # Peer Networking Grouping
    'p2pimsvc', # Peer Networking Identity Manager
    'PNRPAutoReg', # PNRP Machine Name Publication Service
    'Spooler', # Print Spooler
    'wercplsupport', # Problem Reports and Solutions Control Panel Support
    'RasAuto', # Remote Access Auto Connection Manager
    'SessionEnv', # Remote Desktop Configuration
    'TermService', # Remote Desktop LocalServices
    'UmRdpService', # Remote Desktop LocalServices UserMode Port Redirector
    'RemoteRegistry', # Remote Registry
    'LanmanServer', # Server
    'SNMP', # SNMP Service
    'WerSvc', # Windows Error Reporting Service
    'Wecsvc', # Windows Event Collector
    'WpnService', # Windows Push Notifications System Service
    'PushToInstall', # Windows PushToInstall Service
    'WinRM' # Windows Remote Management
)

# Get current state on the services in the array above.
$localServices = Get-Service -Name $cisServices -ErrorAction SilentlyContinue
$notDisabled = 0

foreach ($cisService in $cisServices) {
    # Make sure service name in the list matches with local system services.
    # Added because of Computer Browser mismatch with "bowser" service
    $foundService = $localServices | Where-Object { $_.Name -eq $cisService }

    if ($foundService) {
        if ($foundService.StartType -ne 'Disabled') {
            $notDisabled++
        }
    }
}

if ($notDisabled -gt 0) {
    Write-Output "Found $notDisabled service(s) that should be disabled for CIS Level 2."
    Exit 1
}
else {
    Write-Output 'All required services are disabled for CIS Level 2.'
    Exit 0
}

Along with a suitable remediation script, to ensure that the CIS Level 2 services are set to disabled, and all the nice functionality is gone.

CIS (L2) System Services - Windows 11 Intune 3.0.1_Detection.ps1
$cisServices = @(
    'BTAGService', # Bluetooth Audio Gateway Service
    'bthserv', # Bluetooth Support Service
    'MapsBroker', # Downloaded Maps Manager
    'lfsvc', # Geolocation Service
    'lltdsvc', # Link-Layer Topology Discovery Mapper
    'MSiSCSI', # Microsoft iSCSI Initiator Service
    'PNRPsvc', # Peer Name Resolution Protocol
    'p2psvc', # Peer Networking Grouping
    'p2pimsvc', # Peer Networking Identity Manager
    'PNRPAutoReg', # PNRP Machine Name Publication Service
    'Spooler', # Print Spooler
    'wercplsupport', # Problem Reports and Solutions Control Panel Support
    'RasAuto', # Remote Access Auto Connection Manager
    'SessionEnv', # Remote Desktop Configuration
    'TermService', # Remote Desktop LocalServices
    'UmRdpService', # Remote Desktop LocalServices UserMode Port Redirector
    'RemoteRegistry', # Remote Registry
    'LanmanServer', # Server
    'SNMP', # SNMP Service
    'WerSvc', # Windows Error Reporting Service
    'Wecsvc', # Windows Event Collector
    'WpnService', # Windows Push Notifications System Service
    'PushToInstall', # Windows PushToInstall Service
    'WinRM' # Windows Remote Management
)

# Get current state on the services in the array above.
$localServices = Get-Service -Name $cisServices -ErrorAction SilentlyContinue
$notDisabled = 0

try {
    foreach ($service in $cisServices) {
        # Make sure service name in the list matches with local system services.
        # Added because of Computer Browser mismatch with "bowser" service
        $foundService = $localServices | Where-Object { $_.Name -eq $service }

        if ($foundService) {
            if ($foundService.StartType -ne 'Disabled') {
                $notDisabled++
                Set-Service $FoundService.Name -StartupType Disabled -Force -ErrorAction SilentlyContinue
            }
        }
    }
    Write-Output "Found $notDisabled service(s) that are now disabled."
    Exit 0
}
catch {
    Write-Output "Unable to disable $notDisabled service(s)."
    Exit 2000
}

Deployed using Microsoft Intune to your devices:

CIS Level 2 System Services Remediation
CIS Level 2 services remediation in Microsoft Intune.

Set a suitable schedule for the remediation to run, so you know, you’re breaking things on the regular.

The CIS (L2) System Services - Windows 11 Intune 3.0.1 detection and remediation scripts are available for your to add into your Microsoft Intune tenant.

Summary
#

That’s it. We are done.

What we have realised over the course of this series, is that unless you are required to align to CIS Level 2 settings, don’t do it.

No seriously, unless you really want to limit what features and functionality your end users, and support teams have access to, to allow them to carry out their normal day to day workloads, there is limited value to implement the CIS Level 2 settings just for nish and giggles.

Overall though, these CIS benchmarks do provide a baseline for device security on Windows 11, but it isn’t the complete story, they’re not a cheat sheet to full device security, they’re just a component part.

Have a go yourself implementing the profiles, and see for yourself exactly where the gaps are, what the actual impact is to your own devices, and try and make sense of all 1040 pages of the CIS Windows 11 Benchmark document 😅.

Patching Gaps in the CIS Windows 11 Benchmark - This article is part of a series.
Part 4: This Article

Related

Patching Gaps in the CIS Windows 11 Benchmark - Level 1 Windows 11
· loading
Microsoft Intune Windows 10 and later Security Center for Internet Security (CIS) Endpoint Security Remediation Scripts PowerShell Settings Catalog Custom Profiles
Patching Gaps in the CIS Windows 11 Benchmark - BitLocker
· loading
Microsoft Intune Windows 10 and later Security Center for Internet Security (CIS) Custom Profiles BitLocker Direct Memory Access Settings Catalog
Patching Gaps in the CIS Windows 11 Benchmark - Level 1 Windows Autopilot
· loading
Microsoft Intune Windows 10 and later Security Center for Internet Security (CIS) Windows Autopilot Windows Hello Settings Catalog PowerShell