CVE-2026-45597 — Windows UI Automation Manager (uiamanager.dll) Elevation of Privilege Vulnerability
Executive Summary
Concurrent execution using shared resource with improper synchronization ('race condition') in UI Automation Manager (uiamanager.dll) allows an authorized attacker to elevate privileges locally.
Overview
CVSS Vector
CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C
EPSS Score
Affected Products
| Product | KB Article | Severity | Impact | Restart Required |
|---|---|---|---|---|
| Windows 11 Version 23H2 for ARM64-based Systems | 5093998 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5093998 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems | 5094126 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for x64-based Systems | 5094126 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 25H2 for ARM64-based Systems | 5094126 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 25H2 for x64-based Systems | 5094126 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 26H1 for ARM64-based Systems | 5095051 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5095051 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 | 5094128 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 (Server Core installation) | 5094128 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2025 | 5094125 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2025 (Server Core installation) | 5094125 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5093998 |
Security Update | Yes |
5094126 |
Security Update | Yes |
5095051 |
Security Update | Yes |
5094128 |
Security Update | Yes |
5094125 |
Security Update | Yes |
Patch Diff
Race condition (CWE-362) in the Windows UI Automation Manager uiamanager.dll shared automation-connection / VAIL-container map, local EoP (low integrity -> medium integrity). uiamanager.dll brokers UI Automation connections across processes / app-container (VAIL) boundaries; it tracks automation endpoints and container named pipes in a shared map (ThreadSafeMap<GUID, wil::com_ptr<IWeakReference>>). Operations that add (UiaManagerImpl::CreateAutomationConnection), look up (GetEndpointProcessInfo) and remove (RemoveNamedPipeFromVailContainer / RemoveNamedPipe) entries ran concurrently. PRE: access to that shared map was not synchronized, so concurrent add/remove/lookup could race - corrupting the map or using a stale/invalid entry - a race exploitable by a low-integrity (e.g. sandboxed) process to elevate to medium integrity (AC:H). Diff of uiamanager.dll 10.0.26100.8521 -> .8655 (Jun 9 2026, KB5094126) confirms the fix: gated behind CFR flag Feature_2358244664, access to the shared map is serialized with a mutex - ThreadSafeMap operations now take std::_Mutex_base::lock / _Mtx_unlock, RemoveNamedPipeFromVailContainer acquires the mutex around the removal, and CreateAutomationConnection uses a critical section - so concurrent map operations no longer race.
| Function | Address | Change | Note |
|---|---|---|---|
UiaManagerImpl::RemoveNamedPipeFromVailContainer |
code change |
code (map removal under mutex, CFR-gated) | Post (Feature_2358244664): std::_Mutex_base::lock(map_mutex) ... _Mtx_unlock around removing the named pipe / container entry from the shared map. |
ThreadSafeMap<_GUID, wil::com_ptr<IWeakReference>> |
code change |
code (map access serialized) | Map accessors now take std::_Mutex_base::lock / _Mtx_unlock so the shared automation-connection/container map is genuinely thread-safe. |
UiaManagerImpl::CreateAutomationConnection |
code change |
code (connection creation under critical section) | Uses a CRITICAL_SECTION around the connection-map insertion so add races remove/lookup safely. |
UiaManagerImpl::GetEndpointProcessInfo / RemoveNamedPipe / PublishServices / ShutdownServices |
code change |
code (endpoint/service map paths updated) | Related endpoint lookup / service publish-shutdown paths updated to the synchronized map access under the same gate. |
Feature_2358244664 |
gate |
added (CFR gate) | CFR flag gating the mutex/critical-section serialization of the shared map; the original unsynchronized path still ships when disabled. |
Attack Path
Concurrent add/remove/lookup on the UI Automation connection map races, corrupting shared state
Derived from the patch delta: the checks added by the vendor identify which fields crossed a trust boundary unvalidated. Reachability and privilege are taken from the call chain in the RCA report.
Exploits & PoC
Detection Rules
Acknowledgments
Anonymous