CVE-2025-59196 — Windows Simple Search and Discovery Protocol (SSDP) Service Elevation of Privilege Vulnerability
Executive Summary
Concurrent execution using shared resource with improper synchronization ('race condition') in Windows SSDP Service 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 10 for 32-bit Systems | 5066837 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 for x64-based Systems | 5066837 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for 32-bit Systems | 5066836 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5066836 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5066586 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5066586 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5066791 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5066791 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5066791 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5066791 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5066791 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5066791 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 22H2 for ARM64-based Systems | 5066793 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 22H2 for x64-based Systems | 5066793 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5066793 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5066793 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems | 5066835 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for x64-based Systems | 5066835 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 25H2 for ARM64-based Systems | 5066835 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 25H2 for x64-based Systems | 5066835 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2008 for 32-bit Systems Service Pack 2 5066874 (Monthly Rollup) 5066877 (Security Only) Important Elevation of Privilege 5065508 Base: 7.0 Temporal: 6.1 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 6.0.6003.23571 Yes None Windows Server 2008 for 32-bit Systems Service Pack 2 (Server Core installation) 5066874 (Monthly Rollup) 5066877 (Security Only) Important Elevation of Privilege 5065508 Base: 7.0 Temporal: 6.1 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 6.0.6003.23571 Yes None Windows Server 2008 for x64-based Systems Service Pack 2 5066874 (Monthly Rollup) 5066877 (Security Only) Important Elevation of Privilege 5065508 Base: 7.0 Temporal: 6.1 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 6.0.6003.23571 Yes None Windows Server 2008 for x64-based Systems Service Pack 2 (Server Core installation) 5066874 (Monthly Rollup) 5066877 (Security Only) Important Elevation of Privilege 5065508 Base: 7.0 Temporal: 6.1 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 6.0.6003.23571 Yes None Windows Server 2008 R2 for x64-based Systems Service Pack 1 5066872 (Monthly Rollup) 5066876 (Security Only) Important Elevation of Privilege 5065468 Base: 7.0 Temporal: 6.1 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 6.1.7601.27974 Yes None Windows Server 2008 R2 for x64-based Systems Service Pack 1 (Server Core installation) 5066872 (Monthly Rollup) 5066876 (Security Only) Important Elevation of Privilege 5065468 Base: 7.0 Temporal: 6.1 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 6.1.7601.27974 Yes None Windows Server 2012 | 5066875 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 (Server Core installation) | 5066875 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 | 5066873 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 (Server Core installation) | 5066873 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 | 5066836 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 (Server Core installation) | 5066836 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 | 5066586 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 (Server Core installation) | 5066586 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 | 5066782 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 (Server Core installation) | 5066782 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022, 23H2 Edition (Server Core installation) | 5066780 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2025 | 5066835 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2025 (Server Core installation) | 5066835 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5066837 |
Security Update | Yes |
5066836 |
Security Update | Yes |
5066586 |
Security Update | Yes |
5066791 |
Security Update | Yes |
5066793 |
Security Update | Yes |
5066835 |
Security Update | Yes |
5066875 |
Monthly Rollup | Yes |
5066873 |
Monthly Rollup | Yes |
5066782 |
Security Update | Yes |
5066780 |
Security Update | Yes |
Patch Diff
Race condition (CWE-362) leading to use-after-free (CWE-416) in the Windows SSDP Discovery Service ssdpsrv.dll, local elevation of privilege to SYSTEM (Important, AV:L, AC:H race, CVSS 7.0). CSsdpNotifyRequestManager tracks per-client notification semaphores in a list; _WakeupGetNotificationRpc signals a client's semaphore (ReleaseSemaphore) when a notification is ready, and semaphores are removed on teardown via HrRemoveNotifySemaphoreFromList (reached through _RemoveSyncHandle). PRE: these paths were not adequately synchronized, so _WakeupGetNotificationRpc could signal a notify semaphore while another thread removed and freed that same semaphore from the list - a race yielding a use-after-free. Because the SSDP service runs at higher privilege than the caller, winning the race elevates a local attacker to SYSTEM. Diff of ssdpsrv.dll 10.0.26100.6725 (KB5065789, Sept) -> .6899 (KB5066835, Oct 14 2025, 24H2) confirms the fix: gated behind CFR flag Feature_3942159674, the manager consolidates semaphore handling into a single synchronized method - HrRemoveNotifySemaphoreFromList is reworked into HrOperateNotifySemaphoreFromList(sem, _Semaphore_OPERATION) that performs the semaphore release/remove atomically under the manager's list synchronization; _WakeupGetNotificationRpc and _RemoveSyncHandle route through it instead of releasing/removing independently, so signal and free can no longer race on the same notify semaphore.
| Function | Address | Change | Note |
|---|---|---|---|
CSsdpNotifyRequestManager::HrRemoveNotifySemaphoreFromList -> HrOperateNotifySemaphoreFromList |
code change |
code (consolidated into a synchronized semaphore-operation method, CFR-gated) | Reworked from HrRemoveNotifySemaphoreFromList(void*) to HrOperateNotifySemaphoreFromList(void*, _Semaphore_OPERATION); performs the semaphore release/remove atomically under the manager's list synchronization (Feature_3942159674). |
_WakeupGetNotificationRpc |
code change |
code (routes semaphore signal through the synchronized method) | Pre: called ReleaseSemaphore(sem, 1, ...) directly while the semaphore could be removed/freed on another path. Post (Feature_3942159674): calls HrOperateNotifySemaphoreFromList so the signal is serialized with list membership. |
_RemoveSyncHandle |
code change |
code (routes removal through the synchronized method) | Now calls HrOperateNotifySemaphoreFromList instead of HrRemoveNotifySemaphoreFromList directly, serializing removal with the wakeup/signal path. |
Feature_3942159674 |
gate |
added (CFR gate) | CFR flag gating the consolidated synchronized notify-semaphore operation; the original independent release/remove paths still ship when disabled. |
Attack Path
A race between SSDP notification wakeup and notify-semaphore removal frees a semaphore still in use
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.