CVE-2026-42836 — Windows Function Discovery Service (fdwsd.dll) Elevation of Privilege Vulnerability
Executive Summary
Concurrent execution using shared resource with improper synchronization ('race condition') in Function Discovery Service (fdwsd.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 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 | 5094042 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 (Server Core installation) | 5094042 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 | 5094041 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 (Server Core installation) | 5094041 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| 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 |
5094042 |
Monthly Rollup | Yes |
5094041 |
Monthly Rollup | Yes |
5094128 |
Security Update | Yes |
5094125 |
Security Update | Yes |
Patch Diff
Race condition (CWE-362) leading to use-after-free (CWE-416) in the Windows Function Discovery WSD provider fdwsd.dll CWSDiscoveryProvider, local EoP to SYSTEM (AC:H race). fdwsd.dll implements the WS-Discovery provider for the Function Discovery service; a CWSDiscoveryProvider object holds shared state (including a client certificate context and discovery members) that WSD discovery callbacks (IsInterestedInDevice / IsInterestedInMex) access on discovery events. PRE: access to that shared provider state was not synchronized, so a discovery callback could use the provider's state (or its certificate context) concurrently with another thread modifying it or with the provider being destroyed - a race that yields a use-after-free of the provider state / certificate. Because the service runs as SYSTEM/LocalService and the provider is driven by network-triggered discovery events, winning the race is a local EoP primitive. Diff of fdwsd.dll 10.0.26100.8521 -> .8655 (Jun 9 2026, KB5094126) confirms the fix: CWSDiscoveryProvider gains a CRITICAL_SECTION member (at object+0x128); the destructor now nulls the shared member (+0x98) under the lock, IsInterestedInDevice/IsInterestedInMex take the critical section around access to the shared state, and GetClientCertificate returns a private duplicate via CertDuplicateCertificateContext under the lock instead of handing out the shared certificate pointer - serializing access and giving callers their own reference so the shared object cannot be freed while in use.
| Function | Address | Change | Note |
|---|---|---|---|
CWSDiscoveryProvider::~CWSDiscoveryProvider |
code change |
code (teardown under critical section) | Post: EnterCriticalSection(this+0x128); nulls the shared member (this+0x98)=0; LeaveCriticalSection - so teardown can't race a concurrent callback. |
CWSDiscoveryProvider::IsInterestedInDevice / IsInterestedInMex |
code change |
code (callback access serialized) | Post: take the critical section (this+0x128) around access to the shared provider state during discovery-event evaluation. |
CWSDiscoveryProvider::GetClientCertificate |
code change |
code (returns a duplicated cert under lock) | Post: under the critical section, returns CertDuplicateCertificateContext(...) so callers get their own reference instead of the shared certificate context. |
CRITICAL_SECTION @ +0x128 |
struct change |
added | New per-provider lock serializing destructor and discovery-callback access to shared state. |
Attack Path
WSD discovery callbacks use a CWSDiscoveryProvider's shared state concurrently with its teardown, causing a UAF
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
AIフィジカルインターフェイス二号機