A malformed DHCP option lands SYSTEM on the box that hands out every laptop's IP address
CVE-2026-50518 is a heap-based buffer overflow in the Windows DHCP Server role. The vulnerable code path fails to validate the size of a domain-name field inside an incoming DHCP request/relay message; an attacker on the same broadcast domain (or reachable via a DHCP relay agent) can craft a packet that overwrites heap metadata in the DHCP Server service and pivot to code execution as NT AUTHORITY\SYSTEM. Affects the DHCP Server role on Windows Server 2012 R2 through Windows Server 2025 — the DHCP *Client* is a separate CVE and not in scope here.
The vendor's CVSS 9.8 is *arithmetically* correct — AV:N/AC:L/PR:N/UI:N maps to 9.8 by the book. But the vector is misleading in real deployments: DHCP/UDP-67 is never internet-exposed on a sane network, and Microsoft's own guidance is that the service should live on trusted subnets or behind IP-helper relays. In practice this is an internal, post-initial-access vulnerability that ends in fleet-scale identity leverage. HIGH is the honest bucket; CRITICAL only applies to the negligible fraction of orgs running DHCP on an exposed edge.
4 steps from start to impact.
Attacker reaches the DHCP listener
ip-helper / DHCP relay to the target, or a rogue relay agent. No credentials required.- Foothold on any client subnet served by the target scope
- Or control of a device that can spoof a DHCP relay agent (giaddr)
- UDP/67 reachable from that position
- DHCP is never exposed to the public internet in normal deployments
- DHCP snooping on managed switches blocks rogue relays
- Segmented management VLANs limit which hosts can even see the DHCP service
Craft the malformed domain-name option
scapy DHCP builder or a fork of the classic dhcpd-fuzzer harnesses.- Working knowledge of the DHCP option TLV structure
- Ability to shape heap layout — likely via option-order priming across multiple packets
- Modern Windows heap hardening (LFH randomization, HEAP guard pages, CFG) makes reliable RCE hard on first shot
- The service will often just crash → DoS before code exec, which is still bad but recoverable
dhcp_server_bof scanner check within 2-3 weeks if a working exploit is published.Achieve SYSTEM on the DHCP server
dhcpserver.exe-hosted service, which executes as SYSTEM. The attacker now owns a Windows Server that is typically domain-joined and frequently co-located on a domain controller (a Microsoft-supported and extremely common small/mid-enterprise topology).- Reliable exploit primitive from step 2
- Service not sandboxed (it isn't)
- EDR (Defender for Endpoint, CrowdStrike, SentinelOne) will flag anomalous child processes of
svchost.exe -k DHCPServer - Service auto-restart on crash gives multiple attempts but each generates 1000/1001 crash events
svchost.exe (DHCPServer), Sysmon EID 1 anomalous children of that svchost instance.Pivot from DHCP server to domain
- SYSTEM on the DHCP host from step 3
- Understanding of local topology
- Tier-0 admins who don't co-host DHCP on DCs
- Split DHCP failover pairs on dedicated VMs limit blast to the DHCP tier
The supporting signals.
| In-the-wild exploitation | None observed as of 2026-07-15. Microsoft rates *Exploitation More Likely* on the exploitability index. |
|---|---|
| Public PoC | No public PoC at disclosure. Historically, Windows DHCP heap bugs (CVE-2019-0725, CVE-2021-38667, CVE-2023-28231) took 2–8 weeks before working exploits surfaced; expect the same window. |
| EPSS | Fresh CVE — EPSS < 1% today, will climb into the 5–15% band within 30 days based on comparable Windows RCEs. |
| KEV status | Not listed. CISA typically adds Windows RCEs only after confirmed in-the-wild abuse. |
| CVSS vector | CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H = 9.8. Arithmetically Critical; contextually gated by internal-only reachability. |
| Affected versions | Windows Server 2012 R2, 2016, 2019, 2022, 2022 23H2, 2025 — Server Core and full installs — when the DHCP Server role is installed and enabled. |
| Fixed in | July 2026 Patch Tuesday cumulative updates. Verify by installed KB per OS build; the July 2026 rollup is the authoritative fix. |
| Exposure population | Shodan/Censys surface essentially zero internet-exposed Microsoft DHCP servers on UDP/67 — the protocol is broadcast-scoped and firewalled by default. Internal exposure is universal in AD environments. |
| Disclosure | 2026-07-14, Microsoft Patch Tuesday. Reporter credit not published in the initial MSRC entry. |
| Related | One of multiple DHCP RCEs in the July 2026 release per ZDI's Patch Tuesday review; treat the DHCP cluster as a single patching campaign. |
noisgate verdict.
Downgraded from CRITICAL to HIGH because the single decisive factor is reachability: DHCP/UDP-67 is architecturally an internal-only service, so any exploit requires the attacker to already hold a foothold on a client subnet or a relay-capable device. The verdict floor stays at HIGH — not lower — because the affected component's canonical deployment role is domain-adjacent, and on the common co-hosted-with-DC topology the chain ends in Domain Admin.
Why this verdict
- Reachability collapses the CVSS Network vector. The 9.8 assumes AV:N is meaningful; in practice UDP/67 is L2/relay-scoped, so the attacker is already inside. That's one full severity bucket of adjustment down.
- Role multiplier — standalone DHCP member server: chain ends at SYSTEM on one utility host. Blast radius: host-level. Bad but contained.
- Role multiplier — DHCP co-hosted on a Domain Controller (very common in SMB/mid-market): chain ends in Domain Admin. Blast radius: entire AD forest. This is why the floor stays at HIGH and does not fall to MEDIUM.
- Role multiplier — DHCP standalone but AD-integrated with scope-option control of clients: attacker can push malicious WPAD/DNS/PXE to every client renewal. Blast radius: fleet-wide credential capture / MITM. Also holds the HIGH floor.
- No KEV, no public PoC, no observed campaigns today — pulls urgency down from 'patch tonight' to 'patch within the 30-day HIGH SLA'.
- Exploitation-More-Likely rating from Microsoft + historic precedent (DHCP heap bugs consistently get weaponized within 2 months) keeps this out of the MEDIUM bucket.
Why not higher?
CRITICAL requires either internet-scale reachability (absent — service is never internet-exposed) or an active exploitation campaign (none observed). The chain requires a prior foothold on a serviced subnet or a relay-capable device; that's post-initial-access, which is by definition not CRITICAL for a broadly deployed product. If KEV lists it or a wormable PoC drops, re-rate to CRITICAL immediately.
Why not lower?
MEDIUM is off the table because of the role-multiplier floor: on any co-hosted or AD-integrated deployment the chain terminates in domain compromise or fleet-wide client MITM. Downgrading below HIGH would ignore the deployment-role blast radius rule — a bug in a component that hands DHCP options to every workstation on the network cannot be treated as ordinary hygiene.
What to do — in priority order.
- Enable DHCP snooping on all access switches — Blocks rogue DHCP relay agents and constrains which ports can source DHCP traffic, cutting off the primary lateral-attack vector. Deploy within 30 days per the noisgate HIGH mitigation SLA; most enterprise switch fleets support this natively.
- Segregate DHCP Server role off any Domain Controller — The single biggest severity multiplier is DHCP-on-DC co-hosting. Move DHCP to a dedicated member server (or DHCP failover pair) so a SYSTEM compromise doesn't equal instant DA. Plan the migration inside the 30-day window even if the patch is applied first — this is a permanent risk reduction.
- Restrict UDP/67-68 with host firewall to known relay agents — On the DHCP server, use Windows Firewall to accept UDP/67 only from your L3 switch/router relay IPs. Prevents packet delivery from arbitrary compromised endpoints on flat networks. Same 30-day deadline.
- Turn on DHCP audit logging + forward to SIEM — Look for anomalous option lengths, service crashes (Event 1000/1001 for svchost hosting DHCP), and unexpected scope-option changes. Provides detection coverage until patch rollout completes.
- Deploy the July 2026 cumulative update to all DHCP servers — Actual remediation. Under the noisgate HIGH remediation SLA the deadline is 180 days, but given the *Exploitation More Likely* rating and DHCP-on-DC prevalence, prioritize within 30–45 days.
- Perimeter firewalls — the attack originates from inside the network by definition; the perimeter never sees the packet.
- WAF / IDS on HTTP — DHCP is UDP/67, no HTTP stack involved.
- MFA / conditional access — the vulnerable service does not authenticate; PR:N means credentials are irrelevant.
- Disabling DHCP failover — failover is unrelated to the parser bug; both partners are equally vulnerable and disabling it just breaks HA.
- Running DHCP as a non-admin service account — the service must run as SYSTEM/Network Service to bind privileged ports and update AD; changing this breaks the role and doesn't remove the heap primitive.
Crowdsourced verification payload.
Run on each Windows Server with the DHCP Server role, as a local administrator. Example: .\Check-CVE-2026-50518.ps1. It confirms the role is installed, then checks the July 2026 KB is present for the running OS build. Outputs VULNERABLE / PATCHED / UNKNOWN and sets a matching exit code (0/1/2).
#requires -RunAsAdministrator
# Check-CVE-2026-50518.ps1
# Detects patch state for Windows DHCP Server heap buffer overflow (July 2026)
$ErrorActionPreference = 'Stop'
function Write-Result([string]$state, [string]$msg) {
Write-Host "[$state] $msg"
switch ($state) {
'VULNERABLE' { exit 1 }
'PATCHED' { exit 0 }
default { exit 2 }
}
}
# 1) Is DHCP Server role even installed?
try {
$svc = Get-Service -Name DHCPServer -ErrorAction Stop
} catch {
Write-Result 'PATCHED' 'DHCP Server role not installed on this host — not applicable.'
}
if ($svc.Status -ne 'Running') {
Write-Host "[INFO] DHCPServer service present but not running (Status=$($svc.Status))."
}
# 2) Resolve the July 2026 fix KB for this OS build.
# Update this table from MSRC as new builds are patched.
$build = [System.Environment]::OSVersion.Version.Build
$ubr = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name UBR).UBR
$os = (Get-CimInstance Win32_OperatingSystem).Caption
# Placeholder mapping — replace <KBxxxxxxx> with the actual July 2026 rollup KB IDs
# from https://msrc.microsoft.com/update-guide/vulnerability/CVE-2026-50518
$fixMap = @{
26100 = 'KB5062553' # Server 2025 — verify from MSRC
20348 = 'KB5062554' # Server 2022 — verify from MSRC
17763 = 'KB5062555' # Server 2019 — verify from MSRC
14393 = 'KB5062556' # Server 2016 — verify from MSRC
9600 = 'KB5062557' # Server 2012 R2 — verify from MSRC
}
if (-not $fixMap.ContainsKey($build)) {
Write-Result 'UNKNOWN' "Unmapped OS build $build ($os). Check MSRC advisory manually."
}
$targetKb = $fixMap[$build]
# 3) Check installed hotfixes and quick-fix engineering entries
$installed = @()
$installed += (Get-HotFix -ErrorAction SilentlyContinue | Select-Object -ExpandProperty HotFixID)
try {
$installed += (Get-WmiObject -Class Win32_QuickFixEngineering -ErrorAction Stop | Select-Object -ExpandProperty HotFixID)
} catch { }
$installed = $installed | Sort-Object -Unique
if ($installed -contains $targetKb) {
Write-Result 'PATCHED' "$targetKb present on $os (build $build.$ubr)."
} else {
Write-Result 'VULNERABLE' "$targetKb NOT found on $os (build $build.$ubr). Apply July 2026 rollup."
}
If you remember one thing.
Get-WindowsFeature DHCP sweeps across your AD. Flag any DHCP server co-hosted on a Domain Controller as tier-0-adjacent and put it at the top of the queue. Under the noisgate mitigation SLA for HIGH you have 30 days to enable DHCP snooping on access switches and lock the DHCP host firewall to permitted relay-agent IPs; under the noisgate remediation SLA for HIGH you have 180 days to deploy the July 2026 cumulative — but given Microsoft's *Exploitation More Likely* rating and the historical 2–8 week weaponization window on DHCP heap bugs, compress remediation to 30–45 days and re-rate to CRITICAL (patch within hours) if KEV lists it or a public PoC drops.Sources
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.