TLP:CLEAR
PATCH — TEST FIRST
KEV LISTED
// Vulnerability Advisory — Privilege Escalation / Remote Code Execution · Microsoft / Windows Print Spooler

PRINTNIGHTMARE

COMPILED: 2026-09-13  |  PREVIOUSLY COMPILED: 2026-09-02  |  CVE: CVE-2021-1675 · CVE-2021-34527 · CVE-2021-34481 · CVE-2022-21999 · CVE-2024-38198  |  CWE: CWE-269 (Improper Privilege Management) · CWE-59 / CWE-345 (variant race-condition bypasses)  |  SOURCES: 24
CVSS: 8.8 (HIGH)
Affected: Windows 7–11, Server 2008–2022 (all versions with Print Spooler enabled)
Disclosed: 2021-06-29 (accidental)
Patch Date: 2021-07-06 (OOB) — cascade through 2024-08-13
KEV Added: 2021-11-03
EPSS: 0.998 (99.96th pct.)
8.8
CVSS v3.1 Base Score
CVE-2021-34527
+ CVE-2021-1675 (7.8) · CVE-2021-34481 (8.8) · CVE-2022-21999 (7.8) · CVE-2024-38198 (7.5)
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
5
CVEs in the patch cascade, 2021–2024
38 MO
From first patch to last known bypass fix
99.8%
EPSS — 30-day exploitation probability
3
Ransomware crews confirmed exploiting within weeks (Vice Society, Magniber, Conti)
01
Situation Overview

PrintNightmare is the collective name for a family of vulnerabilities in the Windows Print Spooler service (spoolsv.exe) that allow a low-privileged, authenticated user to install an arbitrary printer driver and have it execute code with SYSTEM privileges — locally, or remotely against a domain controller or file/print server. The Print Spooler runs, by default, on every supported version of Windows from Windows 7 through Windows 11 and on every Windows Server release from 2008 through 2022 (Microsoft Security Response Center, 2021; Wikipedia, 2021). Because the service is enabled out of the box and because Active Directory domain controllers typically run it as well, the practical blast radius of PrintNightmare was, at disclosure, effectively "every Windows domain in existence."

What makes PrintNightmare significant is not a single CVE but the pattern it set: an accidental, uncoordinated disclosure in June 2021 triggered a rushed out-of-band patch, and every subsequent fix closed one specific abuse path while leaving the underlying architectural primitive — a low-privileged RPC call that ends in SYSTEM-context file/DLL operations chosen by the caller — intact. Between June 2021 and August 2024, five separate CVEs (CVE-2021-1675, CVE-2021-34527, CVE-2021-34481, CVE-2022-21999, CVE-2024-38198) were required to progressively narrow the same underlying weakness class in the same subsystem (Paragmali, 2024; 0patch/SafeBreach, 2022; Microsoft Security Update Guide, 2024).

PrintNightmare matters in 2026 not as breaking news but as a standing reference case: it is one of the clearest public examples of a "patch cascade" — where CISA issued a rare Emergency Directive (ED 21-04) forcing federal agencies to disable a core OS service network-wide (CISA, 2021), where ransomware operators (Vice Society, Magniber, Conti) weaponized the bug for lateral movement within weeks of disclosure (BleepingComputer, 2021; Cybereason, 2021), and where the FIRST.org EPSS model still scores the primary CVE at 0.998 — a near-certainty of continued exploitation attempts against any system left unpatched (FIRST.org EPSS API, accessed 2026-08-30).

Who is at risk today: any environment still running end-of-support Windows builds, any environment that has not applied the full patch lineage through August 2024, and any environment relying on Point-and-Print convenience defaults for non-administrative printer driver installation. Legacy healthcare, manufacturing, and OT-adjacent IT networks — where Windows Server upgrade cycles lag — remain the highest-probability targets for opportunistic exploitation of this now five-year-old vulnerability family.

02
Root Cause Analysis CWE Classification + Architectural Failure
CWE-269 Improper Privilege Management
The product does not properly assign, modify, track, or check privileges for an actor, creating an unintended sphere of control for that actor (MITRE CWE-269). In PrintNightmare's case, the Print Spooler's RPC interface fails to adequately validate that a caller requesting a driver installation is authorized to place executable code in a SYSTEM-writable, SYSTEM-loaded location — collapsing the privilege boundary between "any domain-authenticated user" and "SYSTEM on the target host."

The Print Spooler exposes two functionally symmetric RPC entry points for installing printer drivers: RpcAddPrinterDriverEx (MS-RPRN) and RpcAsyncAddPrinterDriver (MS-PAR). Both ultimately invoke the same internal driver-installation logic, which copies a caller-supplied driver package — including an attacker-controlled DLL (pDataFile) — into the spooler's driver store and then loads it in the context of the spooler service, which runs as SYSTEM. The vulnerability is that this code path does not verify the supplied file paths are local to the target machine before fetching and caching them, and does not restrict the operation to administrators (SentinelOne Vulnerability Database, 2021; Cato Networks, 2021).

Microsoft's June 8, 2021 patch (targeting CVE-2021-1675) added an authorization check to only one of the two entry points, RpcAddPrinterDriverEx. Because the two RPC methods are semantically interchangeable from the exploit's perspective, the fix was trivially bypassed by routing the same attack through RpcAsyncAddPrinterDriver — this became the true "PrintNightmare" RCE, CVE-2021-34527, disclosed weeks later (@cube0x0; Rapid7, 2021).

The deeper architectural failure is Point-and-Print, a decades-old Windows feature designed so that any domain user could install a shared network printer's driver without administrator credentials — treating "printer driver" as a benign artifact rather than as SYSTEM-privileged code. That design decision, made in an era before driver signing was consistently enforced and before printers were treated as an attack surface, is the actual root cause underneath every CVE in this family. Patching the RPC calls narrows the exploitation surface; it does not remove the design assumption that non-admin users should be able to trigger privileged driver loads at all.

03
Vulnerability Lifecycle
01
Discovery
2021-03 / 06-21
02
Disclosure
2021-06-29
03
Patch Cascade
2021-07 → 2024-08
04
Exploitation
2021-07 (mass)
05
Resolution
Ongoing / Partial

The lifecycle begins with two independent research efforts converging on the same subsystem. In March 2021, researchers Zhipeng Huo (Tencent Xuanwu Lab), Piotr Madej (AFINE), and Yunhai Zhang (NSFOCUS TIANJI Lab) reported a Print Spooler local-privilege-escalation issue to Microsoft, which was quietly patched on June 8, 2021 as CVE-2021-1675 and classified as a low-severity Elevation of Privilege bug. Separately, Zhiniang Peng, Xuefeng Li, and Lewis Lee of Sangfor Technologies (China) had independently found a related remote code execution primitive in the same driver-install code path, which they intended to unveil at the Tianfu Cup hacking competition and again at Black Hat USA in August 2021.

The pivotal event: on June 29, 2021, Sangfor's team — believing their separate RCE finding had already been fully remediated by Microsoft's June 8 patch for CVE-2021-1675 — published a full technical write-up and working proof-of-concept exploit to GitHub, seeing no further embargo value in withholding it. This was an accidental, good-faith misjudgment, not a hostile leak: Sangfor had misidentified their bug as already-patched. Within hours, security researchers determined the PoC in fact bypassed the June patch entirely; Sangfor deleted the repository, but by then it had already been forked and mirrored widely (Infosecurity Magazine, 2021; The Record, 2021; Sangfor, 2021).

Microsoft confirmed the distinct, unpatched RCE on June 30, 2021, assigned CVE-2021-34527, and shipped an emergency out-of-band patch on July 6–7, 2021 (KB5004945) — six business days after the accidental leak. That patch was bypassed within roughly five weeks via the Point-and-Print elevation-suppression default, prompting a third patch generation in August 2021 (CVE-2021-34481) that flipped the RestrictDriverInstallationToAdministrators registry default. Microsoft subsequently admitted in a September 14, 2021 advisory that "there is no combination of mitigations that is equivalent to setting RestrictDriverInstallationToAdministrators to 1" — a rare public concession that partial mitigations were insufficient. The cascade continued with SpoolFool (CVE-2022-21999, patched February 2022) and a further race-condition variant (CVE-2024-38198, patched August 13, 2024), each closing one specific abuse path against the same underlying RPC/driver-load primitive (Paragmali, 2024).

04
Disclosure Analysis
Disclosure TypeAccidental / Uncoordinated
Discovered BySangfor (Peng, Li, Lee); Huo/Madej/Zhang (independent, earlier finding)
Reported To VendorPrior to 2021-06-08 (separate CVE-2021-1675 report)
PoC Released2021-06-29 — before a patch for the actual bug existed
PoC vs PatchPoC preceded patch by ~1 week (functional 0-day window)
Vendor ResponseRapid but incomplete — 5 patch generations over 38 months
Community ReactionCERT/CC publicly stated the June 8 patch "does NOT protect against public exploits" (2021-06-30)
CVD Policy FollowedNo — broken by researcher misidentification, not by intent

PrintNightmare is a textbook case of coordinated vulnerability disclosure failing not through malice but through cross-organization ambiguity. Two separate research teams found two separate (but related) bugs in the same code path around the same time, and neither had full visibility into what the other had reported or what Microsoft had actually fixed. Sangfor's assumption that their RCE was "already patched" because a similarly-described EoP bug (CVE-2021-1675) had shipped a fix eleven days earlier is the direct proximate cause of the premature disclosure — a reminder that CVE descriptions and patch scopes are not always legible enough, even to skilled researchers, to confirm a specific exploit chain is actually closed.

The vendor response, taken in isolation, was fast: Microsoft shipped an out-of-band emergency patch within roughly a week of confirming the unpatched RCE, including patches for Windows 7 — an operating system whose extended support had already ended, a strong signal of how seriously Microsoft assessed the severity (Wikipedia, 2021). But "fast" and "complete" were not the same thing here: the emergency patch, and the two generations that followed it, each addressed the specific abuse path demonstrated in the leaked PoC rather than the general privilege-boundary defect, which is why the community's skepticism (crystallized in CERT/CC's blunt June 30 statement) proved justified repeatedly over the following three years.

05
Technical Deep Dive Exploitation Mechanics · CVSS Breakdown · Affected Versions

The core exploit chain for CVE-2021-34527 (the primary RCE variant): an attacker with any valid domain credentials (even a low-privilege standard user account) connects to a target's Print Spooler RPC endpoint — locally, or remotely over the MS-RPRN/MS-PAR named-pipe interface if the Spooler is remotely accessible, which is the default and expected configuration on domain controllers running the print service for the domain. The attacker calls RpcAsyncAddPrinterDriver, supplying a driver package descriptor whose pDataFile field points to an attacker-hosted DLL (served, for example, from an SMB share the attacker controls). The Spooler service, running as SYSTEM, fetches this file without verifying it originates locally, stages it into the driver store, and loads it as a printer driver DLL — executing attacker code with SYSTEM privileges the moment the "driver" is installed.

Against a domain controller specifically, this converts any authenticated domain account into a path to full domain compromise: SYSTEM on a DC is equivalent to Domain Admin. This is why CISA's Emergency Directive 21-04 (July 13, 2021) singled out domain controllers for immediate Spooler shutdown ahead of general workstation patching (CISA, 2021).

CVSS v3.1 Vector Breakdown — CVE-2021-34527 · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
Attack Vector
NETWORK
Exploitable over MS-RPRN/MS-PAR RPC without local access — any host reachable to the Spooler pipe is in scope.
Attack Complexity
LOW
No special conditions or timing needed; public, weaponized PoCs exist for point-and-click exploitation.
Privileges Required
LOW
Requires only a standard, authenticated domain (or local) user account — not admin.
User Interaction
NONE
No victim action required; the RPC call is initiated directly by the attacker.
Scope
UNCHANGED
Impact is contained to the vulnerable component's own security authority (the local Windows security context).
Confidentiality
HIGH
SYSTEM-level code execution grants complete read access to the host, and to the domain if executed on a DC.
Integrity
HIGH
Attacker can modify any data or system state, including AD objects if run on a domain controller.
Availability
HIGH
SYSTEM code execution enables full denial of service, including destructive action, at the attacker's discretion.
Affected Versions & Variant Relationship
CVEComponentAffected VersionsFixed Version / KBStatus
CVE-2021-1675RpcAddPrinterDriverEx (MS-RPRN)Windows 7–10, Server 2008–2019 (pre-2021-06-08)KB5003637 et al. (2021-06-08)Superseded — incomplete, bypassed via MS-PAR
CVE-2021-34527RpcAsyncAddPrinterDriver (MS-PAR) — true "PrintNightmare"All supported Windows + Windows 7 (out-of-band)KB5004945 / KB5004946 et al. (2021-07-06/07)Superseded — Point-and-Print default left gap
CVE-2021-34481Point-and-Print elevation suppression defaultAll supported Windows (RestrictDriverInstallationToAdministrators=0)KB5005010 / KB5005033 (2021-08-10)Superseded — SpoolDirectory vector remained
CVE-2022-21999 (SpoolFool)Spooler SpoolDirectory / printer-port symlink handlingAll Windows desktop + server versions (default config)2022-02-08 Patch TuesdaySuperseded — race-condition variant found 2024
CVE-2024-38198Print Spooler data-authenticity check (race condition)Windows 10/11 all channels, Server 2016–20222024-08-13 Patch TuesdayCurrent — no further public bypass reported as of 2026-09-02
06
Exploitation in the Wild Threat Actors · Campaigns · KEV Status
CISA KEV LISTED Added: 2021-11-03 · Required Remediation: 2022-05-03 (federal civilian agencies, per BOD 22-01)
CVE-2021-34527 has carried a confirmed "used in ransomware campaigns" flag in the CISA KEV catalog since its addition. This sits alongside CISA's earlier and more unusual step of issuing Emergency Directive 21-04 (2021-07-13) — a same-week, no-CVE-KEV-listing-required mandate — reflecting the severity assessment made even before the formal KEV catalog entry existed.
Exploitation Timeline
2021-06-29
PoC Public, Mass Scanning Begins
Within hours of the Sangfor PoC leak, mass internet scanning for exposed Print Spooler RPC endpoints was observed.
2021-07 (mid)
Magniber Ransomware — South Korea
CrowdStrike detected the Magniber ransomware operation attempting PrintNightmare exploitation against South Korean targets in mid-June to July 2021, among the earliest ransomware-affiliated abuse observed (CyberDefense Magazine, 2021; Cybereason, 2021).
2021-08
Vice Society Ransomware — Lateral Movement
Vice Society incorporated a malicious DLL exploiting CVE-2021-1675/CVE-2021-34527 for lateral movement inside compromised victim networks (BleepingComputer, 2021).
2021-08
Conti Playbook Reference
A leaked Conti ransomware operations manual explicitly referenced PrintNightmare as an in-scope escalation/lateral-movement technique for affiliates (HowToGeek, 2021; GovInfoSecurity, 2021).
2021-11-03
CISA KEV Listing
CVE-2021-34527 formally added to the KEV catalog with a 2022-05-03 federal remediation deadline.
2022 → 2024
Continued Opportunistic Use
SpoolFool (CVE-2022-21999) and later variant CVEs continued to see inclusion in commodity privilege-escalation toolkits and post-exploitation frameworks through 2024, reflecting the durability of the underlying primitive as a reliable LPE path once initial access is achieved.
2026-09-13
Public PoC/Exploit Re-Check (vulnpedia.com)
CVE-2021-34527 remains listed with multiple public PoC resources: a Vicarius detection/mitigation script pair, a Packet Storm "Print Spooler Remote DLL Injection" module, and multiple searchable GitHub repositories — this is a stable, long-standing tooling ecosystem, not a fresh development.

No card currently on file in this repository documents Vice Society, Magniber, or Conti as named threat actors — see Section 10. Exploitation of PrintNightmare has skewed heavily toward ransomware affiliate tooling and generic post-exploitation frameworks (it is a stock module in several open-source LPE/lateral-movement toolkits) rather than being a signature technique of any single tracked nation-state APT, which is consistent with its nature as a broad, low-skill-barrier privilege-escalation primitive rather than a targeted espionage tool.

07
Architectural Lessons Why this class of vulnerability keeps recurring

PrintNightmare is the clearest publicly documented case of a vendor patching the demonstrated exploit rather than the underlying design defect, and paying for it in installments. Each of the five CVEs closed the specific technical path shown in the most recent public PoC — the MS-RPRN entry point, then MS-PAR, then the Point-and-Print elevation default, then the SpoolDirectory symlink trick, then a race condition in the data-authenticity check — while the shared precondition underneath all five (a low-privileged, remotely reachable RPC interface that can direct a SYSTEM-context process to load caller-supplied code) was never itself redesigned. This is the "whack-a-mole" anti-pattern: it produces short-term compliance (a CVE is closed, a KEV deadline is met) without reducing the actual attack surface class, and it guarantees a security team's work is never finished for as long as the underlying primitive exists.

The Print Spooler itself is a case study in accumulated legacy risk. It is architecturally a 1990s-era Windows NT print subsystem, extended over three decades to support remote administration, driver distribution, and enterprise print-server convenience features — each addition widening its privileged attack surface without a corresponding security re-architecture. Point-and-Print specifically encodes a security tradeoff that made sense when printer drivers were assumed to be trustworthy binary blobs distributed by IT departments, and that assumption never survived contact with a threat landscape where any domain-authenticated account (including a compromised low-privilege user) is treated as a potential attacker. This is a recurring pattern across the industry: features built for administrative convenience decades ago — "any user can install this specific kind of privileged software without asking an admin" — routinely become the default LPE/RCE vector once attacker tradecraft catches up. PrintNightmare is functionally the same lesson as print-driver and font-parser vulnerabilities before it, and the appearance of a fifth CVE in this family as late as August 2024 — three years after the original panic patch — demonstrates that the industry's response to this class of bug remains reactive rather than structural: patch the demonstrated path, wait for the next researcher to find the next path.

The organizational lesson is equally important: CISA's willingness to issue an Emergency Directive mandating an entire OS service be disabled on domain controllers — rather than waiting for a "complete" patch — reflects a mature response to exactly this pattern. When a vendor's patch cadence cannot keep pace with a shared architectural primitive, the correct interim control is often to remove the exposed surface (disable the service where it is not needed) rather than trust each successive patch to be the last one required.

08
Purple Team Detection · Hunting · Patch Guidance · Compensating Controls
A · Detection
B · Threat Hunting
C · Patch Guidance
D · Compensating Controls
Spooler spawning abnormal child process · Sysmon Event ID 1
EventCode=1 ParentImage="*\spoolsv.exe" Image IN ("*\cmd.exe","*\powershell.exe","*\rundll32.exe","*\mshta.exe","*\regsvr32.exe") | table _time, Computer, ParentImage, Image, CommandLine
New driver files written to Spooler driver store · Sysmon Event ID 11 (File Create)
EventCode=11 TargetFilename="*\System32\spool\drivers\x64\3\*.dll" | where NOT TargetFilename IN (known_baseline_driver_dll_list) | table _time, Computer, TargetFilename, ProcessGuid
Windows PrintService Operational log — driver install anomalies
source="WMI:Win32_PrintJob" OR source="Microsoft-Windows-PrintService/Operational" EventCode IN (316, 808) | stats count by Computer, User, DriverName | where User NOT IN (authorized_print_admins)

Behavioral indicators independent of the specific CVE variant: any RPC-initiated driver install by a non-administrative account; a spooler process handle opening files outside the expected driver-store path; and new DLLs appearing in %SystemRoot%\System32\spool\drivers\ that do not correspond to a known, IT-approved driver push. On domain controllers, any driver-install event at all should be treated as anomalous, since DCs should not be servicing end-user print jobs.

Hypothesis 1 — Historical compromise via unpatched Spooler. Hunt for spoolsv.exe process trees with unexpected child processes or network connections in EDR telemetry going back to the earliest available retention (ideally covering 2021-06 forward for environments that existed then). A single historical hit is sufficient grounds for a full incident response, since successful exploitation grants SYSTEM and is rarely a one-off event in a real intrusion.

Hypothesis 2 — Point-and-Print misconfiguration persists. Query endpoint configuration management (GPO reporting, Intune, SCCM) across the fleet for hosts where RestrictDriverInstallationToAdministrators is absent or set to 0, and where NoWarningNoElevationOnInstall or UpdatePromptSettings permit non-admin driver installation. These are the residual, config-only exposure even on fully-patched code.

Hypothesis 3 — Spooler exposed where it shouldn't be. Enumerate domain controllers and servers with no legitimate print function where the Spooler service is still running (a common oversight after the immediate 2021 remediation window closed and operational pressure eased). This is the single highest-value, lowest-effort finding a hunt team can produce for this vulnerability family.

Primary Patch ChainKB5004945 (2021-07) → KB5005010/33 (2021-08) → 2022-02 Patch Tuesday → 2024-08-13 Patch Tuesday
Release Date (latest)2024-08-13 (CVE-2024-38198)
Regression RiskModerate-High — historically broke non-admin printer driver installs and some third-party print workflows fleet-wide
Testing RequiredValidate print-server driver deployment workflows in a staging OU before broad rollout; confirm helpdesk print-driver install procedures still function under RestrictDriverInstallationToAdministrators=1
Public PoC (vulnpedia.com)Confirmed — Vicarius scripts + Packet Storm DLL-injection module, checked 2026-09-13
Vendor AdvisoryMSRC Security Update Guide (per-CVE)
Out-of-Band PatchYes — 2021-07-06/07 emergency release, including Windows 7 (EOL)
Superseded ByEach generation superseded by the next; confirm the August 2024 cumulative update is applied as the current baseline

Because this is a five-CVE lineage rather than a single patch, "patched" only means something if all five generations are applied — an environment current only through the 2021 emergency patches remains exposed to SpoolFool and the 2024 race-condition variant. Given the historical pattern of driver-install regressions accompanying these patches, apply to a representative pilot group (including any legacy print-server infrastructure) before fleet-wide deployment, but do not delay deployment indefinitely — the EPSS score (0.998) reflects sustained, near-certain scanning and exploitation attempts against unpatched hosts.

01
Disable the Print Spooler service on domain controllers. DCs have no legitimate need to service print jobs; this single control removes the highest-consequence exposure (per CISA ED 21-04) regardless of patch level.
02
Disable the Print Spooler on any server or workstation without a genuine printing requirement. Extend the DC-only mandate from ED 21-04 to the broader server fleet and to workstations that never print.
03
Enforce RestrictDriverInstallationToAdministrators = 1 via GPO on every host where the Spooler must remain enabled, and confirm Point-and-Print's NoWarningNoElevationOnInstall / UpdatePromptSettings keys are not silently re-permitting non-admin driver installs.
04
Restrict inbound access to the Spooler's RPC/named-pipe endpoints (block or tightly scope SMB/RPC to \pipe\spoolss) at the host firewall for any system where the Spooler cannot be disabled outright.
05
Monitor and alert on any driver installation event originating from a non-administrative account, using the detection queries in Section A, as an interim control while patch validation is in progress.
09
CVE / CVSS / KEV Reference Full metadata block
CVE-2021-1675
CVSS v3.1 Score7.8 (High)
Vector StringCVSS:3.1/AV:L/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:H
CWECWE-269 (NVD lists as NVD-CWE-Other)
EPSS ScoreTracked jointly with CVE-2021-34527 by most scanners due to shared root cause
Vendor AdvisoryMSRC Update Guide
KEV StatusNot separately listed (superseded by CVE-2021-34527 entry)
NoteOriginally rated "Important"/EoP; Microsoft revised impact to RCE/Critical after the Sangfor disclosure clarified the true exploit chain
CVE-2021-34527
CVSS v3.1 Score8.8 (High)
Vector StringCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CWECWE-269 (Improper Privilege Management)
EPSS Score0.9979 (99.96th percentile)
Vendor AdvisoryMSRC Update Guide
KEV StatusListed — confirmed ransomware use
KEV Date Added2021-11-03 (due 2022-05-03)
CVE-2021-34481
CVSS v3.1 Score8.8 (High)
Vector StringCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H (as later reclassified to RCE)
CWECWE-269 (Improper Privilege Management — Point-and-Print default)
EPSS ScoreNot independently retrieved for this compile — treat as high given shared exploit family
Vendor AdvisoryMSRC Update Guide
KEV StatusNot independently confirmed on KEV during this compile — verify directly before relying on this field
CVE-2022-21999 (SpoolFool)
CVSS v3.1 Score7.8 (High)
Vector StringLocal privilege escalation vector (symlink/junction abuse of SpoolDirectory)
CWECWE-59 (Improper Link Resolution Before File Access)
Discovered ByOliver Lyak (@ly4k_), SafeBreach Labs — reported Nov 2021, patched Feb 2022
KEV StatusNot independently confirmed on KEV during this compile — verify directly before relying on this field
CVE-2024-38198
CVSS v3.1 Score7.5 (High)
Vector StringRace-condition LPE; requires winning a timing window
CWECWE-345 (Insufficient Verification of Data Authenticity)
Patched2024-08-13 Patch Tuesday
KEV StatusNot listed as of this compile — no confirmed in-the-wild exploitation reported
10
Cross-References Linked actor and incident cards
Threat Actors Who Weaponized This Vulnerability
No companion actor cards on file for Vice Society, Magniber, or Conti as of 2026-09-02 — this repository's existing actor cards (APT1, CyberAv3ngers, Gonjeshke Darande, JadePuffer, Lapsus$, REvil, Salt Typhoon, Scattered Spider, TeamPCP) do not include any confirmed PrintNightmare operators. Flagged for future card creation.
Incidents Where This Was the Initial Vector
No companion incident cards on file reference PrintNightmare as an initial access vector as of 2026-09-02.
11
Network Exposure Ports · Protocols · Banners · Nmap · Shodan
Affected Ports & Protocols
Port Proto Service Vulnerable Condition Notes
445 TCP SMB / Microsoft-DS MS-RPRN/MS-PAR reachable via named pipe \PIPE\spoolss over SMB Primary real-world exploitation path inside AD environments — most orgs already permit 445 between domain members
135 TCP MSRPC (Endpoint Mapper) Discloses registered MS-RPRN/MS-PAR interface bindings and the dynamic port they resolve to Must never be internet-exposed; internal network segmentation is the primary control, per CISA ED 21-04
139 TCP NetBIOS Session Service Legacy SMB transport — alternate path to the same \PIPE\spoolss named pipe as port 445 Same exposure risk as 445; disable where legacy NetBIOS/SMB1 is not operationally required
49152–65535 TCP MSRPC (dynamic ncacn_ip_tcp endpoint) Direct RPC/TCP binding to MS-PAR once resolved via the port 135 endpoint mapper Varies per host/boot; frequently missed by firewall rules that only enumerate well-known ports 135/445
Nmap — Default Service Scan Output (Print Spooler Host)
nmap -sV -p 135,139,445 dc01.corp.local
# NOTE: Representative default -sV output — msrpc/microsoft-ds service banners are # byte-identical whether the host is patched or unpatched. A default nmap scan can # confirm the Spooler's RPC surface is reachable; it cannot by itself confirm # PrintNightmare exposure or patch level. Starting Nmap 7.94 ( https://nmap.org ) Nmap scan report for dc01.corp.local (10.10.10.5) Host is up (0.0041s latency). PORT STATE SERVICE VERSION 135/tcp open msrpc Microsoft Windows RPC 139/tcp open netbios-ssn Microsoft Windows netbios-ssn 445/tcp open microsoft-ds Microsoft Windows Server 2019 Standard 17763 microsoft-ds Service detection performed. Report any incorrect results at https://nmap.org/submit/
Nmap — Version-Discriminating Scan (Vulnerable vs. Patched)
rpcdump.py corp.local/user:pass@dc01.corp.local -p 135 | egrep 'MS-RPRN|MS-PAR'
# NOTE: Reconstructed from documented rpcdump.py (Impacket) usage and the published # MS-RPRN interface UUID — not captured from a live host during this compile. # # IMPORTANT: No nmap-native command, and no known network-based scan of any kind, # reliably discriminates a patched from an unpatched Print Spooler host. The # PrintNightmare fix lives in server-side RPC-method authorization logic, not in # the RPC interface's advertised existence or any version string — so the output # below is IDENTICAL whether run against a fully-patched (Aug 2024 cumulative) or # a fully-unpatched (pre-June 2021) host. Protocol: [MS-RPRN]: Print System Remote Protocol Provider: spoolsv.exe UUID: 12345678-1234-ABCD-EF00-0123456789AB v1.0 Bindings: ncacn_ip_tcp:10.10.10.5[49667] ncacn_np:\\10.10.10.5[\PIPE\spoolss] Protocol: [MS-PAR]: Print System Asynchronous Remote Protocol Provider: spoolsv.exe Bindings: ncacn_ip_tcp:10.10.10.5[49667] ncacn_np:\\10.10.10.5[\PIPE\spoolss]

Presence of both MS-RPRN and MS-PAR bindings confirms the Spooler service is running and network-reachable — a necessary precondition for exploitation — but is not sufficient to confirm vulnerability, since both interfaces remain identically registered and enumerable on fully-patched hosts. This is the single most important operational lesson in this section: for PrintNightmare, network reconnaissance identifies attack-surface candidates, not patch status. Patch-level ground truth requires endpoint-level inventory (confirming KB5004945 and each subsequent cumulative update through 2024-08-13 is installed), not a remote scan of any kind.

Service Banners — Version Identification

Version not reliably discriminated via banner. The interface-binding response is byte-for-byte identical before and after applying KB5004945 or any subsequent PrintNightmare-family patch, because Microsoft's fix validates the caller's authorization inside the RPC method implementation rather than changing the interface's advertised UUID, provider, or version. This is the clearest illustration in this card of why banner-based vulnerability scanning cannot detect PrintNightmare patch status — see the NSE and detection-tooling discussion below for the practical consequence.

Nmap Scripting Engine (NSE) — Vulnerability Detection
smb-vuln-ms10-061 (closest built-in script — NOT applicable to PrintNightmare)
DETECTION
nmap -p445 --script=smb-vuln-ms10-061 dc01.corp.local
# This script tests for CVE-2010-2729 (MS10-061), the Print Spooler impersonation # vulnerability notably exploited by Stuxnet — a fundamentally different, decade-earlier # flaw in the same service. It performs a safe authentication-bypass check against a # shared printer, NOT the RpcAddPrinterDriverEx/RpcAsyncAddPrinterDriver authorization # defect that PrintNightmare exploits. # Host script results: |_smb-vuln-ms10-061: Could not negotiate a connection # WARNING: A "not vulnerable" result from this script says nothing about PrintNightmare # exposure. Using it to clear a host of CVE-2021-34527/CVE-2021-1675 risk would be a # dangerous false negative.

No dedicated built-in NSE script exists for any CVE in the PrintNightmare family (CVE-2021-1675, CVE-2021-34527, CVE-2021-34481, CVE-2022-21999, CVE-2024-38198) as of this compile. Community-maintained, non-NSE tooling fills the gap instead: Impacket's rpcdump.py (interface enumeration, shown above), the standalone Python subnet scanner "ItWasAllADream" (tests exploitability over MS-PAR/MS-RPRN across a CIDR range and generates a CSV report), and cube0x0's CVE-2021-1675 Impacket/C# reference implementation, which doubles as a practical vulnerability-confirmation tool when run against a non-production target. None of these are nmap-native, and all require separate installation.

Shodan / Censys — Exposure Discovery
Shodan
port:445 os:"Windows"
No PrintNightmare-specific Shodan dork was identified in public research reviewed for this compile, and for good reason: the dork above surfaces internet-exposed SMB/Windows hosts generally — it is NOT PrintNightmare-discriminating and should not be used to infer exposure to this specific vulnerability family. PrintNightmare's canonical exploit chain requires authenticated domain credentials (it is a privilege-escalation/lateral-movement primitive, not an unauthenticated internet-facing pre-auth RCE), and it targets an RPC interface that CISA's own Emergency Directive 21-04 states should never be reachable from the internet in the first place — independent of patch level. The operationally meaningful exposure metric for this vulnerability is internal network segmentation posture (is the Spooler's RPC surface reachable from network segments beyond domain-joined peers), not internet-facing footprint.
Censys
services.port=445 and services.service_name="SMB"
Same caveat as the Shodan dork above applies in full — this surfaces general internet-facing SMB exposure, not PrintNightmare-specific risk. No historical Censys exposure count specific to PrintNightmare was identified in public research reviewed for this compile.
12
References URLs are NOT defanged — navigate directly
NVD / NIST
Accessed: 2026-08-30
NVD / NIST
Accessed: 2026-08-30
CISA KEV Catalog
Accessed: 2026-08-30
FIRST.org
Accessed: 2026-08-30
Microsoft MSRC
Accessed: 2026-08-30
Microsoft MSRC
Accessed: 2026-08-30
The Record (Recorded Future News)
Accessed: 2026-08-30
Cato Networks
Accessed: 2026-08-30
Oliver Lyak / IFCR Research
Accessed: 2026-08-30
GovInfoSecurity
Accessed: 2026-08-30
Wikipedia (secondary, corroborating)
Accessed: 2026-08-30
SOCRadar
Accessed: 2026-08-30
CVE Circulation / CIRCL
Accessed: 2026-08-30
Nmap.org NSEDoc
Accessed: 2026-09-02
Juggernaut-sec
Accessed: 2026-09-02
Juggernaut-sec
Accessed: 2026-09-02
Pentest Laboratories
Accessed: 2026-09-02