CVE-2025-59207 — Windows Kernel Elevation of Privilege Vulnerability
Executive Summary
Untrusted pointer dereference in Windows Kernel allows an authorized attacker to elevate privileges locally.
Overview
CVSS Vector
CVSS:3.1/AV:L/AC:L/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 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 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 |
|---|---|---|
5066586 |
Security Update | Yes |
5066791 |
Security Update | Yes |
5066793 |
Security Update | Yes |
5066835 |
Security Update | Yes |
5066782 |
Security Update | Yes |
5066780 |
Security Update | Yes |
Patch Diff
Untrusted pointer dereference (CWE-822) in the Windows Projected File System minifilter prjflt.sys PrjfCopyAsPlaceHolder, local EoP. An unprivileged user reaches PrjfCopyAsPlaceHolder via PrjfPortMessage -> PrjfWritePlaceholderInformationHandler, passing a _PRJ_PLACEHOLDER_INFO whose inline SecurityDescriptor (at PlaceholderInfo+SdOffset) is fully attacker-controlled. PRE: PrjfCopyAsPlaceHolder passes that raw user SecurityDescriptor straight to FltCreateFileEx2; because the create runs with PreviousMode == KernelMode, the downstream nt!SeCaptureSecurityDescriptor does NOT range-check the SD's Owner/Group/Sacl/Dacl fields, so they can point to arbitrary kernel addresses that are later dereferenced. Diff of prjflt.sys 10.0.26100.6725 -> .6899 (Oct 14 2025, KB5066835) confirms the fix: gated behind CFR flag Feature_2983238971, PrjfCopyAsPlaceHolder now pre-captures the user SD with SeCaptureSecurityDescriptor((PlaceholderInfo+0x44)+base, 1, 1) using PreviousMode = UserMode (arg 1), which validates the pointer fields and produces a sanitized self-relative kernel copy before FltCreateFileEx2, then frees it with SeReleaseSecurityDescriptor(local_f8, 1, 1). Note: our diff shows Feature_2983238971 (build/arch); PrjfWritePlaceholderInformationHandler and PrjfUpdatePlaceholderIfNeededHandler also gained the gate.
| Function | Address | Change | Note |
|---|---|---|---|
PrjfCopyAsPlaceHolder |
code change |
code (user SecurityDescriptor now captured as UserMode before FltCreateFileEx2, CFR-gated) | Pre: raw user SD (PlaceholderInfo+SdOffset) passed to FltCreateFileEx2 while PreviousMode==KernelMode -> SeCaptureSecurityDescriptor skips Owner/Group/Sacl/Dacl range checks -> arbitrary kernel pointer deref. Post (Feature_2983238971): iVar4 = SeCaptureSecurityDescriptor((ulonglong)*(uint*)(param_1+0x44)+param_2, 1, 1) captures/validates the SD as UserMode; on cleanup SeReleaseSecurityDescriptor(local_f8, 1, 1) frees the captured copy. |
PrjfWritePlaceholderInformationHandler |
code change |
code (CFR-gated caller path) | Caller that routes the user placeholder message to PrjfCopyAsPlaceHolder; gained the Feature_2983238971 gate. |
SeCaptureSecurityDescriptor |
import |
newly called | SeCaptureSecurityDescriptor / SeReleaseSecurityDescriptor are now imported and called by PrjfCopyAsPlaceHolder to capture and release the user SD as UserMode. |
Feature_2983238971 |
gate |
added (CFR gate) | CFR flag gating the SeCaptureSecurityDescriptor(UserMode) capture path; the original raw-SD path still ships when disabled. |
Attack Path
A user-controlled placeholder SecurityDescriptor is passed to file creation under KernelMode, so its pointer fields are dereferenced without range checks
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.
Known Exploits
Acknowledgments
ChenJian with Sea Security Orca Team