CVE-2026-45592 — Windows Internet (wininet.dll) Elevation of Privilege Vulnerability
Executive Summary
Integer overflow or wraparound in Windows Internet (wininet.dll) allows an authorized attacker to elevate privileges locally.
Overview
CVSS Vector
CVSS:3.1/AV:L/AC:L/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 10 Version 1607 for 32-bit Systems | 5094122 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5094122 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5094123 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5094123 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5094127 (Security Update) |
Important | Elevation of Privilege | Yes |
| 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 2012 R2 5094041 (Monthly Rollup) 5094006 (IE Cumulative) Important Elevation of Privilege 5087471 5082806 Base: 7.8 Temporal: 6.8 Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 6.3.9600.23228 1.000 Yes None Windows Server 2012 R2 (Server Core installation) 5094041 (Monthly Rollup) 5094006 (IE Cumulative) Important Elevation of Privilege 5087471 5082806 Base: 7.8 Temporal: 6.8 Vector: CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H/E:U/RL:O/RC:C 6.3.9600.23228 1.000 Yes None Windows Server 2016 | 5094122 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 (Server Core installation) | 5094122 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 | 5094123 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 (Server Core installation) | 5094123 (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 |
|---|---|---|
5094122 |
Security Update | Yes |
5094123 |
Security Update | Yes |
5094127 |
Security Update | Yes |
5093998 |
Security Update | Yes |
5094126 |
Security Update | Yes |
5095051 |
Security Update | Yes |
5094128 |
Security Update | Yes |
5094125 |
Security Update | Yes |
Patch Diff
Integer overflow (CWE-190) leading to a use-after-free (CWE-416) in the Windows WinINet wininet.dll global cache-server reference counting, local EoP. WinINet's global cache server (CCacheServer) is reference-counted via process-global counters g_ulStrongReferences / g_ulWeakReferences; CCacheServer::StrongReferenceGlobalCacheServer / WeakReferenceGlobalCacheServer increment them and Strong/WeakReleaseGlobalCacheServer decrement, freeing the CCacheServer when the strong count reaches 0. PRE: the counters were 32-bit and incremented without an overflow check (g_ulStrongReferences = g_ulStrongReferences + 1), so a caller taking a very large number of references could wrap the 32-bit counter back to 0; a subsequent Release then observes count == 0 and frees the still-referenced CCacheServer - a reference-count overflow yielding a use-after-free of the cache server. Diff of wininet.dll 11.00.26100.8521 -> .8655 (Jun 9 2026, KB5094126) confirms the fix: gated behind CFR flag Feature_3431463225, the reference counters are widened to 64-bit (g_ullStrongReferences / g_ullWeakReferences) and the increment is saturated - if (!feature || count != 0xffffffffffffffff) count = count + 1 - so the count cannot wrap to 0, and access is serialized with AutoCritSec::Lock/Unlock; the release paths use the widened counters, closing the overflow-to-UAF.
| Function | Address | Change | Note |
|---|---|---|---|
CCacheServer::StrongReferenceGlobalCacheServer |
code change |
code (64-bit + saturating refcount under lock, CFR-gated) | Pre: g_ulStrongReferences = g_ulStrongReferences + 1 (32-bit, unchecked). Post (Feature_3431463225): AutoCritSec::Lock; if (!feature || g_ullStrongReferences != 0xffffffffffffffff) g_ullStrongReferences++ (64-bit, saturating); AutoCritSec::Unlock. |
CCacheServer::WeakReferenceGlobalCacheServer |
code change |
code (64-bit + saturating weak refcount under lock, CFR-gated) | Same widening + saturation guard for g_ullWeakReferences under AutoCritSec lock. |
CCacheServer::StrongReleaseGlobalCacheServer / WeakReleaseGlobalCacheServer |
code change |
code (use widened 64-bit counters) | Release paths decrement the widened g_ullStrongReferences / g_ullWeakReferences (frees CCacheServer when strong count reaches 0). |
CCacheServer::CCacheServer / Lock / Unlock |
code change |
code (locking / condition-variable init) | Ctor and Lock/Unlock updated to initialize/use the critical section + condition variable guarding the counters. |
Feature_3431463225 |
gate |
added (CFR gate) | CFR flag gating the 64-bit saturating reference counting; the original 32-bit unchecked increment still ships when disabled. |
Attack Path
Overflowing the WinINet cache-server reference count wraps it to 0, freeing the still-referenced server
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