Important CVSS 7.8 EPSS 0.00396 🔬 Patch diffed 2025-10 archive

Executive Summary

Untrusted pointer dereference in Windows Kernel allows an authorized attacker to elevate privileges locally.

Overview

7.8
CVSS HIGH
Important
MS Severity
Not Exploited
MS Exploit Status
Less Likely
MS Exploit Likelihood
Category Elevation of Privilege
Released Oct 14 2025
Last Updated Oct 14 2025
Publicly Disclosed No
CISA KEV Not Listed
Known Exploits None Known
EPSS Score 0.00396 — 0.32694 percentile
NVD CVSS 7.8 HIGH — matches MSRC

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
ATTACK VECTOR
Local
ATTACK COMPLEXITY
Low
PRIVILEGES REQUIRED
Low
USER INTERACTION
None
SCOPE
Unchanged
CONFIDENTIALITY
High
INTEGRITY
High
AVAILABILITY
High
EXPLOIT CODE MATURITY
Unproven
REMEDIATION LEVEL
Official Fix
REPORT CONFIDENCE
Confirmed
Temporal Score: 6.8

EPSS Score

0.00396
probability of exploitation in the next 30 days
0.32694 percentile - updated 2026-08-14
View on FIRST.org

Affected Products

23 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

6 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

ghidriff · prjflt.sys (KB5066835)

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.

Pre-patch version 10.0.26100.6725 Download
Post-patch version 10.0.26100.6899 Download
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.
View full diff report View RCA report

Attack Path

A user-controlled placeholder SecurityDescriptor is passed to file creation under KernelMode, so its pointer fields are dereferenced without range checks

Attack path for CVE-2025-59207 A user-controlled placeholder SecurityDescriptor is passed to file creation under KernelMode, so its pointer fields are dereferenced without range checks 01 — ENTRY Local user sends a placeholder message to the ProjFS port prjflt.sys PrjfPortMessage -> PrjfWritePlaceholderInformationHandler -> PrjfCopyAsPlaceHolder, reachable unprivileged. AV:L/PR:L/AC:L. 02 — CONTROLLED INPUT Supplies a _PRJ_PLACEHOLDER_INFO with an attacker-controlled inline SecurityDescriptor SecurityDescriptor = PlaceholderInfo + SdOffset; Owner/Group/Sacl/Dacl fields set to arbitrary kernel addresses. 03 — MISSING CHECK Raw user SD passed to FltCreateFileEx2 while PreviousMode == KernelMode (CWE-822) nt!SeCaptureSecurityDescriptor skips address-scope checks on Owner/Group/Sacl/Dacl when PreviousMode is KernelMode, so they are trusted as-is. 04 — PATH Kernel dereferences the attacker-chosen SD pointers during object create ObpCaptureObjectCreateInformation -> IopCreateFile -> IoCreateFileEx use the unvalidated SD fields. 05 — PRIMITIVE Untrusted kernel pointer dereference -> EoP The Oct 2025 fix (Feature_2983238971) pre-captures the SD via SeCaptureSecurityDescriptor with PreviousMode=UserMode, validating the pointers before 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.

Known Exploits

Acknowledgments

ChenJian with Sea Security Orca Team