CVE-2025-58727 — Windows Connected Devices Platform Service Elevation of Privilege Vulnerability
Executive Summary
Concurrent execution using shared resource with improper synchronization ('race condition') in Windows Connected Devices Platform 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 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 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 |
|---|---|---|
5066791 |
Security Update | Yes |
5066793 |
Security Update | Yes |
5066835 |
Security Update | Yes |
5066780 |
Security Update | Yes |
Patch Diff
Race condition (CWE-362) in the Windows Connected Devices Platform Service cdpsvc.dll, local elevation of privilege to SYSTEM (Important, AV:L, AC:H race, CVSS 7.0). CDPComDevice issues device queries and receives results asynchronously; DeviceCallback::OnAppTargetListReceived is invoked when a device's app-target list query result (CDPComDeviceResult) arrives and resolves app identities (ComAppIdFromCDPAppId) from that shared result. PRE: the callback processed the shared CDP device-query result without adequate synchronization against concurrent query/teardown, so a racing operation could run alongside it, corrupting or using stale/invalid state; because CDPSvc is a local service, winning the race elevates to SYSTEM. Diff of cdpsvc.dll 10.0.26100.6725 (KB5065789, Sept) -> .6899 (KB5066835, Oct 14 2025, 24H2) confirms the fix: gated behind CFR flags Feature_1319939386 / Feature_Servicing_CDPComDeviceQuery, OnAppTargetListReceived (ratio 0.65) is reworked so the result processing is dispatched through a new gated std::function/lambda (lambda_7ffd2521, whose operator() runs the ComAppIdFromCDPAppId processing under Feature_1319939386) instead of the prior inline _Func_impl handler, so the shared CDP query state is handled on a serialized path rather than raced inline. Stated at confirmed-changed level (a single explicit lock primitive is not cleanly isolable; the race-hardening restructure and the Feature_Servicing_CDPComDeviceQuery gate are clear).
| Function | Address | Change | Note |
|---|---|---|---|
CDPComDevice::DeviceCallback::OnAppTargetListReceived |
code change |
code (async result handling routed through a gated serialized dispatch, CFR-gated) | Pre: built an inline std::_Func_impl_no_alloc<lambda_dde3f900...> and processed the CDPComDeviceResult directly. Post (Feature_1319939386 / Feature_Servicing_CDPComDeviceQuery): constructs a new lambda_7ffd2521 wrapped in std::function and dispatches the result through it, so the shared CDP device-query state is handled on a serialized/gated path. |
lambda_7ffd2521::operator() (added) |
code change |
added (gated result-processing closure) | New closure that resolves app identities (ComAppIdFromCDPAppId) from the query result; its operator() runs under Feature_1319939386. One of 7 added helpers supporting the reworked dispatch. |
Feature_1319939386 / Feature_Servicing_CDPComDeviceQuery |
gate |
added (CFR gates) | CFR flags gating the reworked CDP device-query result handling; the original inline path still ships when disabled. |
Attack Path
A race on the CDP device-query result lets a local user elevate to SYSTEM
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.