🚨 CMMC Phase One started November 10! Here's everything you need to know →

How to Implement NIST SP 800-171 REV.2 / CMMC 2.0 Level 2 - Control - CM.L2-3.4.9: Step-by-Step Plan to Control and Monitor User-Installed Software

Step-by-step, practical guidance to meet CM.L2-3.4.9 by preventing, controlling, and monitoring user-installed software across endpoints using policies, endpoint management, application control, and logging.

•
April 10, 2026
•
5 min read

Share:

Schedule Your Free Compliance Consultation

Feeling overwhelmed by compliance requirements? Not sure where to start? Get expert guidance tailored to your specific needs in just 15 minutes.

Personalized Compliance Roadmap
Expert Answers to Your Questions
No Obligation, 100% Free

Limited spots available!

Controlling and monitoring user-installed software (CMMC 2.0 / NIST SP 800-171 CM.L2-3.4.9) is essential to reduce attack surface, prevent unauthorized applications, and produce the auditable evidence required by the Compliance Framework; this post gives a practical, step-by-step plan—with technical examples and small-business scenarios—to implement an effective control and monitoring capability.

Control overview and objectives

The objective of CM.L2-3.4.9 is to ensure that users cannot introduce unapproved software onto systems that process, store, or transmit Controlled Unclassified Information (CUI) and that any user-installed software is inventoried, approved, and monitored. For Compliance Framework purposes you must: (1) define an approved-software/exception process, (2) prevent unauthorized installs (or detect them immediately), and (3) produce logs and artifacts that demonstrate continuous monitoring and enforcement.

Step-by-step implementation plan

1) Create policy, approval workflow, and an approved software baseline

Start with a written policy that defines who may request software, the approval criteria (security review, licensing, vendor trust), and the retention period for approvals. Maintain an Approved Software List (ASL) that includes vendor, version, digital signature requirements, and allowed install paths. For evidence: publish the policy, approval forms, and a changelog of ASL entries in your compliance repository (Confluence, SharePoint, or a simple versioned document store).

2) Inventory existing user-installed software

Perform a full inventory across Windows, macOS, and Linux endpoints. Tools: for small businesses use Intune (Endpoint Manager), Microsoft Defender for Endpoint inventory, or free agents like OSQuery/Wazuh. Quick Windows commands: query installed programs via registry (HKLM\Software\Microsoft\Windows\CurrentVersion\Uninstall and HKCU equivalent) or run Get-CimInstance -ClassName Win32_Product (note: Win32_Product can be slow and triggers repairs; prefer registry reads). On Linux use dpkg -l or rpm -qa; on macOS use system_profiler SPApplicationsDataType. Export inventory snapshots and store them as evidence for compliance.

3) Remove unnecessary local admin rights and enforce least privilege

The most effective control is removing local administrative privileges so users cannot run installers. Implement privileged access by role: admins get Just-In-Time (JIT) privileges via a tool (e.g., Azure AD Privileged Identity Management, or request-based elevation). For small businesses without JIT tools, remove users from local Administrators and use software deployment tools to install approved apps.

4) Deploy Application Control & Endpoint Management

Implement allowlisting (preferred) or hardened blacklisting. Windows options: AppLocker (via Group Policy or Intune), Microsoft Defender Application Control (MDAC), or Smart App Control. Example AppLocker rule types: path-based for known install directories, publisher rules for signed MSI/EXE, and hash rules for single-file exceptions. Example AppLocker path rule (conceptual): allow path "C:\Program Files\ApprovedVendor\*" for group "Domain Computers". For macOS, use MDM (Jamf/Intune) and kernel extension policies; for Linux use SELinux/AppArmor profiles plus package whitelists. Use Endpoint Management (Intune, SCCM/MECM, Jamf) to deploy approved software packages and enforce versions.

5) Monitor, log, and alert on user-installed software

Centralize logs from endpoints and application control into a SIEM (Splunk, Azure Sentinel, Elastic). Collect Event IDs and telemetry such as Windows Event 4688 (process creation) and Sysmon Event ID 1, application install-related registry changes, Windows Installer events (MsiInstaller EVT), and Intune device inventory change events. Create alerts for newly discovered installers, unsigned executables executed from user directories (e.g., %TEMP%, Downloads), or unauthorized package manager installs on Linux (apt/rpm installs outside a baseline). Retain logs according to your policy to demonstrate continuous monitoring for audits.

Technical examples and short commands

Inventory examples: Windows registry query PowerShell to list installed apps (safer than Win32_Product): Get-ItemProperty HKLM:\Software\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Export-Csv C:\temp\installed_apps.csv Linux (Debian): dpkg-query -W -f='${binary:Package}\t${Version}\n' > /tmp/installed_pkgs.txt macOS: system_profiler SPApplicationsDataType -xml > /tmp/apps.xml AppLocker approach (high level): create publisher rule to allow only signed installers from approved publisher; block execution from user temp and downloads. For SIEM, a sample Splunk query to find recent unsigned installers: index=endpoint sourcetype=sysmon EventCode=1 Image=*\Installer* OR CommandLine="*msiexec*" | where NOT Signer="*Microsoft*".

Real-world small-business scenario

Example: a 50-user engineering firm uses Intune and Defender for Endpoint. Implementation steps: (a) document an approved-software SOP and host it on SharePoint; (b) remove local admin from users via Group Policy and enable Azure AD device enrollment; (c) build an ASL in Intune and publish as required apps; (d) enable AppLocker with a baseline that allows signed vendor installers; (e) enable Defender Application Control to block unsigned code; (f) stream endpoint telemetry to a low-cost SIEM (Azure Sentinel pay-as-you-go or Elastic Cloud) and configure alerts for new installs. Evidence collected for audits: policy docs, Intune app assignment screenshots, exported AppLocker policy XML, SIEM alert history, and inventory snapshots.

Risks, compliance tips, and best practices

Risk of not implementing CM.L2-3.4.9: users installing unvetted software can introduce malware, credential-stealing tools, shadow IT that exfiltrates CUI, or vulnerable components that enable lateral movement—leading to breaches, loss of contracts, and audit failures. Best practices: prefer allowlist/allow-only policies where feasible; enforce code-signing and publisher validation; require ticketed approval with security review; automate inventory and drift detection; document exception approvals with expiration dates; and include software control checks in regular vulnerability scans and penetration tests. For small businesses, leverage built-in cloud tools (Intune + Defender + Azure Sentinel free tiers) before investing in enterprise solutions.

Summary

Implementing CM.L2-3.4.9 is a mix of policy, process, and technology: publish an approved-software policy and workflow, inventory existing software, remove local admin rights, deploy endpoint management and application control (AppLocker/MDAC/MDM), centralize logging into a SIEM, and maintain an auditable trail of approvals and alerts. By following the step-by-step plan above, even small businesses can achieve demonstrable compliance within the Compliance Framework while materially reducing the risk from user-installed software.

 

Quick & Simple

Discover Our Cybersecurity Compliance Solutions:

Whether you need to meet and maintain your compliance requirements, help your clients meet them, or verify supplier compliance we have the expertise and solution for you

 CMMC Level 1 Compliance App

CMMC Level 1 Compliance

Become compliant, provide compliance services, or verify partner compliance with CMMC Level 1 Basic Safeguarding of Covered Contractor Information Systems requirements.
 NIST SP 800-171 & CMMC Level 2 Compliance App

NIST SP 800-171 & CMMC Level 2 Compliance

Become compliant, provide compliance services, or verify partner compliance with NIST SP 800-171 and CMMC Level 2 requirements.
 HIPAA Compliance App

HIPAA Compliance

Become compliant, provide compliance services, or verify partner compliance with HIPAA security rule requirements.
 ISO 27001 Compliance App

ISO 27001 Compliance

Become compliant, provide compliance services, or verify partner compliance with ISO 27001 requirements.
 FAR 52.204-21 Compliance App

FAR 52.204-21 Compliance

Become compliant, provide compliance services, or verify partner compliance with FAR 52.204-21 Basic Safeguarding of Covered Contractor Information Systems requirements.
 
Hello! How can we help today? 😃

Chat with Lakeridge

We typically reply within minutes