CVE-2026-35418 — Windows Cloud Files Mini Filter Driver Elevation of Privilege Vulnerability
Executive Summary
Use after free in Windows Cloud Files Mini Filter Driver 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.8 Temporal: 6.8 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 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.8 Temporal: 6.8 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 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.8 Temporal: 6.8 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 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.8 Temporal: 6.8 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 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.8 Temporal: 6.8 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 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.8 Temporal: 6.8 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 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
Use-after-free / TOCTOU race (CWE-416/CWE-367) in the Windows Cloud Files mini filter driver cldflt.sys, local EoP. The hydration completion callback HsmiRecallPostProcessHydration and the handle-cleanup path HsmFltPreCLEANUP (via HsmpRecallTerminateProgressiveHydration) share the active-hydration-context pointer slot at StreamHandleContext+0x38. Completion inserts an entry only when the slot is empty via InterlockedCompareExchange64(slot, Entry, 0). PRE: the cleanup path used a destructive InterlockedExchange64(slot, 0) that unconditionally zeroed the slot, then began releasing the file handle. Immediately after the slot is zeroed, a completion callback on another CPU can CAS-insert a fresh hydration entry (slot==0 so the CAS succeeds) while cleanup has already begun freeing the handle -> the hydration path operates on a freed/invalid resource (UAF). Triggered by hydrating a cloud placeholder while concurrently closing the same handle. IN-HOUSE ghidriff of cldflt.sys 10.0.26100.8328 -> .8457 (May 12 2026, KB5089549) confirms the fix: gated behind CFR flag Feature_955245880, the cleanup path replaces InterlockedExchange64(slot,0) with a CAS-loop bit-marking protocol - InterlockedCompareExchange64(slot, old|1, old) sets bit 0 of the pointer (kernel pool >=8-byte aligned so ptr|1 is a non-zero sentinel), so the completion CAS(slot,Entry,0) can no longer succeed; the CAS loop's bit-0 test handles concurrent cleanups (skip via LABEL_77). The old 0x800 synchronization flag is now set only on the feature-disabled path. Note: our x64 24H2 diff shows Feature_955245880, differing from the circulated screenshots' Feature_1223681336 (build/arch difference); the ptr|1 marking mechanism is identical. We ship what our diff shows.
| Function | Address | Change | Note |
|---|---|---|---|
HsmpRecallTerminateProgressiveHydration |
code change |
code (destructive exchange -> CAS bit-0 marking, CFR-gated) | Cleanup/terminate path that operates the StreamHandleContext+0x38 slot. Pre: LOCK; old=slot; slot=0; UNLOCK (InterlockedExchange64(slot,0)). Post (Feature_955245880 enabled): CAS loop - if (old & 1) return (bit 0 already marked); if (slot==old) slot = old|1 (InterlockedCompareExchange64(slot, old|1, old)). 0x800 flag set only when feature disabled. |
HsmFltPreCLEANUP |
code change |
code (cleanup path; drops 0x800 slot flag) | Handle-cleanup path that drives the terminate-hydration marking; pre-patch set *(entry+0x30) |= 0x800 as the synchronization signal (removed/suppressed under the bit-0 protocol). |
HsmiRecallPostProcessHydration |
code change |
code (completion CAS insert) | Completion callback inserting the hydration entry via InterlockedCompareExchange64(slot, Entry, 0); after the fix marks the slot ptr|1 this CAS can no longer succeed, closing the race. |
Feature_955245880 |
new flag |
added (CFR gate) | New CFR flag gating the bit-0 marking protocol; the original destructive InterlockedExchange64(slot,0) path still ships in .8457. |
Attack Path
Cleanup zeroes the hydration slot, so a concurrent completion CAS re-inserts an entry against a handle being freed
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
Anonymous