CVE-2026-34340 — Windows Projected File System Elevation of Privilege Vulnerability
Executive Summary
Use after free in Windows Projected File System 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 1809 for 32-bit Systems | 5087538 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 1809 for x64-based Systems | 5087538 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for 32-bit Systems | 5087544 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for ARM64-based Systems | 5087544 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 10 Version 21H2 for x64-based Systems | 5087544 (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 | 5087420 (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 5089549 (Security Update) 5089466 (Security Hotpatch Update) Important Elevation of Privilege 5082063 Base: 7.0 Temporal: 6.1 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 10.0.26100.8457 10.0.26100.8390 Yes None Windows 11 Version 24H2 for x64-based Systems 5089549 (Security Update) 5089466 (Security Hotpatch Update) Important Elevation of Privilege 5082063 Base: 7.0 Temporal: 6.1 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 10.0.26100.8457 10.0.26100.8390 Yes None Windows 11 Version 25H2 for ARM64-based Systems 5089549 (Security Update) 5089466 (Security Hotpatch Update) Important Elevation of Privilege 5083769 Base: 7.0 Temporal: 6.1 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 10.0.26200.8457 10.0.26200.8390 Yes None Windows 11 Version 25H2 for x64-based Systems 5089549 (Security Update) 5089466 (Security Hotpatch Update) Important Elevation of Privilege 5083769 Base: 7.0 Temporal: 6.1 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 10.0.26200.8457 10.0.26200.8390 Yes None Windows 11 Version 26H1 for ARM64-based Systems | 5089548 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows 11 version 26H1 for x64-based Systems | 5089548 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 | 5087538 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2019 (Server Core installation) | 5087538 (Security Update) |
Important | Elevation of Privilege | Yes |
| Windows Server 2022 5087545 (Security Update) 5087424 (Security Hotpatch Update) Important Elevation of Privilege 5082142 Base: 7.0 Temporal: 6.1 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 10.0.20348.5139 10.0.20348.5074 Yes None Windows Server 2022 (Server Core installation) 5087545 (Security Update) 5087424 (Security Hotpatch Update) Important Elevation of Privilege 5082142 Base: 7.0 Temporal: 6.1 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 10.0.20348.5139 10.0.20348.5074 Yes None Windows Server 2022, 23H2 Edition (Server Core installation) | 5087541 (Security Update) |
Important | Elevation of Privilege | Yes |
Patches
| Article | Type | Restart |
|---|---|---|
5087538 |
Security Update | Yes |
5087544 |
Security Update | Yes |
5094127 |
Security Update | Yes |
5087420 |
Security Update | Yes |
5093998 |
Security Update | Yes |
5089548 |
Security Update | Yes |
5087541 |
Security Update | Yes |
Patch Diff
TOCTOU use-after-free (CWE-416) in the Windows Projected File System filter prjflt.sys, local EoP. PrjfRevertInMemoryTombstonesForDirectory (called from the IRP_MJ_CLEANUP post-callback PrjfPostCleanup) traverses the in-memory tombstone RTL_DYNAMIC_HASH_TABLE at context+240, guarded by an ERESOURCE at context+136. For each entry it selects the entry under the lock, then FltReleaseResource and KeWaitForSingleObject with NO timeout (indefinite). PRE: only after the wait does it read the tombstone attribute byte directly from the shared entry (*(char*)(entry+0x18), LOBYTE(v14[1].Linkage.Flink)) and pass it as arg3 to PrjfCreateTombstone. In the release->wait window another thread can take the ERESOURCE and modify the entry, so PrjfCreateTombstone gets a corrupted/attacker-influenced attribute flag -> wrong tombstone type / ProjFS state corruption; the no-timeout wait widens the window to seconds. IN-HOUSE ghidriff of prjflt.sys 10.0.26100.8328 -> .8457 (May 12 2026, KB5089549) confirms the fix: gated behind CFR flag Feature_1526925624, the function captures the attribute byte into stack local local_e7 while holding the lock (capture-before-release) and uses that snapshot after the wait instead of re-reading the shared entry. Note: our x64 24H2 diff shows Feature_1526925624, differing from the circulated screenshots' Feature_1795361080 (build/arch difference); the capture-before-release mechanism is identical. We ship what our diff shows.
| Function | Address | Change | Note |
|---|---|---|---|
PrjfRevertInMemoryTombstonesForDirectory |
code change |
code (capture-before-release snapshot of tombstone attribute, CFR-gated) | Pre: after FltReleaseResource + KeWaitForSingleObject(no timeout), PrjfCreateTombstone(param_1,&name,*(char*)(entry+0x18)) re-reads the shared hash-table entry (TOCTOU). Post (Feature_1526925624 enabled): local_e7 = *(char*)(entry+0x18) captured under the lock; after release+wait cVar4 = local_e7 (snapshot) is passed to PrjfCreateTombstone. Feature-disabled path keeps the old re-read. ERESOURCE at ctx+0x88 (136), hash table at ctx+0xf0 (240). |
PrjfCreateTombstone |
sink (unchanged) |
consumer of the attribute | Receives the tombstone attribute byte as its 3rd argument; pre-patch that value was read from shared state after the lock was released, post-patch it is the lock-protected snapshot. |
Feature_1526925624 |
new flag |
added (CFR gate) | New CFR flag gating the capture-before-release snapshot; with it disabled the original post-wait re-read still ships in .8457. |
Attack Path
The cleanup callback reads a tombstone attribute after releasing the lock, so a racing thread can swap the value used to create the tombstone
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