CVE-2024-38107 — Windows Power Dependency Coordinator Elevation of Privilege Vulnerability
Executive Summary
None
Overview
CVSS Vector
CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H/E:F/RL:O/RC:C
EPSS Score
Affected Products
| Product | KB Article | Severity | Impact | Restart Required |
|---|---|---|---|---|
| Windows 10 for 32-bit Systems | 5041782 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 for x64-based Systems | 5041782 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for 32-bit Systems | 5041773 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1607 for x64-based Systems | 5041773 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for 32-bit Systems | 5041578 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5041578 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for 32-bit Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for ARM64-based Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 22H2 for x64-based Systems | 5041580 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 21H2 for ARM64-based Systems | 5041592 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 21H2 for x64-based Systems | 5041592 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 22H2 for ARM64-based Systems | 5041585 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 22H2 for x64-based Systems | 5041585 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for ARM64-based Systems | 5041585 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 23H2 for x64-based Systems | 5041585 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for ARM64-based Systems | 5041571 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 Version 24H2 for x64-based Systems | 5041571 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 | 5041851 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 (Server Core installation) | 5041851 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 | 5041828 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2012 R2 (Server Core installation) | 5041828 (Monthly Rollup) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 | 5041773 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2016 (Server Core installation) | 5041773 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 | 5041578 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 (Server Core installation) | 5041578 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 | 5041160 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 (Server Core installation) | 5041160 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022, 23H2 Edition (Server Core installation) | 5041573 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5041782 |
Security Update | Yes |
5041773 |
Security Update | Yes |
5041578 |
Security Update | Yes |
5041580 |
Security Update | Yes |
5041592 |
Security Update | Yes |
5041585 |
Security Update | Yes |
5041571 |
Security Update | Yes |
5041851 |
Monthly Rollup | Yes |
5041828 |
Monthly Rollup | Yes |
5041160 |
Security Update | Yes |
5041573 |
Security Update | Yes |
Patch Diff
Use-after-free (CWE-416) in the Windows Power Dependency Coordinator kernel driver pdc.sys ALPC message processing, local EoP to SYSTEM - exploited in the wild (per MSRC 'Exploitation Detected'). pdc.sys services client requests over ALPC; PdcpAlpcProcessMessages -> PdcProcessMessage handle client messages and manage per-client objects (freed via PdcFreeClient). PRE: message processing and client-object teardown were not serialized, so one ALPC message could free a PDC client object (PdcFreeClient) while another concurrent message handler still referenced it - a use-after-free of the client object, usable for local EoP to SYSTEM. Diff of pdc.sys 10.0.26100.1301 -> .1455 (Aug 13 2024, KB5041571) confirms the fix: gated behind CFR flag Feature_760025401, PdcProcessMessage and PdcpAlpcProcessMessages now take a global PDC lock (PdcAcquireLock / PdcReleaseLock, with GetPdcLockThread used to detect the already-owning thread / avoid recursive acquire) around message processing and client freeing, serializing the ALPC handlers so a client object cannot be freed while another handler is using it, closing the use-after-free.
| Function | Address | Change | Note |
|---|---|---|---|
PdcProcessMessage |
code change |
code (message processing + client free under global lock, CFR-gated) | Post (Feature_760025401): PdcAcquireLock() taken around the message handling / PdcFreeClient calls, released after - so client teardown is serialized against concurrent message handlers. |
PdcpAlpcProcessMessages |
code change |
code (ALPC dispatch serialized) | Post: GetPdcLockThread() checked, then PdcAcquireLock()/PdcReleaseLock() around dispatch so processing of concurrent ALPC messages is serialized (reentrancy-aware). |
PdcAcquireLock / PdcReleaseLock / GetPdcLockThread |
new/updated |
added (global PDC lock) | Lock primitives introduced/used to serialize PDC message processing and client-object lifetime. |
Feature_760025401 |
gate |
added (CFR gate) | CFR flag gating the lock-serialized message processing; the original unsynchronized path still ships when disabled. |
Attack Path
Concurrent PDC ALPC messages free a client object while another handler uses it
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