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

How to Build an Inventory and Whitelist Strategy to Control User-Installed Software (NIST SP 800-171 REV.2 / CMMC 2.0 Level 2 - Control - CM.L2-3.4.9)

Practical guide to creating an inventory and application allowlist to meet CM.L2-3.4.9 requirements of NIST SP 800-171 Rev.2 / CMMC 2.0 Level 2, with step-by-step implementation advice for small businesses.

•
April 09, 2026
•
4 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 user-installed software is a cornerstone requirement of CM.L2-3.4.9 (NIST SP 800-171 Rev.2 / CMMC 2.0 Level 2): you must know what's on endpoints and prevent unauthorized applications from running. This post gives a practical, compliance-focused playbook for building an accurate software inventory and an allowlist (whitelist) strategy, including tools, implementation steps, evidence to collect for audits, and examples applicable to small businesses.

Why this control matters (risk and compliance context)

Failing to inventory and restrict user-installed software increases the risk of malware, unpatched apps, shadow IT, and data exfiltration—risks that directly compromise Controlled Unclassified Information (CUI) and violate NIST/CMMC requirements. From a compliance perspective, CM.L2-3.4.9 expects demonstrable processes and technical controls: up-to-date inventories, enforceable allowlists, change/exception workflows, and monitoring/logging that show you actively control software usage on CUI systems.

Step 1 — Build an accurate, authoritative software inventory

Start with discovery: use endpoint management and EDR telemetry (Microsoft Intune/Endpoint Manager, SCCM/ConfigMgr, Jamf for macOS, CrowdStrike, Tanium, or open-source agents) to collect installed package lists, running processes, and publisher metadata. For Linux servers, include package manager outputs (rpm -qa, dpkg -l), and for macOS use system_profiler SPApplicationsDataType. Store results in a centralized CMDB or inventory spreadsheet and normalize entries (name, version, publisher, install path, hash, OS, owner, business justification). Automate weekly scans and reconcile with asset records to detect drift.

Step 2 — Design an allowlist strategy (types, pros/cons, and controls)

Decide your allowlist approach: publisher rules (recommended for Windows) allow signed installers from trusted vendors and scale well; hash rules are highly specific but brittle (every update changes the hash); path rules are easy but can be bypassed. On Windows use AppLocker or Microsoft Defender Application Control (MDAC) with publisher rules and code-signing; on macOS enforce Gatekeeper and use MDM (Jamf, Intune). On Linux consider package-manager enforcement, AppArmor/SELinux policies, and kernel-level signing or IMA/EVM for critical hosts. Remove local admin rights from standard users so installations require an approved change process—this is a foundational compensating control if full allowlisting is phased in.

Example: small consulting firm (50 users) — phased approach

A 50-seat firm can phase implementation: (1) Inventory week 1–2 using Intune agent + an enterprise scan to produce the initial approved-software list; (2) Pilot weeks 3–6 on 10 users with AppLocker/MDAC policies that permit only Microsoft-signed apps and a short approved list (Office, approved dev tools); (3) Enforce-wide: deploy policies via Intune/Group Policy, remove local admin rights, and implement a one-click exception request (ticket in ITSM). Evidence for auditors: inventory exports, AppLocker policy XML, exception tickets, and MDM deployment reports.

Step 3 — Operationalize: change control, monitoring, and exceptions

Create a documented approval workflow: request (business justification), security review (vulnerability check, licensing), testing (sandbox), and formal approval that updates the allowlist (CMDB + AppLocker policy). Log all decisions and retain records. Monitor runtime attempts via EDR and application control logs (AppLocker/MDAC events, Intune compliance reports, Jamf logs). Feed alerts to your SIEM (or a lightweight log aggregator for small firms) and create automated tickets for blocked installs so you can triage potential false positives versus malicious attempts.

Technical tips and evidence collection (practical details)

Prefer publisher rules over hashes for Windows AppLocker; generate policy XML using New-AppLockerPolicy (PowerShell) from a reference machine and refine in audit mode before enforcement. For MDAC, use Intune Endpoint Security → Application control to deploy policies. On macOS gatekeep enforcement should be combined with MDM profiles restricting kernel extension approvals and preventing bypass. Maintain a signed, version-controlled allowlist repository (Git) and include: CSV of approved apps, policy XMLs, MDM configuration snapshots, screenshots of deployment status, and sample logs showing blocked executions. Note: hash rules require a process to update hashes with every app update—automate hash regeneration and testing in your CI/CD or IT packaging workflow.

Compliance tips and best practices

Map artifacts directly to CM.L2-3.4.9 in your policy documentation and evidence package: initial inventory report, allowlist policy files, deployment change tickets, exception approvals, and monitoring/alert history. Keep exception windows short and require re-evaluation if an exception remains more than 90 days. Use least-privilege (remove admin rights), sandbox/VDI for high-risk user needs, and network controls (proxy, DNS filtering, block known software distribution sites) as compensating controls during rollout. Regularly (quarterly) reconcile inventory against the CMDB and perform a tabletop to validate response to a blocked-install alert.

In summary, meeting CM.L2-3.4.9 requires a repeatable program: accurate discovery and inventory, a technically enforceable allowlist tailored to your OS mix, documented exception/change control workflows, and continuous monitoring with retained evidence. For small businesses the path is phased: inventory, pilot allowlisting, remove admin rights, automate, and then enforce—each step provides tangible security improvements and audit evidence to demonstrate compliance.

 

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