CVE-2026-54999 — Windows TCP/IP Remote Code Execution Vulnerability
Executive Summary
Concurrent execution using shared resource with improper synchronization ('race condition') in Windows TCP/IP allows an unauthorized attacker to execute code over an adjacent network.
Overview
CVSS Vector
CVSS:3.1/AV:A/AC:L/PR:N/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 | 5099535 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5099535 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5099538 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5099538 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5099539 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems | 5101650 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 24H2 for x64-based Systems | 5101650 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 25H2 for ARM64-based Systems | 5101650 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 25H2 for x64-based Systems | 5101650 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 Version 26H1 for ARM64-based Systems | 5101649 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5101649 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2012 | 5099445 (Monthly Rollup) |
Critical | Remote Code Execution | Yes |
| Windows Server 2012 (Server Core installation) | 5099445 (Monthly Rollup) |
Critical | Remote Code Execution | Yes |
| Windows Server 2012 R2 | 5099444 (Monthly Rollup) |
Critical | Remote Code Execution | Yes |
| Windows Server 2012 R2 (Server Core installation) | 5099444 (Monthly Rollup) |
Critical | Remote Code Execution | Yes |
| Windows Server 2016 | 5099535 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2016 (Server Core installation) | 5099535 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2019 | 5099538 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2019 (Server Core installation) | 5099538 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2022 | 5099540 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2025 | 5099536 (Security Update) |
Critical | Remote Code Execution | Yes |
| Windows Server 2025 (Server Core installation) | 5099536 (Security Update) |
Critical | Remote Code Execution | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5099535 |
Security Update | Yes |
5099538 |
Security Update | Yes |
5099539 |
Security Update | Yes |
5101650 |
Security Update | Yes |
5101649 |
Security Update | Yes |
5099445 |
Monthly Rollup | Yes |
5099444 |
Monthly Rollup | Yes |
5099540 |
Security Update | Yes |
5099536 |
Security Update | Yes |
Patch Diff
Race condition (CWE-362) in the Windows TCP/IP driver tcpip.sys wake-port-entry teardown, unauthenticated remote code execution over an adjacent network (Critical, AV:A, CVSS 8.8). tcpip.sys maintains a list of wake port entries (network-wake / low-power port registration); InetWakeAcquirePortAf acquires/creates an entry under a spin lock and entries are removed/freed during teardown. PRE: the teardown performed its list-consistency check and then unlinked and freed the entry (ExFreePoolWithTag) OUTSIDE the protecting lock, so two paths could operate on the same entry concurrently - freeing it while still referenced or freeing it twice. Because the wake port-registration path is reachable via attacker-supplied adjacent-network traffic without authentication, the freed-object reuse is an RCE primitive (Critical 8.8). Diff of tcpip.sys 10.0.28000.2113 (KB5089548) -> .2525 (KB5101649, Jul 14 2026, 26H1) confirms the fix: gated behind CFR flag Feature_2930222395, InetWakeAcquirePortAf now maintains an in-flight word at entry +0x14 under the lock and moves the removal into the new idempotent helper InetWakeRemovePortEntryIfPresent (no PRE counterpart); the unlink becomes idempotent and the free is conditional on the in-flight state so only one side performs the final release. Note: the July tcpip.sys update is very large (55 code changes / 171 modified); most is unrelated churn (e.g. a Feature_TCPIP_Stack_Var_To_Heap_* pool refactor around UdpConnectRedirect) - the isolable fix for this CVE is the wake-port-entry teardown under Feature_2930222395. Stated at confirmed-changed level.
| Function | Address | Change | Note |
|---|---|---|---|
InetWakeAcquirePortAf |
code change |
code (wake-port-entry teardown made race-safe, CFR-gated) | Pre: list-consistency check then unlink + ExFreePoolWithTag outside the lock (double-free / free-while-in-use). Post (Feature_2930222395): maintains an in-flight word at entry +0x14 under the lock and calls the new idempotent InetWakeRemovePortEntryIfPresent; free conditional on in-flight state so only one side does the final release. |
InetWakeRemovePortEntryIfPresent (added) |
code change |
added (idempotent port-entry removal) | New helper with no pre-patch counterpart; makes the wake-port-entry unlink idempotent so a concurrent teardown cannot double-free the entry. |
Feature_2930222395 |
gate |
added (CFR gate) | CFR flag gating the race-safe wake-port-entry teardown; the original unsynchronized free ships when disabled. (Distinct from the Feature_TCPIP_Stack_Var_To_Heap_* pool refactor elsewhere in the same update, which is not this CVE.) |
Attack Path
A race between wake-port-entry teardown and use frees the entry while still referenced
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
Owen McCullough with MSRC V&M