A janitor's key that only works once you're already inside the building
CVE-2026-50454 is a relative path traversal (CWE-23) in the Windows User Interface Core component, disclosed in Microsoft's July 2026 Patch Tuesday. A low-privileged local user can supply a crafted relative path that the UI Core resolves outside its intended directory, letting the attacker write to or load files from privileged locations — the standard route to SYSTEM on the affected host. Affected surface covers current Windows 10, Windows 11, and Windows Server SKUs receiving the July 2026 cumulative rollup; hosts patched at or above the July 2026 baseline (KB series shipped 2026-07-14) are fixed.
Microsoft's HIGH / 7.8 rating is arithmetically correct — full CIA impact with low complexity — but it's the same score every commodity Windows EoP gets each month. The CVSS math doesn't distinguish 'attacker already has a shell and needs SYSTEM' from 'attacker touches the box from the internet.' With AV:L / PR:L, no PoC in the wild, EPSS 0.4%, and no KEV listing, this is a *post-exploitation amplifier*, not an initial-access bug. It matters, but not this-week-matters.
3 steps from start to impact.
Obtain low-privileged local execution
- Valid local or domain user credentials, or an existing code-execution primitive on the host
- AppLocker / WDAC not blocking the attacker's loader
- EDR (Defender for Endpoint, CrowdStrike, SentinelOne) blocks most commodity loaders
- ASR rules and constrained language mode kill naive PowerShell payloads
- Users with genuinely locked-down endpoints and Credential Guard rarely reach this state without a prior CVE
Craft the traversal payload against Windows UI Core
..\..\Windows\System32\<target> to reach a location the low-priv token normally cannot reach. Depending on the sink, this yields either arbitrary file write into a SYSTEM-writable directory or a controlled DLL load from a directory the attacker controls. Weaponization is typical James Forshaw / Project Zero-style primitive chaining — expect a public PoC via SharpUp, PrintSpoofer-lineage tooling, or a fresh entry in itm4n/PrivescCheck within weeks.- Vulnerable UI Core binary present (unpatched July 2026 or earlier baseline)
- Writable path or hijackable module load resolvable from the traversal
- Attack surface reduction rule 'Block credential stealing from lsass' and PPL do not stop this, but do reduce follow-on value
- Some SKUs' UI Core surface is only reachable when specific optional features are installed
%SystemRoot% by non-SYSTEM tokens and Event ID 7 (image load) from user-writable paths are the durable detections.Escalate to SYSTEM and pivot
- Successful primitive from step 2
- LSASS not protected as PPL, or PPL bypass available
- Credential Guard on Windows 11 Enterprise blocks the credential harvest half of the chain
- EDR memory-scanning catches mimikatz signatures reliably; nanodump variants are hit-or-miss
The supporting signals.
| In-the-wild status | No known exploitation. Not present in CISA KEV as of 2026-07-20. No vendor or third-party attribution to named actors. |
|---|---|
| Proof-of-concept | None public at time of writing. Expect a research writeup within 30-60 days from the usual EoP crowd (itm4n, decoder, SandboxEscaper-lineage researchers). |
| EPSS | 0.00402 (~0.4%) — bottom quartile. Consistent with 'local EoP, no PoC yet.' |
| KEV status | Not listed. Would require documented exploitation, which does not exist. |
| CVSS vector | CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H — local vector is the ceiling; the score cannot rise without a remote precondition. |
| Affected versions | Windows 10 (all supported branches), Windows 11 (22H2, 23H2, 24H2), Windows Server 2016/2019/2022/2025 running baselines prior to July 2026 cumulative. |
| Fixed versions | July 2026 Patch Tuesday cumulative updates (KB series dated 2026-07-14). No out-of-band or backport considerations — this is an OS component, single vendor. |
| Exposure telemetry | Not applicable — AV:L means Shodan/Censys/GreyNoise scans are irrelevant. Population = every unpatched Windows host with a logged-in user. |
| Disclosed | 2026-07-14 (Microsoft Patch Tuesday). |
| Reporter | Credited via MSRC advisory — see Microsoft's Security Update Guide entry for finder attribution. |
noisgate verdict.
The single decisive factor is AV:L + PR:L: an attacker must already hold code execution as an authenticated user on the target host before this bug is reachable, which relegates it to a post-foothold amplifier rather than a standalone incident driver. With no KEV listing, no public PoC, and EPSS in the bottom quartile, the reachable population that also has an active attacker chain is a small fraction of the installed base.
Why this verdict
- Local vector caps the ceiling: AV:L means every successful use of this bug is preceded by a separate initial-access event that already triggered EDR, phishing, or credential controls.
- No exploitation signal: EPSS 0.4%, no KEV, no named-actor attribution, no public PoC — the empirical urgency is low.
- Role multiplier — workstation (typical role, ~80%+ of installs): Chain succeeds, blast radius is SYSTEM-on-host + cached credentials. Meaningful but bounded to that host and its user's Kerberos tickets.
- Role multiplier — member server (typical, ~15% of installs): Chain succeeds, blast radius is SYSTEM plus service-account credentials. Bounded to that host's trust relationships.
- Role multiplier — domain controller (high-value, small share of installs but canonical): Chain succeeds if a low-priv logon on the DC is possible; blast radius is domain compromise. This keeps the floor from dropping below MEDIUM, but the DC-local-logon precondition (a hardened DC should reject interactive logons for non-Tier-0 principals) prevents the floor from rising to HIGH on the strength of this role alone.
- Commodity EoP shape: Microsoft ships 5-15 of these per Patch Tuesday. Treating each one as HIGH creates alert fatigue and displaces attention from truly remote or KEV-listed bugs the same month.
Why not higher?
HIGH would require either credible in-the-wild exploitation, a weaponized public PoC, or a remote/pre-auth vector. None of those exist here. The AV:L constraint means it cannot function as an initial-access primitive, only as an amplifier for one you already have.
Why not lower?
LOW / IGNORE is wrong because SYSTEM escalation is a genuine outcome, the component is universally deployed, and a public PoC is a near-certainty on a 30-90 day horizon. Once a PoC lands, red teams and ransomware affiliates fold it into standard toolkits within days — the bug will earn its keep in real intrusions, just not as the entry point.
What to do — in priority order.
- Deploy the July 2026 cumulative update on the normal Patch Tuesday cadence — This is a MEDIUM verdict — no noisgate mitigation SLA applies. Fold the update into your standard monthly ring rollout: pilot ring within 7 days, broad workstation deployment within 21 days, servers within 30-45 days. Full remediation within the 365-day noisgate remediation SLA is the ceiling, but standard Patch Tuesday hygiene will beat that comfortably.
- Enforce LSASS as a protected process (PPL) and enable Credential Guard where licensed — Breaks the *post-SYSTEM* half of the chain by preventing credential harvest, which is what makes a local EoP dangerous beyond one host. Deploy as standing hardening — not tied to this CVE.
- Confirm EDR is tuned for suspicious LSASS access and image-load-from-user-writable-path — These telemetry classes catch step 3 of the chain reliably. If your EDR policy is in audit-only mode for these, promote to block on Tier-0 and Tier-1 assets.
- Constrain interactive logon on Tier-0 assets (DCs, PKI, backup, PAM) — Group Policy
Deny log on locallyandDeny log on through Remote Desktop Servicesfor anything below the admin tier removes the DC-role uplift path entirely. Standing control, not CVE-specific.
- Perimeter WAF / IPS rules — the vector is AV:L. No network signature can see this because no network traffic carries it.
- Blocking outbound C2 — the chain occurs entirely on the local host; egress controls don't touch it.
- MFA on RDP / VPN — helpful for reducing the *precondition* foothold, but does not affect the vuln itself once the attacker is executing code as any user.
- Removing local admin rights — this bug's whole point is that a low-privileged user reaches SYSTEM. Least-privilege on user accounts does not stop it.
Crowdsourced verification payload.
Run on each target Windows host as any user (elevated not required for the version check). Example invocation from an admin console: Invoke-Command -ComputerName host01 -FilePath .\Check-CVE-2026-50454.ps1. For fleet checks, wrap in your existing PowerShell remoting or MECM/Intune script deployment.
#requires -Version 5.1
# Check-CVE-2026-50454.ps1
# Detects whether the July 2026 Patch Tuesday cumulative (fix for CVE-2026-50454) is installed.
# Exit codes: 0 = PATCHED, 1 = VULNERABLE, 2 = UNKNOWN
$ErrorActionPreference = 'Stop'
# Minimum patched build numbers per Windows major version (from MSRC July 2026 advisory family).
# Adjust the right-hand side if you have the exact KB build for your SKU.
$fixedBuilds = @{
'10.0.19045' = 6332 # Windows 10 22H2
'10.0.22621' = 5039 # Windows 11 22H2
'10.0.22631' = 4460 # Windows 11 23H2
'10.0.26100' = 4652 # Windows 11 24H2 / Server 2025
'10.0.20348' = 3695 # Server 2022
'10.0.17763' = 7434 # Server 2019
'10.0.14393' = 8321 # Server 2016
}
try {
$os = Get-CimInstance -ClassName Win32_OperatingSystem
$ver = $os.Version # e.g. 10.0.22631
$build = [int]($ver.Split('.')[2])
$rev = (Get-ItemProperty 'HKLM:\SOFTWARE\Microsoft\Windows NT\CurrentVersion' -Name UBR).UBR
$majorMinorBuild = "$($ver.Split('.')[0]).$($ver.Split('.')[1]).$build"
if (-not $fixedBuilds.ContainsKey($majorMinorBuild)) {
Write-Output "UNKNOWN - unrecognized OS build $majorMinorBuild.$rev"
exit 2
}
$required = $fixedBuilds[$majorMinorBuild]
if ($rev -ge $required) {
Write-Output "PATCHED - $majorMinorBuild.$rev >= $majorMinorBuild.$required"
exit 0
} else {
Write-Output "VULNERABLE - $majorMinorBuild.$rev < $majorMinorBuild.$required (CVE-2026-50454)"
exit 1
}
} catch {
Write-Output "UNKNOWN - $($_.Exception.Message)"
exit 2
}
If you remember one thing.
Sources
- Microsoft Security Update Guide — July 2026
- Talos — Microsoft Patch Tuesday July 2026
- BleepingComputer — Microsoft July 2026 Patch Tuesday coverage
- CISA Known Exploited Vulnerabilities Catalog
- FIRST EPSS model
- CWE-23: Relative Path Traversal
- NVD entry (CVE-2026-50454)
- Microsoft Defender — LSASS protection guidance
What defenders are saying.
Crowdsourced verification outputs.
Results submitted by users who ran the verification payload against their environment.