Most organisations that own an endpoint detection and response (EDR) platform still ask whether they need application allowlisting, and most organisations that tried allowlisting once and gave up assume EDR made it unnecessary. Both positions skip the real question, which is where each control earns its operating cost. Allowlisting is a prevention control: it decides before execution whether a file, script or driver may run at all. EDR is a detection and response control: it records what runs, scores behaviour and lets responders contain a host. This guide is for endpoint, security architecture and SOC leads deciding how to layer the two across servers, kiosks, office laptops and developer machines. It assumes you know each control on its own; the Application Allowlisting Guide and the EDR Guide cover them in depth.
Key takeaways
- The short answer is "both, but not everywhere at the same strength". EDR belongs on every managed endpoint; enforced allowlisting belongs where the software set is stable enough that a deny is a security event, not a helpdesk ticket.
- They fail differently. Allowlisting fails open through trusted binaries and broad rules; EDR fails through tampering, blind spots and alerts nobody triages. Layering works because one rarely fails the same way as the other.
- Endpoint class decides the mix. Fixed-function servers and kiosks suit strict enforcement; developer laptops suit EDR plus a narrow allowlist on scripts, drivers and user-writable paths.
- Cost of ownership is mostly people, not licences. Allowlisting costs rule maintenance and exception handling; EDR costs triage and tuning. Budget the analyst and packaging hours before choosing.
- Allowlisting makes EDR better. Every block and audit event is high-signal telemetry; forward it into the same pipeline as EDR alerts and the two controls share one queue.
What each control actually decides
NIST SP 800-167 describes application whitelisting as the use of a list of approved software to decide which programs may run on a host, blocking harmful, unlicensed and otherwise unapproved software. Microsoft describes its App Control for Business in the same terms: it changes the default from "code runs unless antivirus flags it" to "code runs only if policy allows it", and extends that decision to kernel drivers, scripts, MSI installers and interactive PowerShell, which is placed in Constrained Language Mode. Microsoft also states that App Control is not a replacement for antivirus and should run alongside an active antimalware product.
EDR asks a different question: given everything that is running, is any of it behaving like an attack? It collects process, file, registry, network and identity telemetry, applies detections and lets responders isolate a device, kill a process tree or collect evidence. Some EDR platforms can also block on behavioural detections after the fact; Microsoft documents EDR in block mode as a way for Defender Antivirus to remediate artefacts found by post-breach behavioural detections even when another antivirus is primary. That is still a reaction to observed behaviour, not a decision about whether unknown code may start.
The practical consequence: allowlisting removes whole classes of attack before they begin and tells you nothing about what approved software does once running. EDR sees what approved software does and cannot stop an execution it has no reason to suspect until behaviour gives it away.
Side-by-side comparison
| Dimension | Application allowlisting | EDR |
|---|---|---|
| Primary function | Prevention: deny execution of anything not explicitly trusted | Detection and response: observe, alert, contain, investigate |
| Decision point | Before a binary, DLL, script, installer or driver loads | During and after execution, from behaviour and telemetry |
| Unknown binaries | Blocked by default, whatever their reputation | Allowed unless reputation, signature or behaviour flags them |
| Living-off-the-land (LOLBins) | Only covered if the trusted binary is explicitly blocked or constrained | Strong where detections model the parent, command line and sequence |
| Vulnerable drivers | Driver block rules and code integrity policy can stop the load | Can detect the load and subsequent tampering, if the agent survives |
| Post-compromise visibility | Block and audit events only | Full process tree, timeline and response actions |
| Main operating cost | Rule creation, software packaging, exception requests | Alert triage, tuning, exclusions, 24x7 response cover |
| Typical failure | Rules too broad (paths, publishers) or left in audit mode for ever | Agent disabled, exclusions too wide, alerts untriaged |
| Best fit | Stable software sets: servers, kiosks, OT, admin workstations | Every managed endpoint, especially dynamic ones |
Threat model: what each one stops
Map the controls to the attack stages they interrupt rather than to vendor categories.
- Commodity malware and user-run payloads: a user opening a dropped executable (ATT&CK T1204.002 Malicious File) is the textbook allowlisting win. An unknown, unsigned file in a downloads folder never runs, regardless of whether any engine has seen it before. EDR may catch it on reputation or behaviour, but only if something about it looks bad.
- Ransomware encryption: Data Encrypted for Impact (T1486) usually needs an attacker-supplied binary or script. Enforced allowlisting denies that payload; EDR detects mass file modification and can isolate the host, which limits blast radius but often after some files are lost. See the Ransomware Prevention Guide for the wider control set.
- Living off the land: CISA, NSA, FBI and partner agencies in the UK, Australia, Canada and New Zealand warn that living-off-the-land activity is hard to distinguish from legitimate administration because it uses tools already on the system. System Binary Proxy Execution (T1218) and PowerShell (T1059.001) are approved by most allowlists by default. This is where EDR carries most of the weight, with allowlisting helping only when you block or constrain the specific binaries. See the Living off the Land Guide.
- Kernel-level attacks and EDR killers: Exploitation for Privilege Escalation (T1068) through a signed but vulnerable driver is used to switch off security tools (T1685 Disable or Modify Tools). Driver allowlisting and blocklists stop the load; EDR cannot protect itself once kernel code is running against it. The Bring Your Own Vulnerable Driver and EDR Killers Guide covers this in detail.
- Valid credentials and remote tools: an attacker using approved remote management software with stolen credentials passes every allowlist. Only behavioural and identity telemetry will spot it.
Architecture in words
Allowlisting: a policy (rules by hash, publisher certificate, file path, package or signing identity) is authored centrally, distributed by management tooling and enforced locally by an operating system component. On Windows that is App Control for Business or AppLocker, logging to the CodeIntegrity and AppLocker event channels. On Linux, fapolicyd uses the fanotify interface, trusts files installed from the RPM database by default and accepts further trust entries in /etc/fapolicyd/trust.d/. On macOS, the open source Santa project uses a system extension and supports rules by CDHash, certificate, Team ID and Signing ID, with a MONITOR mode and a LOCKDOWN mode in which only listed binaries run. Platforms are listed alphabetically. Enforcement works offline because the decision is local.
EDR: a sensor (usually user mode plus a kernel component or OS-provided event framework) streams telemetry to a cloud or on-premises back end where detections run, then accepts response commands back. Prevention features such as Microsoft attack surface reduction (ASR) rules sit in between: the ASR rule "Block executable files from running unless they meet a prevalence, age, or trusted list criterion" is a reputation gate, not an allowlist, because it trusts files the cloud service considers prevalent.
The two meet at the log pipeline. Allowlist block events, ASR events and EDR alerts should land in the same SIEM or EDR data lake so that an enforced block on a server, followed by unusual PowerShell on the same host, is seen as one story.
Layering by endpoint class
This is the core decision. Rate each class by how often its legitimate software changes and how expensive a false block is.
| Endpoint class | Allowlisting role | EDR role | Notes |
|---|---|---|---|
| Fixed-function servers (domain controllers, database, file, line-of-business app servers) | Replaces much of the prevention burden: enforce full allowlisting including drivers | Complements: telemetry for valid-account and LOTL abuse, response actions | Changes come through change control, so rule updates ride the same ticket |
| Kiosks, shared and point-of-sale devices | Primary control: enforce strictly, often a single app | Lightweight or complementary; valuable where devices are reachable over the network | See the Kiosk and Shared Device Security Guide |
| OT and engineering workstations | Primary control where vendors certify it | Passive or vendor-approved agents only | See OT Endpoint Protection Guide |
| Privileged access workstations | Enforce: the software set should be tiny | Complements; any alert is high priority | See the Privileged Access Workstations Guide |
| Standard office laptops | Complements: managed-installer or reputation-based policy, block user-writable paths and known bypass binaries | Primary detection and response | Full hash or publisher lockdown here is where programmes stall |
| Developer and data science laptops | Over-burdens if enforced fully; keep narrow rules for drivers, script hosts and known bypass binaries | Primary control, tuned for compilers, package managers and containers | See the Developer Workstation and IDE Security Guide |
| Virtual desktops (non-persistent) | Enforce: golden image defines the allowlist | Complements, sized for density | Rebuild resets drift, which suits allowlisting |
Where allowlisting replaces: no control replaces EDR entirely on a networked host, but on a kiosk or fixed server enforced allowlisting removes most of the alerts EDR would otherwise raise for malware execution, so EDR effort shifts to identity and LOTL detections. Where it complements: office laptops, where a reputation-based policy blocks the long tail of unknown executables while EDR watches what approved tools do. Where it over-burdens: developer machines that build and run new binaries every hour. Enforcing hash rules there either stops work or forces such broad path and publisher rules that the policy protects nothing.
Bypass and failure modes
How allowlisting fails
- Trusted binaries used as proxies: Microsoft publishes recommended block rules precisely because legitimate, Microsoft-signed applications can bypass App Control allow policies. The list includes mshta.exe, wscript.exe, cscript.exe, wmic.exe and msbuild.exe (which Microsoft says to allow only where you build managed code), and Microsoft states it will update the list as new issues are found. Merge it into your policy and track changes.
- Writable allowed paths: a path rule that allows
C:\Program Files\is sound only if standard users cannot write there; path rules on user-writable folders are an open door. - Over-broad publisher rules: trusting a whole publisher certificate trusts every tool that publisher signs, including administration and debugging tools.
- Audit mode for ever: an audited policy generates event 3076 ("would have been blocked") but stops nothing. Programmes that never reach event 3077 enforcement have bought logging, not prevention.
- Weak integrity checking: fapolicyd's default integrity setting is
none; Red Hat notes thatsizeis fast but content can be swapped at the same size, and thatsha256orimaare stronger at a performance cost.
How EDR fails
- Tampering: attackers with administrative or kernel access disable the sensor (T1685). Tamper protection and driver blocklists reduce this; see the EDR Evasion and Defence Guide.
- Exclusions: Microsoft notes that excluded files run without any ASR detection or event recorded. Broad folder exclusions created for performance become attacker staging areas.
- Coverage gaps: unmanaged hosts, appliances, legacy servers and Linux estates without an agent.
- Untriaged alerts: a detection that sits in a queue for two days is not a control.
Cost of ownership
Licence prices vary too much to compare usefully; operating effort is the stable difference.
| Cost driver | Allowlisting | EDR |
|---|---|---|
| Initial build | Software inventory, audit-mode collection, rule authoring per endpoint class | Agent rollout, compatibility testing, baseline exclusions |
| Steady state | New software and updates need rules; exception request workflow | Daily triage, detection tuning, threat hunting |
| Staffing pattern | Endpoint engineering and packaging; business hours | SOC analysts or a managed service; ideally 24x7 |
| Cost driver that grows fastest | Software churn and number of distinct builds | Endpoint count and alert volume |
| Ways to cut cost | Managed installer or package-manager trust, golden images, fewer builds | Automated containment, alert deduplication, allowlisting on stable classes to remove noise |
A useful planning rule: allowlisting cost scales with software change, EDR cost scales with endpoints and alerts. A small organisation with one standard laptop build and a handful of servers can run enforced allowlisting cheaply and buy EDR as a managed service. A large organisation with hundreds of application owners should enforce on servers, kiosks and privileged workstations first, and use reputation-based policy on the general fleet.
Worked scenario: one estate, three classes
A regional retailer has 40 Windows servers, 300 store point-of-sale terminals, 900 office laptops and 60 developer laptops, all with EDR deployed.
- Point-of-sale: the till software, its updater and the operating system are the whole software set. The team builds an App Control policy from a reference terminal, runs it in audit for two weeks, resolves the 3076 events (all from a printer driver utility), and enforces. EDR stays for network-borne threats. Malware execution alerts from stores fall close to zero.
- Servers: rules come from the change management catalogue; the vulnerable driver blocklist and Microsoft recommended block rules are merged; new software cannot deploy without a rule ticket. EDR detections are retuned to focus on credential access and remote execution.
- Office laptops: a policy trusts the software deployment tool as a managed installer and blocks execution from user profile folders, plus the recommended block rules. Users can still request software through the catalogue.
- Developer laptops: no executable allowlist; instead, driver rules, PowerShell Constrained Language Mode outside a named developer group, and EDR detections tuned for package manager and build tool behaviour.
When a phishing payload lands later that year, it is blocked on an office laptop (3077 event forwarded to the SIEM) and the same sender's attempt is detected by EDR on a developer laptop, where the analyst isolates the host. Neither control alone would have covered both.
Where identity fits
Both controls are undermined by excessive local privilege. A user who is a local administrator can often add exclusions, stop agents or write to allowed paths; remove standing local admin rights and manage the built-in administrator password with LAPS or a vault (see LAPS vs PAM Vaulting). Service accounts that run deployment tooling deserve attention too: the managed installer identity effectively decides what becomes trusted, so treat its credentials and signing keys as privileged non-human identities.
Detection and measurement
Collect these signals into one place:
- Windows App Control: CodeIntegrity Operational events 3076 (audit block), 3077 (enforced block), 3089 (signature details) and 3099 (policy loaded); AppLocker MSI and Script events 8028 and 8029 for scripts and 8040 for packaged apps.
- ASR rules: Windows Defender Operational events 1121 (block), 1122 (audit) and 1129 (user override in warn mode), plus 1125 and 1126 for network protection audit and block, as listed by Microsoft.
- Linux fapolicyd: fanotify denials in the audit log, reviewed with
ausearch -m fanotify. - EDR: sensor health and last check-in, tamper alerts, exclusion changes, alert-to-triage time.
Metrics that show the layering works:
- Percentage of endpoints in each class with enforced (not audit) allowlisting.
- EDR sensor coverage and the share reporting healthy in the last 24 hours.
- Median time to approve a legitimate software exception (a rising figure predicts users routing around the policy).
- Count of enforced blocks investigated versus total, per month.
- Malware execution alerts from EDR on enforced classes (should trend towards zero).
- Number of broad path, publisher or EDR folder exclusions, reviewed quarterly.
Framework mapping
| Framework | Allowlisting | EDR |
|---|---|---|
| NIST CSF 2.0 | PR.PS-05 Installation and execution of unauthorized software are prevented | DE.CM-09 Computing hardware and software, runtime environments, and their data are monitored |
| NIST SP 800-53 Rev. 5 | CM-7(5) Authorized Software, Allow-by-exception; CM-11 User-installed Software | SI-4 System Monitoring; SI-3 Malicious Code Protection; IR-4 Incident Handling |
| CIS Controls v8.1 | 2.5 Allowlist Authorized Software; 2.6 Libraries; 2.7 Scripts | 10.1 Deploy and Maintain Anti-Malware Software; 10.7 Use Behavior-Based Anti-Malware Software |
| ISO/IEC 27001:2022 Annex A | A.8.19 Installation of software on operational systems | A.8.7 Protection against malware; A.8.16 Monitoring activities |
| MITRE ATT&CK | T1204.002, T1486 payloads, T1068 via driver rules | T1218, T1059.001, T1685 detection |
For the software inventory that both depend on, see the CIS Control 2 Inventory and Control of Software Assets Guide. Australian organisations working to the Essential Eight will find application control is one of its eight strategies; see the Essential Eight Guide.
Common failure patterns
- Treating EDR as a reason to skip allowlisting on servers: fixed-function servers are the cheapest place to enforce, and leaving them open means every malware execution becomes a SOC incident.
- Trying to lock down developers first: starting with the hardest class burns credibility; start with kiosks, servers and privileged workstations.
- Never merging bypass block rules: an allowlist that trusts mshta.exe or msbuild.exe everywhere stops commodity malware and very little else.
- Separate consoles, separate teams: allowlist events reviewed by endpoint engineering and EDR alerts by the SOC, with nobody correlating them.
- Exclusion sprawl on both sides: performance-driven EDR folder exclusions and convenience path rules that overlap in user-writable locations.
Practitioner checklist
- Classify endpoints by software stability and assign each class an allowlisting mode: enforce, reputation-based, or narrow rules only.
- Deploy EDR to every managed endpoint and measure sensor health daily.
- Enforce allowlisting, including driver rules, on fixed-function servers, kiosks and privileged workstations first.
- Merge Microsoft recommended block rules and the vulnerable driver blocklist into Windows policies, and review on each update.
- Remove path rules on user-writable locations and review publisher rules for over-breadth.
- Set a fixed audit window per class and a named date for enforcement.
- Forward allowlist block events into the same pipeline as EDR alerts and build at least one correlated detection.
- Run a quarterly exclusion review covering allowlist exceptions and EDR exclusions together.
- Remove standing local admin rights so neither control can be switched off by a user.
Standards and references
- NIST: SP 800-167, Guide to Application Whitelisting
- CISA: Identifying and Mitigating Living Off the Land Techniques
- Microsoft Learn: Application Control for Windows
- Microsoft Learn: Applications that can bypass App Control and how to block them
- Microsoft Learn: Attack surface reduction events in Windows Event Viewer
- Microsoft Learn: Microsoft recommended driver block rules
- Microsoft Learn: Understanding App Control event IDs
- Red Hat: Blocking and allowing applications by using fapolicyd
- North Pole Security: Santa
Related NHI Mgmt Group resources: Application Allowlisting Guide, EDR vs Antivirus, App Control for Business (WDAC), OT Endpoint Protection Guide, Ransomware Prevention Guide.